Loading...
Loading...
Integrate Feishu services to operate Bitable, documents, messages, groups, etc. Use this when users mention Feishu, Lark or need to operate Feishu-related functions.
npx skill4agent add whatevertogo/feishuskill lark-mcp# ⭐ Key: Use useUAT: true to create resources accessible by users
useUAT: true # ✅ User identity - Creator = current user, you can access directly
useUAT: false # ❌ Tenant identity - Creator = Feishu Assistant, you cannot access directly✅ mcp__lark-mcp__tool_name
❌ mcp__lark_mcp__ (Error: underscore)
❌ lark-mcp__ (Error: missing prefix)path: # URL path parameters (required)
app_token: ...
table_id: ...
params: # URL query parameters (optional)
user_id_type: "open_id"
data: # Request body (optional)
fields: {...}
useUAT: false # Use tenant token by default❌ content: {"text": "hello"}
✅ content: '{"text": "hello"}'❌ value: "Completed"
✅ value: ["Completed"]open_id - User ID (recommended)
chat_id - Group chat ID
app_token - Bitable app ID
table_id - Table ID
record_id - Record IDTool: mcp__lark-mcp__bitable_v1_appTableRecord_search
path:
app_token: "your_app_token" # Replace with actual Base app ID (obtained from URL)
table_id: "your_table_id" # Replace with actual table ID (obtained from URL)
params:
page_size: 20
data:
filter:
conjunction: "and"
conditions:
- field_name: "Status"
operator: "is"
value: ["Completed"]Tool: mcp__lark-mcp__im_v1_message_create
data:
receive_id: "oc_xxxxx" # Replace with actual group chat_id
msg_type: "text"
content: '{"text": "Message content"}'
params:
receive_id_type: "chat_id"Tool: mcp__lark-mcp__docx_builtin_search
data:
search_key: "Keywords"
count: 10
useUAT: truebitable_v1_app_createbitable_v1_appTable_listbitable_v1_appTable_createbitable_v1_appTableField_listbitable_v1_appTableRecord_searchbitable_v1_appTableRecord_createbitable_v1_appTableRecord_updateim_v1_message_createim_v1_message_listim_v1_chat_createim_v1_chat_listim_v1_chatMembers_getdocx_builtin_searchdocx_builtin_importdocx_v1_document_rawContentim_v1_chat_createim_v1_chatMembers_getim_v1_chat_listdrive_v1_permissionMember_createcontact_v3_user_batchGetIdwiki_v1_node_searchwiki_v2_space_getNodehttps://xxx.feishu.cn/base/appxxxxx?table=tblxxxxx
↑app_token ↑table_idTool: mcp__lark-mcp__contact_v3_user_batchGetId
data:
emails: ["user@example.com"] # Replace with actual user email
params:
user_id_type: "open_id""open_id""open_id""union_id""user_id"Task Progress:
- [ ] Step 1: Create Base app (⭐ useUAT: true)
- [ ] Step 2: Create table and fields
- [ ] Step 3: Insert records
- [ ] Step 4: Verify dataTool: mcp__lark-mcp__bitable_v1_app_create
data:
name: "Project Management" # Can be modified to your required name
time_zone: "Asia/Shanghai"
useUAT: true # ⭐ Important: Use user identity to ensure direct accessTool: mcp__lark-mcp__bitable_v1_appTable_create
path:
app_token: "bascnxxxxxx" # Replace with actual app_token returned from Step 1
data:
table:
name: "Table Name"
default_view_name: "Default View"
fields:
- field_name: "Name"
ui_type: "Text"
- field_name: "Age"
ui_type: "Number"
- field_name: "Status"
ui_type: "SingleSelect"
property:
options:
- name: "In Progress"
- name: "Completed"table_idTool: mcp__lark-mcp__bitable_v1_appTableRecord_create
path:
app_token: "bascnxxxxxx" # Replace with actual value returned from Step 1
table_id: "tblxxxxxx" # Replace with actual value returned from Step 2
data:
fields:
Name: "Zhang San"
Age: 25
Status: "In Progress"Tool: mcp__lark-mcp__bitable_v1_appTableRecord_search
path:
app_token: "bascnxxxxxx" # Replace with actual app_token
table_id: "tblxxxxxx" # Replace with actual table_id
params:
page_size: 10Task Progress:
- [ ] Step 1: Query table data
- [ ] Step 2: Process query results
- [ ] Step 3: Construct message
- [ ] Step 4: Send to groupTool: mcp__lark-mcp__bitable_v1_appTableRecord_search
path:
app_token: "bascnxxxxxx" # Replace with actual app_token
table_id: "tblxxxxxx" # Replace with actual table_id
params:
page_size: 10
data:
filter:
conjunction: "and"
conditions:
- field_name: "Status"
operator: "is"
value: ["Pending"]data.itemsfields# Example Response Structure
data:
items:
- record_id: "recxxxx"
fields:
Task Name: "Complete Document"
Status: "Pending"# Example: Construct text message
message = "Found " + items.length + " pending tasks:\n"
for each item in items:
message += "- " + item.fields["Task Name"] + "\n"Tool: mcp__lark-mcp__im_v1_message_create
data:
receive_id: "oc_xxxxx" # Replace with actual group chat_id
msg_type: "text"
content: '{"text": "Processing results: ..."}'
params:
receive_id_type: "chat_id"Task Progress:
- [ ] Step 1: Search documents
- [ ] Step 2: Get document_id
- [ ] Step 3: Extract document content
- [ ] Step 4: Process textTool: mcp__lark-mcp__docx_builtin_search
data:
search_key: "Project Report"
count: 10
useUAT: truedocument_id# Example Response Structure
data:
items:
- document_id: "doxcnxxxxxx" # ← Save this
title: "Project Report"
...Tool: mcp__lark-mcp__docx_v1_document_rawContent
path:
document_id: "doxcnxxxxxx" # Replace with actual document_id obtained from Step 2
params:
lang: 0
useUAT: truemcp__lark-mcp__field_nameuseUAT: trueuseUAT: falsereceive_id_type: "chat_id"receive_id_type: "open_id"mcp__lark-mcp__tool_nameuseUAT: falseuseUAT: true # ✅ User identity - Creator = current user, accessible directly
useUAT: false # ❌ Tenant identity - Requires additional permission settingsdrive_v1_permissionMember_createuseUAT: truefull_access# Get correct IDs from URL (appxxxxx and tblxxxxx are placeholders to replace)
https://xxx.feishu.cn/base/appxxxxx?table=tblxxxxx
↑app_token ↑table_id
# Get field list to confirm field names before querying
Tool: mcp__lark-mcp__bitable_v1_appTableField_listuseUAT: truesender_typeuseUAT: true# Must explicitly specify owner_id
Tool: mcp__lark-mcp__im_v1_chat_create
data:
owner_id: "ou_xxxxx" # Specify user as group owner
user_id_list: ["ou_xxxxx"]owner_id