Feishu MCP

Read, create and edit Feishu/Lark docs, folders, whiteboards and tasks from an MCP client

By cso1z (individual) TypeScript Local · stdio ProductivityFiles and storage

59 popularity score ★ 746 ↓ 313/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs FEISHU_APP_ID, FEISHU_APP_SECRET. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add feishu -e FEISHU_APP_ID=<FEISHU_APP_ID> -e FEISHU_APP_SECRET=<FEISHU_APP_SECRET> -- npx -y feishu-mcp@latest --stdio
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "feishu": {
      "command": "npx",
      "args": [
        "-y",
        "feishu-mcp@latest",
        "--stdio"
      ],
      "env": {
        "FEISHU_APP_ID": "<FEISHU_APP_ID>",
        "FEISHU_APP_SECRET": "<FEISHU_APP_SECRET>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "feishu": {
      "command": "npx",
      "args": [
        "-y",
        "feishu-mcp@latest",
        "--stdio"
      ],
      "env": {
        "FEISHU_APP_ID": "<FEISHU_APP_ID>",
        "FEISHU_APP_SECRET": "<FEISHU_APP_SECRET>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "feishu": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "feishu-mcp@latest",
        "--stdio"
      ],
      "env": {
        "FEISHU_APP_ID": "<FEISHU_APP_ID>",
        "FEISHU_APP_SECRET": "<FEISHU_APP_SECRET>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.feishu]
command = "npx"
args = ["-y", "feishu-mcp@latest", "--stdio"]

[mcp_servers.feishu.env]
FEISHU_APP_ID = "<FEISHU_APP_ID>"
FEISHU_APP_SECRET = "<FEISHU_APP_SECRET>"
Gemini CLITerminal
gemini mcp add --scope user -e FEISHU_APP_ID=<FEISHU_APP_ID> -e FEISHU_APP_SECRET=<FEISHU_APP_SECRET> feishu npx -- -y feishu-mcp@latest --stdio

Settings 12

FEISHU_APP_ID Required: App ID of your self-built Feishu/Lark app.
FEISHU_APP_SECRET Required: App Secret of that app.
FEISHU_AUTH_TYPE Optional: tenant (default, acts as the app) or user (OAuth, acts as you; needed for tasks and users).
FEISHU_ENABLED_MODULES Optional: Comma list of document, task, calendar, member or all; default document.
FEISHU_USER_KEY Optional: Identifier for the user's token cache in stdio/CLI mode; default stdio.
FEISHU_BASE_URL Optional: API base; set https://open.larksuite.com/open-apis for Lark.
FEISHU_AUTH_BASE_URL Optional: Sign-in domain; set https://accounts.larksuite.com for Lark.
PORT Optional: Port for the HTTP server or OAuth callback; default 3333.
FEISHU_SCOPE_VALIDATION Optional: Set false to skip the permission check at start; default true.
FEISHU_ENCRYPTION_KEY Optional: Encrypts tokens stored in the cache.
MCP_BEARER_TOKEN Optional: Requires a Bearer token on the HTTP/SSE endpoints.
FEISHU_PUBLIC_BASE_URL Optional: Public base URL for the OAuth callback when clients connect over an internal address.

What it does

Feishu MCP is a community server for Feishu (and its international edition, Lark) that works on cloud documents through a self-built Feishu app. It can list a Drive folder, read a document's metadata and block tree, search documents, create documents and folders, insert blocks (text, headings, lists, code, Mermaid, images, tables, whiteboards), rewrite or delete blocks, download images and read or fill whiteboards with PlantUML or Mermaid code. With user sign-in it can also list, create, update and delete Feishu tasks and look up users.

The tools are split into modules chosen with FEISHU_ENABLED_MODULES. Only document is on by default, which gives 15 tools; task and member add five more and load only when FEISHU_AUTH_TYPE is user. In tenant mode the server logs a warning and skips them (config.ts). The calendar module accepts the name but registers no tools in 0.3.2.

The published 0.3.2 has 20 tools, and the README table is behind the code. It lists update_feishu_block_text, but the code registers batch_update_feishu_block_text. It also leaves out get_feishu_root_folder_info and fill_whiteboard_with_plantuml (blockTools.ts, folderTools.ts). The same npm package also installs a feishu-tool command that calls these tools straight from a shell.

What it needs

RuntimeNode.js 20+

Node.js 20.17 or newer (the engines range of 0.3.2; unreleased main moves to Node 24). You need a self-built Feishu or Lark app with its App ID and App Secret, the document permissions it needs, and the target documents shared with the app. For user mode you also need the app's OAuth redirect set up and a browser sign-in. Lark users must set FEISHU_BASE_URL and FEISHU_AUTH_BASE_URL. Port 3333 (PORT) must be free, even in stdio mode.

Limits

Without FEISHU_APP_ID and FEISHU_APP_SECRET the server exits at start. Task and user tools need user auth; in tenant mode they are skipped. The README says tenant mode cannot search wiki documents and has weaker file access. Calendar has no tools yet. On a remote server, images can be uploaded only from http/https links, not local paths. A Bearer token (MCP_BEARER_TOKEN) protects only the HTTP endpoints, and the README notes most clients cannot send custom headers. Switching userKey per request works only in Streamable HTTP mode.

Who it suits

It suits people whose team keeps documents and to-dos in Feishu or Lark and who want an assistant to draft, restructure or read those documents, or to manage their own tasks. It reads and writes, so a test folder is a sensible start. Because it needs your own Feishu app, an admin who can create apps and grant scopes has to be involved. Use user mode for personal access and wiki search. Pick something else if you need Feishu chat messages or calendars: this server has no tools for them in 0.3.2. It is a community project, not one published by Feishu.

Tools 20

create_feishu_document
Create a new document, optionally in a given folder or wiki node
get_feishu_document_info
Get a document's or wiki node's metadata and resolve wiki links to document IDs
get_feishu_document_blocks
Return the block tree of a document
search_feishu_documents
Search documents and wiki pages by keyword
get_feishu_root_folder_info
Get the root Drive folder and wiki space details
get_feishu_folder_files
List the files in a Drive folder
create_feishu_folder
Create a folder in Drive
batch_create_feishu_blocks
Insert text, heading, list, code, image, Mermaid or whiteboard blocks at a position
batch_update_feishu_block_text
Rewrite the text and styling of several blocks
delete_feishu_document_blocks
Delete a consecutive range of blocks
get_feishu_image_resource
Download an image from a document by its media ID
upload_and_bind_image_to_block
Upload local or web images into empty image blocks
create_feishu_table
Insert a table whose cells can hold different block types
get_feishu_whiteboard_content
Read the shapes and structure of a whiteboard
fill_whiteboard_with_plantuml
Draw PlantUML or Mermaid diagrams into whiteboard blocks
list_feishu_tasks
List tasks assigned to the signed-in user (user auth, task module)
create_feishu_task
Create tasks, including subtasks (user auth, task module)
update_feishu_task
Change a task's content, members or reminders (user auth, task module)
delete_feishu_task
Delete one or more tasks (user auth, task module)
get_feishu_users
Search users by name or fetch them by ID (user auth)

Similar servers