get_feishu_root_folder_infoLABSCO SUMMARY
Documents built block by block, not pasted in as one lump of text.
Working at the block level is what makes editing possible later: an assistant can update one paragraph, insert a table in the middle, or attach an image to a specific block, instead of regenerating the whole document each time.
What it is
A server over the Feishu open API that treats a document as a block tree, so an assistant can create content in batches and edit individual blocks rather than replacing whole files. Lark's international deployment is supported by pointing it at a different base URL.
What you get
- Documents:
create_feishu_document,get_feishu_document_info(which also resolves a Wiki link to a document id) andget_feishu_document_blocksfor the block structure - Editing:
batch_create_feishu_blocksfor creating consecutive content efficiently,batch_update_feishu_block_text, anddelete_feishu_document_blocks - Folders and search:
get_feishu_folder_files,create_feishu_folderandsearch_feishu_documents - Rich content:
create_feishu_tablefor structured data,upload_and_bind_image_to_blockfor local or remote images,get_feishu_image_resourcefor pulling images back out, andget_feishu_whiteboard_contentfor the shapes and structure of a whiteboard such as a flowchart or mind map - Formatting that covers most of Markdown — bold, italic, underline, strikethrough, inline code, seven text colours, three alignments, headings from level 1 to 9, syntax-highlighted code blocks and mathematical formulas
- Tasks:
list_feishu_tasks,create_feishu_taskincluding sub-tasks,update_feishu_taskanddelete_feishu_task get_feishu_usersto search members by name or fetch them in batch by id, which is what task assignment needs- A
feishu-toolCLI for inspecting the toolset, writing credentials and invoking a tool directly
Requirements
FEISHU_APP_ID and FEISHU_APP_SECRET from a Feishu application. Run it with npm or from source; PORT defaults to 3333. FEISHU_AUTH_TYPE chooses between tenant, the default application-level credential, and user, which acts as a person through OAuth — the task, calendar and member modules require user. FEISHU_ENABLED_MODULES selects which of document, task, calendar, member or all are loaded, defaulting to document only. For Lark, set FEISHU_BASE_URL to https://open.larksuite.com/open-apis and FEISHU_AUTH_BASE_URL to https://accounts.larksuite.com. FEISHU_ENCRYPTION_KEY encrypts the cached access token, refresh token and client secret and is worth setting for a Docker deployment. MCP_BEARER_TOKEN requires an Authorization: Bearer header on every HTTP, SSE and StreamableHTTP request; without it no authentication is applied.
Setup effort
One command plus credentials — npx feishu-mcp@latest --feishu-app-id=<YOUR_FEISHU_APP_ID> --feishu-app-secret=<YOUR_FEISHU_APP_SECRET> --feishu-auth-type=tenant --enabled-modules=document, then supply credentials
USE CASES
Turning a draft into a real Feishu document
Create the document, then batch-create the blocks — headings, code, tables and formulas all arrive with formatting rather than as plain text.
Editing a document someone else wrote
Read the block structure first to find the block you mean, then update or delete just that one.
Starting from a link a colleague sent
The document info call resolves a Wiki link into a document id, which is what every other call needs.
Reading a whiteboard diagram
Pull the shapes and structure of a flowchart or mind map, so the diagram becomes something the model can reason about rather than an image.
Managing tasks alongside the docs
List what you own, create tasks with sub-tasks, update members and reminders, and look up the people to assign them to.
Adding images to a document
Upload a local or remote image and bind it to a block, or fetch an existing one back out of a document.
20 tools
Listed in project docs. Your client may show a different list.
get_feishu_folder_filescreate_feishu_foldercreate_feishu_documentget_feishu_document_infoget_feishu_document_blocksbatch_create_feishu_blocksbatch_update_feishu_block_textdelete_feishu_document_blockscreate_feishu_tableget_feishu_image_resourceupload_and_bind_image_to_blocksearch_feishu_documentsget_feishu_whiteboard_contentfill_whiteboard_with_plantumllist_feishu_taskscreate_feishu_taskupdate_feishu_taskdelete_feishu_taskget_feishu_usersBEFORE YOU INSTALL
What to know first
Tools you get
20 tools named in the project's documentation.
Requires
- npx on PATH
- FEISHU_APP_ID in your environment
- FEISHU_APP_SECRET in your environment
INSTALLATION
Connect your client
Server setup
npx feishu-mcp@latest --feishu-app-id=<YOUR_FEISHU_APP_ID> --feishu-app-secret=<YOUR_FEISHU_APP_SECRET> --feishu-auth-type=tenant --enabled-modules=document<YOUR_FEISHU_APP_ID> and <YOUR_FEISHU_APP_SECRET> are the App ID and App Secret of the Feishu app you created. As written it acts as the app (tenant) and loads the document module, the defaults; to work with tasks, use --feishu-auth-type=user --enabled-modules=document,task instead, because the task module needs user sign-in. Without --stdio this starts the server in HTTP mode on port 3333, which the SSE and HTTP entries below connect to.
MCP Clients
Cursor — stdio, Cline — stdio
{
"mcpServers": {
"feishu-mcp": {
"command": "npx",
"args": [
"-y",
"feishu-mcp@latest",
"--stdio"
],
"env": {
"FEISHU_APP_ID": "<YOUR_FEISHU_APP_ID>",
"FEISHU_APP_SECRET": "<YOUR_FEISHU_APP_SECRET>",
"FEISHU_AUTH_TYPE": "<YOUR_FEISHU_AUTH_TYPE>",
"FEISHU_ENABLED_MODULES": "document,task",
"FEISHU_USER_KEY": "<YOUR_USER_KEY>"
}
}
}
}<YOUR_FEISHU_APP_ID> and <YOUR_FEISHU_APP_SECRET> are the App ID and App Secret of the Feishu app you created, and <YOUR_FEISHU_AUTH_TYPE> is tenant (act as the app) or user (act as yourself; the task module needs user). <YOUR_USER_KEY> is not issued by Feishu: make up a string that identifies you, unique per user or client — a random UUID works.
Any MCP client — SSE
Start the server in HTTP mode
For tasks, use --feishu-auth-type=user --enabled-modules=document,task.
npx feishu-mcp@latest --feishu-app-id=<YOUR_FEISHU_APP_ID> --feishu-app-secret=<YOUR_FEISHU_APP_SECRET> --feishu-auth-type=tenant --enabled-modules=documentPoint your client at it
<YOUR_USER_KEY> in userKey is a string you make up; it identifies you to the server, so use a random one.
{
"mcpServers": {
"feishu_local": {
"url": "http://localhost:3333/sse?userKey=<YOUR_USER_KEY>"
}
}
}Any MCP client — HTTP
Start the server in HTTP mode
For tasks, use --feishu-auth-type=user --enabled-modules=document,task.
npx feishu-mcp@latest --feishu-app-id=<YOUR_FEISHU_APP_ID> --feishu-app-secret=<YOUR_FEISHU_APP_SECRET> --feishu-auth-type=tenant --enabled-modules=documentPoint your client at it
<YOUR_USER_KEY> in userKey is a string you make up; it identifies you to the server, so use a random one.
{
"mcpServers": {
"feishu_streamable": {
"url": "http://localhost:3333/mcp?userKey=<YOUR_USER_KEY>"
}
}
}