lark-mcp
npx skills add https://github.com/whatevertogo/feishuskill --skill lark-mcp
Agent 安装分布
Skill 文档
Lark MCP (é£ä¹¦éæ)
â ï¸ å¿ è¯»ï¼å5æ¡å ³é®è§å + éè¦ç»éª
éè¦ç»éªï¼ä½¿ç¨ç¨æ·èº«ä»½åå»ºèµæº
# â å
³é®ï¼ä½¿ç¨ useUAT: true åå»ºç¨æ·å¯è®¿é®çèµæº
useUAT: true # â
ç¨æ·èº«ä»½ - å建è
=å½åç¨æ·ï¼æ¨å¯ä»¥ç´æ¥è®¿é®
useUAT: false # â ç§æ·èº«ä»½ - å建è
=é£ä¹¦å©æï¼æ¨æ æ³ç´æ¥è®¿é®
ç»éªæ»ç»ï¼æ¥èªå®é æµè¯ï¼ï¼
- Bitable å建æéé®é¢ – ä½¿ç¨ useUAT: false å建ç Baseï¼åå»ºè æ¯”é£ä¹¦å©æ”ï¼å½åç¨æ·æ æ³è®¿é®
- å¤é¨é®ç®±æééå¶ – éè¿ API æ·»å å¤é¨é®ç®±æéä¼å¤±è´¥ï¼é误ç 1063001ï¼
- è§£å³æ¹æ¡ – ä½¿ç¨ useUAT: true åå»ºèµæºï¼å建è èªå¨è·å¾ full_access æé
- ææ¡£æé – åæ ·éç¨ï¼ä½¿ç¨ç¨æ·èº«ä»½åå»ºææ¡£
1. æå¡å¨åç§°å¿ é¡»ç²¾ç¡®
â
mcp__lark-mcp__tool_name
â mcp__lark_mcp__ (é误ï¼ä¸å线)
â lark-mcp__ (é误ï¼ç¼ºå°åç¼)
2. åµå¥åæ°ç»æ
path: # URLè·¯å¾åæ°ï¼å¿
éï¼
app_token: ...
table_id: ...
params: # URLæ¥è¯¢åæ°ï¼å¯éï¼
user_id_type: "open_id"
data: # 请æ±ä½ï¼å¯éï¼
fields: {...}
useUAT: false # é»è®¤ä½¿ç¨ç§æ·token
3. æ¶æ¯ content å¿ é¡»æ¯å符串
â content: {"text": "hello"}
â
content: '{"text": "hello"}'
4. è¿æ»¤æ¡ä»¶ value å¿ é¡»æ¯æ°ç»
â value: "已宿"
â
value: ["已宿"]
5. ID ç±»åä¸è½æ··æ·
open_id - ç¨æ·IDï¼æ¨èï¼
chat_id - 群èID
app_token - è¡¨æ ¼åºç¨ID
table_id - è¡¨æ ¼ID
record_id - è®°å½ID
å¿«éå¼å§
示ä¾1ï¼æ¥è¯¢å¤ç»´è¡¨æ ¼è®°å½
å·¥å
·: mcp__lark-mcp__bitable_v1_appTableRecord_search
path:
app_token: "your_app_token" # éè¦æ¿æ¢ä¸ºå®é
ç Base åºç¨ IDï¼ä» URL è·åï¼
table_id: "your_table_id" # éè¦æ¿æ¢ä¸ºå®é
çè¡¨æ ¼ IDï¼ä» URL è·åï¼
params:
page_size: 20
data:
filter:
conjunction: "and"
conditions:
- field_name: "ç¶æ"
operator: "is"
value: ["已宿"]
示ä¾2ï¼åéææ¬æ¶æ¯å°ç¾¤ç»
å·¥å
·: mcp__lark-mcp__im_v1_message_create
data:
receive_id: "oc_xxxxx" # éè¦æ¿æ¢ä¸ºå®é
çç¾¤ç» chat_id
msg_type: "text"
content: '{"text": "æ¶æ¯å
容"}'
params:
receive_id_type: "chat_id"
示ä¾3ï¼æç´¢ææ¡£
å·¥å
·: mcp__lark-mcp__docx_builtin_search
data:
search_key: "å
³é®è¯"
count: 10
useUAT: true
å·¥å ·åç±»
å¤ç»´è¡¨æ ¼ (Bitable)
bitable_v1_app_create– å建 Base åºç¨bitable_v1_appTable_list– ååºææè¡¨æ ¼bitable_v1_appTable_create– å建æ°è¡¨æ ¼bitable_v1_appTableField_list– è·ååæ®µå表bitable_v1_appTableRecord_search– æ¥è¯¢è®°å½bitable_v1_appTableRecord_create– å建记å½bitable_v1_appTableRecord_update– æ´æ°è®°å½
è¯¦ç»æåï¼reference/bitable.md
æ¶æ¯ (Messages)
im_v1_message_create– åéæ¶æ¯im_v1_message_list– è·åè天åå²im_v1_chat_create– å建群ç»im_v1_chat_list– è·å群ç»å表im_v1_chatMembers_get– è·å群æå
è¯¦ç»æåï¼reference/messages.md
ææ¡£ (Documents)
docx_builtin_search– æç´¢ææ¡£docx_builtin_import– å¯¼å ¥ææ¡£docx_v1_document_rawContent– è·åææ¡£å 容
è¯¦ç»æåï¼reference/documents.md
ç¾¤ç» (Groups)
im_v1_chat_create– å建群ç»im_v1_chatMembers_get– è·åæåå表im_v1_chat_list– è·å群ç»å表
è¯¦ç»æåï¼reference/groups.md
æé (Permissions)
drive_v1_permissionMember_create– æ·»å åä½è æé
è¯¦ç»æåï¼reference/permissions.md
è系人 (Contacts)
contact_v3_user_batchGetId– éè¿é®ç®±/ææºå·è·åç¨æ·ID
Wiki (ç¥è¯åº)
wiki_v1_node_search– æç´¢ Wiki èç¹wiki_v2_space_getNode– è·åèç¹ä¿¡æ¯
认è¯è¯´æ
Token ç±»å
- useUAT: true – ç¨æ·è®¿é®ä»¤çï¼ç¨æ·æä½ï¼
- useUAT: false – ç§æ·è®¿é®ä»¤çï¼åå°æä½ï¼é»è®¤ï¼
è·å ID
ä» URL è·åï¼
https://xxx.feishu.cn/base/appxxxxx?table=tblxxxxx
âapp_token âtable_id
è·åç¨æ· open_idï¼
å·¥å
·: mcp__lark-mcp__contact_v3_user_batchGetId
data:
emails: ["user@example.com"] # éè¦æ¿æ¢ä¸ºå®é
çç¨æ·é®ç®±
params:
user_id_type: "open_id"
user_id_type åæ°
å§ç»ä½¿ç¨ "open_id"ï¼æéç¨ï¼æ¨èï¼ã
å¯éå¼ï¼"open_id" | "union_id" | "user_id"
æ ¸å¿å·¥ä½æµ
工使µ1ï¼å建å¤ç»´è¡¨æ ¼å¹¶æ·»å è®°å½ï¼ç¨æ·å¯è®¿é®çæ¬ï¼
ä»»å¡è¿åº¦ï¼
- [ ] æ¥éª¤1: å建 Base åºç¨ï¼â useUAT: trueï¼
- [ ] æ¥éª¤2: åå»ºè¡¨æ ¼ååæ®µ
- [ ] æ¥éª¤3: æå
¥è®°å½
- [ ] æ¥éª¤4: éªè¯æ°æ®
æ¥éª¤1: å建 Base åºç¨
å·¥å
·: mcp__lark-mcp__bitable_v1_app_create
data:
name: "项ç®ç®¡ç" # å¯ä»¥ä¿®æ¹ä¸ºæ¨éè¦çåç§°
time_zone: "Asia/Shanghai"
useUAT: true # â éè¦ï¼ä½¿ç¨ç¨æ·èº«ä»½ï¼ç¡®ä¿æ¨å¯ä»¥ç´æ¥è®¿é®
æ¥éª¤2: åå»ºè¡¨æ ¼ååæ®µ
å·¥å
·: mcp__lark-mcp__bitable_v1_appTable_create
path:
app_token: "bascnxxxxxx" # éè¦æ¿æ¢ä¸ºæ¥éª¤1è¿åçå®é
app_token
data:
table:
name: "è¡¨æ ¼åç§°"
default_view_name: "é»è®¤è§å¾"
fields:
- field_name: "å§å"
ui_type: "Text"
- field_name: "å¹´é¾"
ui_type: "Number"
- field_name: "ç¶æ"
ui_type: "SingleSelect"
property:
options:
- name: "è¿è¡ä¸"
- name: "已宿"
注æï¼ å建æååï¼ååºä¸ä¼è¿å table_idï¼ä¿åå®ç¨äºä¸ä¸æ¥ã
æ¥éª¤3: æå ¥è®°å½
å·¥å
·: mcp__lark-mcp__bitable_v1_appTableRecord_create
path:
app_token: "bascnxxxxxx" # éè¦æ¿æ¢ä¸ºæ¥éª¤1è¿åçå®é
å¼
table_id: "tblxxxxxx" # éè¦æ¿æ¢ä¸ºæ¥éª¤2è¿åçå®é
å¼
data:
fields:
å§å: "å¼ ä¸"
å¹´é¾: 25
ç¶æ: "è¿è¡ä¸"
æ¥éª¤4: éªè¯æ°æ®
å·¥å
·: mcp__lark-mcp__bitable_v1_appTableRecord_search
path:
app_token: "bascnxxxxxx" # éè¦æ¿æ¢ä¸ºå®é
ç app_token
table_id: "tblxxxxxx" # éè¦æ¿æ¢ä¸ºå®é
ç table_id
params:
page_size: 10
工使µ2ï¼æ¥è¯¢è¡¨æ ¼å¹¶åéæ¶æ¯
ä»»å¡è¿åº¦ï¼
- [ ] æ¥éª¤1: æ¥è¯¢è¡¨æ ¼æ°æ®
- [ ] æ¥éª¤2: å¤çæ¥è¯¢ç»æ
- [ ] æ¥éª¤3: æé æ¶æ¯
- [ ] æ¥éª¤4: åéå°ç¾¤ç»
æ¥éª¤1: æ¥è¯¢æ°æ®
å·¥å
·: mcp__lark-mcp__bitable_v1_appTableRecord_search
path:
app_token: "bascnxxxxxx" # éè¦æ¿æ¢ä¸ºå®é
ç app_token
table_id: "tblxxxxxx" # éè¦æ¿æ¢ä¸ºå®é
ç table_id
params:
page_size: 10
data:
filter:
conjunction: "and"
conditions:
- field_name: "ç¶æ"
operator: "is"
value: ["å¾
å¤ç"]
æ¥éª¤2: å¤çæ¥è¯¢ç»æ
æ¥è¯¢æååï¼ååºä¸å
å« data.items æ°ç»ï¼æ¯é¡¹å
å«è®°å½ç fieldsã
# ååºç»æç¤ºä¾
data:
items:
- record_id: "recxxxx"
fields:
ä»»å¡åç§°: "å®æææ¡£"
ç¶æ: "å¾
å¤ç"
æ¥éª¤3: æé æ¶æ¯
æ ¹æ®æ¥è¯¢ç»ææé æ¶æ¯å 容ï¼
# 示ä¾ï¼æé ææ¬æ¶æ¯
message = "æ¾å° " + items.length + " 个å¾
å¤çä»»å¡ï¼\n"
for each item in items:
message += "- " + item.fields["ä»»å¡åç§°"] + "\n"
æ¥éª¤4: åéæ¶æ¯
å·¥å
·: mcp__lark-mcp__im_v1_message_create
data:
receive_id: "oc_xxxxx" # éè¦æ¿æ¢ä¸ºå®é
çç¾¤ç» chat_id
msg_type: "text"
content: '{"text": "å¤çç»æï¼..."}'
params:
receive_id_type: "chat_id"
工使µ3ï¼æç´¢ææ¡£å¹¶è·åå 容
ä»»å¡è¿åº¦ï¼
- [ ] æ¥éª¤1: æç´¢ææ¡£
- [ ] æ¥éª¤2: è·å document_id
- [ ] æ¥éª¤3: æåææ¡£å
容
- [ ] æ¥éª¤4: å¤çææ¬
æ¥éª¤1: æç´¢
å·¥å
·: mcp__lark-mcp__docx_builtin_search
data:
search_key: "é¡¹ç®æ¥å"
count: 10
useUAT: true
æ¥éª¤2: è·å document_id
æç´¢æååï¼ä»ååºä¸æå第ä¸ä¸ªææ¡£ç document_idï¼
# ååºç»æç¤ºä¾
data:
items:
- document_id: "doxcnxxxxxx" # â ä¿åè¿ä¸ª
title: "é¡¹ç®æ¥å"
...
æ¥éª¤3: è·åå 容
å·¥å
·: mcp__lark-mcp__docx_v1_document_rawContent
path:
document_id: "doxcnxxxxxx" # éè¦æ¿æ¢ä¸ºæ¥éª¤2è·åçå®é
document_id
params:
lang: 0
useUAT: true
常è§éè¯¯ææ¥
é误1: “tool not found”
åå : æå¡å¨åç§°æ¼åé误
è§£å³: ç¡®ä¿ä½¿ç¨ mcp__lark-mcp__ åç¼ï¼æ³¨æè¿å符ï¼
é误2: “invalid request”
åå : åæ°åµå¥é误 è§£å³: æ£æ¥ path/params/data å±çº§ï¼path åæ°éå¸¸å¿ é
é误3: “field not found”
åå : åæ®µåé误æ ID ç±»åé误 è§£å³:
- 确认
field_nameä¸è¡¨æ ¼å段åå®å ¨ä¸è´ - ç¡®è®¤ä½¿ç¨æ£ç¡®ç ID ç±»åï¼app_token vs table_idï¼
é误4: “permission denied”
åå : æéä¸è¶³æ token ç±»åé误 è§£å³:
- æ£æ¥åºç¨æ¯å¦æè¯¥èµæºçè®¿é®æé
- ç¨æ·æä½ä½¿ç¨
useUAT: true - åå°æä½ä½¿ç¨
useUAT: false
é误5: æ¶æ¯åé失败
åå : content æ ¼å¼é误æ receive_id_type é误 è§£å³:
- content å¿ é¡»æ¯ JSON å符串ï¼ä¸æ¯å¯¹è±¡
- åéå°ç¾¤ç»ä½¿ç¨
receive_id_type: "chat_id" - åéå°ç¨æ·ä½¿ç¨
receive_id_type: "open_id"
åæ°æ ¡éªæ¸ å
使ç¨åæ£æ¥ï¼
- æå¡å¨åç§°ï¼
mcp__lark-mcp__tool_name - path åæ°å¿ é䏿£ç¡®ï¼app_token, table_id, record_id çï¼
- content æ¯ JSON åç¬¦ä¸²ï¼æ¶æ¯ç¸å ³ï¼
- value æ¯æ°ç»ï¼è¿æ»¤æ¡ä»¶ï¼
- æä¸¾å¼ç²¾ç¡®å¹é ï¼user_id_type, operator çï¼
- ID ç±»åæ£ç¡®ï¼open_id vs chat_id vs app_tokenï¼
- useUAT 设置æ£ç¡®ï¼ç¨æ· trueï¼åå° falseï¼
å®è·µä¸éå°çé®é¢
é®é¢1: å建ç Base æ æ³è®¿é®
ç°è±¡ï¼
- 使ç¨
useUAT: falseå建 Base åºç¨ - åå»ºè æ¾ç¤ºä¸º”é£ä¹¦å©æ”
- å½åç¨æ·æ æ³ç´æ¥è®¿é®ï¼æéåé
è§£å³æ¹æ¡ï¼
useUAT: true # â
ç¨æ·èº«ä»½ - å建è
=å½åç¨æ·ï¼å¯ç´æ¥è®¿é®
useUAT: false # â ç§æ·èº«ä»½ - éè¦é¢å¤è®¾ç½®æé
é®é¢2: API æ·»å æé失败
ç°è±¡ï¼
- éè¿
drive_v1_permissionMember_createæ·»å é®ç®±æé - é误ç ï¼1063001 (Invalid parameter)
- æ æ³éè¿ API æäºå¤é¨ç¨æ·è®¿é®æé
æ ¹æ¬åå ï¼
- ç§æ·èº«ä»½å建çèµæºï¼API æéæ·»å æéå¶
- å¤é¨é®ç®±æéå¯è½ä¸æ¯æéè¿ API æä½
æä½³å®è·µï¼
- ä¼å
使ç¨ç¨æ·èº«ä»½ï¼
useUAT: trueï¼åå»ºèµæº - å建è
èªå¨è·å¾
full_accessæé - é¿å åç»å¤æçæéé ç½®
é®é¢3: åæ®µç±»åä¸å¹é
ç°è±¡ï¼
- Bitable æ¥è¯¢æ¶ “field not found”
- 使ç¨äºé误çåæ®µ ID ç±»å
è§£å³æ¹æ¡ï¼
# ä» URL è·åæ£ç¡®ç IDï¼appxxxxx å tblxxxxx æ¯éè¦æ¿æ¢çå ä½ç¬¦ï¼
https://xxx.feishu.cn/base/appxxxxx?table=tblxxxxx
âapp_token âtable_id
# æ¥è¯¢åå
è·ååæ®µåè¡¨ç¡®è®¤åæ®µå
å·¥å
·: mcp__lark-mcp__bitable_v1_appTableField_list
é®é¢4: 群主身份é®é¢
ç°è±¡ï¼
- 使ç¨
useUAT: trueåå»ºç¾¤ç» - å建è 仿¾ç¤ºä¸ºåºç¨æºå¨äººï¼app_idï¼
- æ¶æ¯åéè
sender_type为 “app”ï¼ä¸æ¯ “user”
æ ¹æ¬åå ï¼
useUAT: trueåªæ¯ä½¿ç¨ç¨æ·æé/令çæä½- ç³»ç»è®°å½ç”åå»ºè ”å§ç»æ¯åºç¨æ¬èº«
- è¿æ¯é£ä¹¦ API ç设计æºå¶
è§£å³æ¹æ¡ï¼
# å¿
é¡»æç¡®æå® owner_id
å·¥å
·: mcp__lark-mcp__im_v1_chat_create
data:
owner_id: "ou_xxxxx" # æå®ç¨æ·ä¸ºç¾¤ä¸»
user_id_list: ["ou_xxxxx"]
注æï¼ ä¸æå® owner_id æ¶ï¼ç¾¤ä¸»é»è®¤ä¸ºåºç¨æºå¨äººã