Lark Open Platform MCP Server — Connect AI assistants to Lark/Feishu
Lark MCP Server
MCP server for Lark Open Platform. Supports Claude Desktop (stdio) and HTTP multi-session transports. ~42 tools across messages, docs (Base/Bitable, Sheets, Documents), and tasks.
Setup
1. Create a Lark Internal App
- Go to https://open.larksuite.com/app → Create app → Internal app
- Note down App ID and App Secret
- Under "Permissions & Scopes", enable required permissions (see table below)
- Under "Version Management & Release", publish the app
2. Required Permissions
| Feature | Required Permissions |
|---------|---------------------|
| Messages | im:message, im:message:send_as_bot, im:chat:readonly |
| Base/Bitable | bitable:app, bitable:app:readonly |
| Sheets | sheets:spreadsheet, sheets:spreadsheet:readonly |
| Documents | docx:document, docx:document:readonly |
| Tasks | task:task, task:task:write |
3. Install
npm install
npm run build
Environment Variables
| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| LARK_APP_ID | Yes | — | Lark internal app ID |
| LARK_APP_SECRET | Yes | — | Lark internal app secret |
| LARK_BASE_URL | No | https://open.larksuite.com/open-apis | Use https://open.feishu.cn/open-apis for China region |
| PORT | No | 3000 | HTTP server port |
| LARK_RATE_LIMIT | No | 50 | Max requests per second |
Copy .env.example to .env and fill in your values:
cp .env.example .env
# Edit .env with your Lark app credentials
Usage
Claude Desktop (stdio)
Add to your Claude Desktop claude_desktop_config.json:
{
"mcpServers": {
"lark": {
"command": "node",
"args": ["/path/to/lark-mcp/dist/cli.js", "mcp"],
"env": {
"LARK_APP_ID": "cli_xxxx",
"LARK_APP_SECRET": "xxxx"
}
}
}
}
Or with CLI args:
node dist/cli.js mcp --app-id cli_xxxx --app-secret xxxx
HTTP Server (multi-session)
node dist/cli.js mcp --app-id cli_xxxx --app-secret xxxx --mode http --port 3000
Connect via MCP client to http://localhost:3000/mcp.
Docker
docker build -t lark-mcp .
# Using env file
docker run --rm --env-file .env -p 3000:3000 lark-mcp
# Or passing env vars directly
docker run --rm -e LARK_APP_ID=cli_xxxx -e LARK_APP_SECRET=xxxx lark-mcp
# HTTP mode
docker run --rm --env-file .env -p 3000:3000 lark-mcp --mode http
Available Tools & Presets
Presets
| Preset | Description |
|--------|-------------|
| preset.default | All ~42 tools |
| preset.readonly | Read-only GET tools only |
| preset.messages | Messages + chats (10 tools) |
| preset.docs | Base + Sheets + Documents (22 tools) |
| preset.tasks | Tasks + tasklists (10 tools) |
Use with: node dist/cli.js mcp --tools preset.readonly ...
Tool Reference
Messages (7 tools)
lark_message_send— Send message to user or chatlark_message_get— Get message by IDlark_message_list— List messages in a chatlark_message_update— Edit a messagelark_message_delete— Delete a messagelark_message_reply— Reply to a messagelark_message_forward— Forward a message
Chats (3 tools)
lark_chat_list— List chatslark_chat_get— Get chat infolark_chat_members— List chat members
Base/Bitable (10 tools)
lark_base_create,lark_base_get— App managementlark_base_table_list,lark_base_table_create— Table managementlark_base_record_list,lark_base_record_get,lark_base_record_create,lark_base_record_update,lark_base_record_delete— Record CRUDlark_base_field_list— List fields
Sheets (6 tools)
lark_sheet_create,lark_sheet_get,lark_sheet_list— Spreadsheet managementlark_sheet_values_read,lark_sheet_values_write,lark_sheet_values_append— Value operations
Documents (6 tools)
lark_document_create,lark_document_get— Document managementlark_document_content— Get raw text contentlark_document_blocks_list,lark_document_block_create,lark_document_block_update— Block operations
Tasks (10 tools)
lark_task_create,lark_task_get,lark_task_list,lark_task_update,lark_task_delete— Task CRUDlark_task_complete— Complete a tasklark_task_add_members,lark_task_remove_members— Member managementlark_tasklist_list,lark_tasklist_create— Tasklist management
List all tools
node dist/cli.js tools
node dist/cli.js tools --project messages
License
MIT