Feishu/Lark Platform Interaction
You have access to the Feishu/Lark platform via MCP tools (prefixed feishu-lark__).
This enables you to interact with the user's Feishu workspace: search and read documents,
manage tasks, create calendar events, operate Bitable databases, and send messages.
Available Capabilities
Documents (文档)
docx.v1.document.rawContent — Read document content
docx.builtin.import — Import documents (create new docs from content)
docx.builtin.search — Search documents by keyword
wiki.v2.space.getNode — Get Wiki node content
wiki.v1.node.search — Search Wiki nodes
Tasks (任务)
task.v2.task.create — Create a new task with title, description, due date
task.v2.task.patch — Update an existing task
task.v2.task.addMembers — Add members to a task
task.v2.task.addReminders — Add reminders to a task
Calendar (日历)
calendar.v4.calendarEvent.create — Create a calendar event
calendar.v4.calendarEvent.patch — Modify a calendar event
calendar.v4.calendarEvent.get — Get calendar event details
calendar.v4.freebusy.list — Query free/busy status
calendar.v4.calendar.primary — Get primary calendar info
Bitable (多维表格)
bitable.v1.appTable.list — List tables in a base
bitable.v1.appTableField.list — List fields in a table
bitable.v1.appTableRecord.search — Search records
bitable.v1.appTableRecord.create — Create records
bitable.v1.appTableRecord.update — Update records
Messaging (消息)
im.v1.message.create — Send a message to a chat or user
im.v1.message.list — List messages in a chat
im.v1.chat.create — Create a new group chat
im.v1.chat.list — List chats the bot is in
Contacts (通讯录)
contact.v3.user.batchGetId — Batch get user IDs by email/mobile
Best Practices
Document Operations
- Search before read — Always search for documents first to find the correct
document_id
- Prefer Wiki nodes — If the user mentions "知识库" or "Wiki", use wiki APIs
- Cite sources — When referencing document content in replies, include the document title
Task Management
- Match user intent — When user says "帮我创建一个任务", use
task.v2.task.create
- Set due dates — Always ask for or infer a due date when creating tasks
- Add members — If the user mentions specific people, resolve their user IDs via contacts API first
Calendar Events
- Check availability — Before creating an event, use
freebusy.list to check conflicts
- Time zones — Default to Asia/Shanghai unless the user specifies otherwise
- Include details — Set description, location, and attendees when provided
Bitable Operations
- Discover structure — List tables and fields before searching records
- Filter queries — Use search with filter conditions rather than fetching all records
- Batch operations — For multiple records, prefer batch create/update when available
Messaging
- Format appropriately — Use markdown formatting for rich messages
- Respect context — Only send messages when the user explicitly asks to notify someone
- Interactive cards — For structured information, use
msg_type: 'interactive' with card JSON
- Send text — Prefer native tool
feishu_send_message (or MCP im.v1.message.create)
- Send local images — Use native tool
feishu_send_image with the absolute file path.
Feishu MCP cannot upload images/files. Never claim an image was sent via MCP alone.
- Empty chat list —
im.v1.chat.list only returns groups the bot has joined. If it returns
items: [], do not give up: resolve the user's open_id (e.g. via
calendar.v4.calendar.primary → user_id, or contact.v3.user.batchGetId) and send with
receive_id_type=open_id (p2p / "发到我的飞书").
Important Notes
- Tool names are prefixed with
feishu-lark__ (e.g., feishu-lark__docx.builtin.search)
- Document editing is NOT supported — you can only read and import
- File/image upload via MCP is NOT supported — use
feishu_send_image for local images
- Always handle API errors gracefully and report them to the user
- Respect rate limits: 1000 requests/minute per API endpoint
Permission Error Handling
When a tool call returns an error containing code: 99991672 or "Access denied...scopes required",
it means the Feishu application has not been granted the necessary API permissions. In this case:
- Extract the authorization URL from the error message (starts with
https://open.feishu.cn/app/)
- Present the link to the user clearly, explaining they need to click it to authorize the required permissions
- Do NOT retry the same tool call — it will continue to fail until permissions are granted
- List the missing scopes mentioned in the error so the user knows what to authorize
Example response format:
The Feishu app needs additional permissions to perform this operation.
Please open the following link to authorize, then try again:
https://open.feishu.cn/app/cli_xxx/auth?q=docs:doc,drive:drive,...
Missing scopes: docs:doc, drive:drive
Always use the full URL as both the link text AND the href (i.e. [full_url](full_url)), so the user can both see the complete URL and click it directly.
1---2name: feishu-interaction3description: Feishu/Lark platform interaction via MCP - documents, tasks, calendar, Bitable, messaging4---56# Feishu/Lark Platform Interaction78You have access to the Feishu/Lark platform via MCP tools (prefixed `feishu-lark__`).9This enables you to interact with the user's Feishu workspace: search and read documents,10manage tasks, create calendar events, operate Bitable databases, and send messages.1112## Available Capabilities1314### Documents (文档)15- `docx.v1.document.rawContent` — Read document content16- `docx.builtin.import` — Import documents (create new docs from content)17- `docx.builtin.search` — Search documents by keyword18- `wiki.v2.space.getNode` — Get Wiki node content19- `wiki.v1.node.search` — Search Wiki nodes2021### Tasks (任务)22- `task.v2.task.create` — Create a new task with title, description, due date23- `task.v2.task.patch` — Update an existing task24- `task.v2.task.addMembers` — Add members to a task25- `task.v2.task.addReminders` — Add reminders to a task2627### Calendar (日历)28- `calendar.v4.calendarEvent.create` — Create a calendar event29- `calendar.v4.calendarEvent.patch` — Modify a calendar event30- `calendar.v4.calendarEvent.get` — Get calendar event details31- `calendar.v4.freebusy.list` — Query free/busy status32- `calendar.v4.calendar.primary` — Get primary calendar info3334### Bitable (多维表格)35- `bitable.v1.appTable.list` — List tables in a base36- `bitable.v1.appTableField.list` — List fields in a table37- `bitable.v1.appTableRecord.search` — Search records38- `bitable.v1.appTableRecord.create` — Create records39- `bitable.v1.appTableRecord.update` — Update records4041### Messaging (消息)42- `im.v1.message.create` — Send a message to a chat or user43- `im.v1.message.list` — List messages in a chat44- `im.v1.chat.create` — Create a new group chat45- `im.v1.chat.list` — List chats the bot is in4647### Contacts (通讯录)48- `contact.v3.user.batchGetId` — Batch get user IDs by email/mobile4950## Best Practices5152### Document Operations531. **Search before read** — Always search for documents first to find the correct `document_id`542. **Prefer Wiki nodes** — If the user mentions "知识库" or "Wiki", use wiki APIs553. **Cite sources** — When referencing document content in replies, include the document title5657### Task Management581. **Match user intent** — When user says "帮我创建一个任务", use `task.v2.task.create`592. **Set due dates** — Always ask for or infer a due date when creating tasks603. **Add members** — If the user mentions specific people, resolve their user IDs via contacts API first6162### Calendar Events631. **Check availability** — Before creating an event, use `freebusy.list` to check conflicts642. **Time zones** — Default to Asia/Shanghai unless the user specifies otherwise653. **Include details** — Set description, location, and attendees when provided6667### Bitable Operations681. **Discover structure** — List tables and fields before searching records692. **Filter queries** — Use search with filter conditions rather than fetching all records703. **Batch operations** — For multiple records, prefer batch create/update when available7172### Messaging731. **Format appropriately** — Use markdown formatting for rich messages742. **Respect context** — Only send messages when the user explicitly asks to notify someone753. **Interactive cards** — For structured information, use `msg_type: 'interactive'` with card JSON764. **Send text** — Prefer native tool `feishu_send_message` (or MCP `im.v1.message.create`)775. **Send local images** — Use native tool `feishu_send_image` with the absolute file path.78 Feishu MCP **cannot** upload images/files. Never claim an image was sent via MCP alone.796. **Empty chat list** — `im.v1.chat.list` only returns groups the bot has joined. If it returns80 `items: []`, do **not** give up: resolve the user's `open_id` (e.g. via81 `calendar.v4.calendar.primary` → `user_id`, or `contact.v3.user.batchGetId`) and send with82 `receive_id_type=open_id` (p2p / "发到我的飞书").8384## Important Notes8586- Tool names are prefixed with `feishu-lark__` (e.g., `feishu-lark__docx.builtin.search`)87- Document editing is NOT supported — you can only read and import88- File/image upload via MCP is NOT supported — use `feishu_send_image` for local images89- Always handle API errors gracefully and report them to the user90- Respect rate limits: 1000 requests/minute per API endpoint9192## Permission Error Handling9394When a tool call returns an error containing `code: 99991672` or "Access denied...scopes required",95it means the Feishu application has not been granted the necessary API permissions. In this case:96971. **Extract the authorization URL** from the error message (starts with `https://open.feishu.cn/app/`)982. **Present the link to the user** clearly, explaining they need to click it to authorize the required permissions993. **Do NOT retry** the same tool call — it will continue to fail until permissions are granted1004. **List the missing scopes** mentioned in the error so the user knows what to authorize101102Example response format:103> The Feishu app needs additional permissions to perform this operation.104> Please open the following link to authorize, then try again:105>106> [https://open.feishu.cn/app/cli_xxx/auth?q=docs:doc,drive:drive,...](https://open.feishu.cn/app/cli_xxx/auth?q=docs:doc,drive:drive,...)107>108> Missing scopes: docs:doc, drive:drive109110Always use the full URL as both the link text AND the href (i.e. `[full_url](full_url)`), so the user can both see the complete URL and click it directly.