Token导航 LogoToken导航TokenDH.com
Lark Office MCP logo
文档知识未说明官方级别未说明来源级核验

Lark Office MCP

MCP Server

Lark MCP Server 是一个允许 Claude 直接操作 Lark 文件、Wiki 和待办事项的服务。

工具数

55

提示词数

0

GitHub Stars

3

资源数

0
文档处理TypeScriptClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

YSzEthan

提供方

YSzEthan

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

Lark MCP Server

Lark (飛書) MCP Server - 讓 Claude 直接操作 Lark 文件、Wiki、待辦事項。

最近更新 (v3.34.0 ~ v3.35.0)

v3.35.0 — 程式碼品質重構與 Bug 修復

重構內部實作、移除 dead code、修正 todo_create 時間戳 bug。

  • Bug 修復todo_createdue_time 時間戳從毫秒改為秒(Lark API 要求秒級 Unix timestamp)
  • 重構:抽出 getAppAccessToken() 消除重複的 app token 取得邏輯
  • 重構:抽出 deleteBlockRange() 統一 5 處 inline batch_delete 呼叫
  • 簡化getDocumentRootBlockId 直接回傳 document ID(root block ID 等於 document ID)
  • 清理:移除未使用的 PaginationSchemawithRetry、dead wiki fallback 程式碼
  • 清理:移除不必要的 exportRetryOptionsgetErrorInfo
  • 改善tasklist_tasks limit 預設改為 10(每個任務需額外 API 呼叫)
  • 改善drive_list 遞迴搜尋新增 maxApiCalls 限制防止過量 API 呼叫

v3.34.0 — 容器 block _children 支援

寫入工具新增 _children 欄位,支援 Callout、Quote 等容器 block 自動建立父 block 並遞迴插入子 block。


基本資訊

項目
名稱lark-mcp-server
版本3.35.0
執行環境Bun
認證方式OAuth 2.0 (User Access Token)
Token 儲存~/.lark-token.json

安裝

bun install

Claude Code 設定

~/.claude/settings.json 中加入:

{
  "mcpServers": {
    "lark": {
      "command": "bun",
      "args": ["run", "/path/to/lark-mcp-server/src/index.ts"],
      "env": {
        "LARK_APP_ID": "your_app_id",
        "LARK_APP_SECRET": "your_app_secret",
        "LARK_CALLBACK_PORT": "9876"
      }
    }
  }
}

授權

使用任何工具時,若 Token 不存在或已過期,會自動開啟瀏覽器並啟動 OAuth callback server。只需在瀏覽器點「同意」即可完成授權。

Callback port 由環境變數 LARK_CALLBACK_PORT 設定(必填),固定使用該 port。若被佔用會自動殺掉佔用的 process 後重新綁定。

也可手動執行 lark_auth_url 觸發授權流程。lark_auth 保留作為手動備用。


工具列表

認證工具

工具說明
lark_auth_url自動完成 OAuth 授權(開瀏覽器 + callback server)
lark_auth手動提交授權碼(備用)
user_me取得當前用戶資訊(open_id、name、email)
user_get查詢指定用戶資訊
user_list列出部門成員

Wiki 工具

工具說明
wiki_spaces列出所有 Wiki 空間
wiki_list_nodes列出 Wiki 空間的節點
wiki_read讀取 Wiki 內容(回傳原始 blocks)
wiki_update更新 Wiki 內容(範圍更新或清空重寫)
wiki_prepend在 Wiki 頂部插入內容
wiki_append在 Wiki 底部追加內容
wiki_insert_blocks在指定位置插入內容
wiki_delete_blocks刪除指定範圍的區塊
wiki_create_node建立新節點(頁面)
wiki_move_node移動節點(支援跨空間)

文件工具

工具說明
doc_create建立新文件
doc_read讀取文件(回傳原始 blocks)
blocks_to_markdown將 blocks 轉換為 Markdown(顯示用)
doc_prepend在文件頂部插入內容
doc_append在文件底部追加內容
doc_update更新文件內容(範圍更新或清空重寫)
doc_delete刪除文件
doc_move移動檔案到指定資料夾
doc_insert_blocks在指定位置插入內容
doc_delete_blocks刪除指定範圍的區塊
doc_move_blocks移動區塊到指定位置
doc_search_blocks搜尋包含關鍵字的區塊
doc_indent_block區塊縮排/取消縮排(indent/outdent)
doc_batch_update_blocks批次更新多個 block 的文字內容(適合填表格)
drive_list列出雲端硬碟檔案
drive_recent列出最近存取的檔案
lark_search全域搜尋(支援我的文件資料庫、共享空間)

待辦事項工具

工具說明
todo_list列出待辦事項
todo_create建立待辦事項
todo_search搜尋待辦事項
todo_update更新待辦事項
todo_add_members新增任務負責人
todo_remove_members移除任務負責人
task_complete完成任務或子任務
task_delete刪除任務或子任務

任務清單工具

工具說明
tasklist_list列出所有任務清單
tasklist_create建立任務清單
tasklist_get取得任務清單詳情
tasklist_update更新任務清單名稱
tasklist_delete刪除任務清單
tasklist_add_task將待辦加入清單(可指定分組)
tasklist_remove_task從清單移除待辦
tasklist_tasks列出清單中的待辦(含時間欄位)

子任務工具

工具說明
subtask_create建立子任務(支援負責人、開始/截止時間)
subtask_list列出父任務的子任務
subtask_update更新子任務(摘要、負責人、時間)
注意:子任務的完成和刪除請使用 task_completetask_delete

任務分組工具

工具說明
section_list列出任務分組(「我負責的」或任務清單中的分組)
section_tasks列出分組中的任務(支援過濾未完成)
section_create建立分組(Tasklist 或「我負責的」)
section_delete刪除分組
注意:Lark API 限制,只有 Tasklist 中的分組支援透過 tasklist_add_task 加入任務。「我負責的」中的分組只能透過 UI 操作移動任務。

通用參數

所有列表/搜尋工具皆支援以下可選參數:

參數類型預設值說明
limitnumber20(list)/ 10(search)最大結果數 (1-100)
offsetnumber0分頁偏移量
response_formatstring"json"輸出格式(僅列表/搜尋工具支援)
讀取工具說明wiki_readdoc_read 回傳原始 blocks。需要顯示給用戶時,使用 blocks_to_markdown 轉換。
MCP String Coercion:所有非 string 參數(number / boolean / array)皆支援自動從 string 轉型。MCP protocol 傳參時所有值可能為 string,Schema 會自動處理:"3"3"true"true"[{...}]"[{...}]。呼叫端無需手動轉型。

工具參數詳細說明

認證工具

lark_auth

參數類型必填說明
codestring從授權頁面取得的授權碼

user_me

無參數。回傳當前用戶的 open_id、user_id、name、email、mobile。

user_get

參數類型必填說明
user_idstring用戶 ID(open_id 或 user_id)

user_list

參數類型必填說明
department_idstring部門 ID(不填列出根部門 "0")

Wiki 工具

wiki_list_nodes

參數類型必填說明
space_idstringWiki 空間 ID
parent_node_tokenstring父節點 Token(不填列出根節點)

wiki_read

參數類型必填說明
wiki_tokenstringWiki 節點 Token

wiki_update

參數類型必填說明
wiki_tokenstringWiki 節點 Token
blocksarrayLark Block JSON 陣列
start_indexnumber起始位置(範圍更新時使用)
end_indexnumber結束位置(範圍更新時使用)

wiki_prepend / wiki_append

參數類型必填說明
wiki_tokenstringWiki 節點 Token
blocksarrayLark Block JSON 陣列

wiki_insert_blocks

參數類型必填說明
wiki_tokenstringWiki 節點 Token
blocksarrayLark Block JSON 陣列
indexnumber插入位置(預設 0)

wiki_delete_blocks

參數類型必填說明
wiki_tokenstringWiki 節點 Token
start_indexnumber起始位置(從 0 開始)
end_indexnumber結束位置(不包含)

wiki_create_node

參數類型必填說明
space_idstringWiki 空間 ID
titlestring節點標題(最多 200 字元)
parent_node_tokenstring父節點 Token(不填則建立在根目錄)
obj_typestring節點類型:doc/docx/sheet/bitable/mindnote/file(預設 docx)
response_formatstring輸出格式:"json" 或 "markdown"(預設 json)

wiki_move_node

參數類型必填說明
space_idstring節點當前所在的 Wiki 空間 ID
node_tokenstring要移動的節點 Token
target_parent_tokenstring目標父節點 Token(不填則移到空間根目錄)
target_space_idstring目標空間 ID(跨空間移動時使用)
功能說明:支援同空間或跨空間移動,子節點會一併移動。需要 wiki:node:move 權限。

文件工具

doc_create

參數類型必填說明
folder_tokenstring目標資料夾 Token
titlestring文件標題
blocksarray初始 Lark Block JSON 陣列

doc_read

參數類型必填說明
document_idstring文件 ID

doc_prepend

參數類型必填說明
document_idstring文件 ID
blocksarrayLark Block JSON 陣列

doc_append

參數類型必填說明
document_idstring文件 ID
blocksarrayLark Block JSON 陣列

doc_update

參數類型必填說明
document_idstring文件 ID
blocksarrayLark Block JSON 陣列
start_indexnumber起始位置(範圍更新時使用)
end_indexnumber結束位置(範圍更新時使用)

doc_delete

參數類型必填說明
document_idstring文件 ID

doc_move

參數類型必填說明
file_tokenstring檔案 Token
folder_tokenstring目標資料夾 Token
typestring檔案類型:doc/docx/sheet/bitable/file/folder(預設 docx)
response_formatstring輸出格式:"json" 或 "markdown"(預設 json)

doc_insert_blocks

參數類型必填說明
document_idstring文件 ID
blocksarrayLark Block JSON 陣列
indexnumber插入位置(預設 0)

doc_delete_blocks

參數類型必填說明
document_idstring文件 ID
start_indexnumber起始位置(從 0 開始)
end_indexnumber結束位置(不包含)

doc_move_blocks

參數類型必填說明
document_idstring文件 ID
start_indexnumber要移動的起始位置(從 0 開始)
end_indexnumber要移動的結束位置(不包含)
target_indexnumber目標位置(從 0 開始)

doc_search_blocks

參數類型必填說明
document_idstring文件 ID
keywordstring搜尋關鍵字
case_sensitiveboolean區分大小寫(預設 false)

doc_indent_block

參數類型必填說明
document_idstring文件 ID
block_idstring要縮排的 Block ID(從 doc_read 取得)
directionstringindent(移到前一個 sibling 底下)或 outdent(提升到 grandparent 層級)
注意:此為破壞性操作(delete + re-insert),含子節點的 block 會整棵子樹一併搬移。

doc_batch_update_blocks

參數類型必填說明
document_idstring文件 ID
requestsarray更新請求陣列(最多 100 項)
requests[].block_idstring要更新的 Block ID(從 doc_read 取得)
requests[].update_text_elementsobject文字元素更新內容
requests[].update_text_elements.elementsarray文字元素陣列
典型流程doc_read → 找到 table block → 取得 cell children 的 text block_id → doc_batch_update_blocks 一次更新多個 cell。

drive_list

參數類型必填說明
folder_tokenstring資料夾 Token(不填列出根目錄)

drive_recent

無必填參數。

blocks_to_markdown

參數類型必填說明
blocksarray從 wiki_read 或 doc_read 取得的 blocks 陣列

lark_search

參數類型必填說明
querystring搜尋關鍵字
doc_typestring文件類型(doc/docx/sheet/bitable/wiki/file)
folder_tokenstring限定搜尋的資料夾
wiki_space_idstring限定搜尋的 Wiki 空間
使用 /suite/docs-api/search/object API,支援搜尋所有可存取文件(包括我的文件資料庫、共享空間)。

待辦事項工具

todo_list

參數類型必填說明
completedboolean只列出已完成(預設 false)

todo_create

參數類型必填說明
summarystring待辦摘要
descriptionstring詳細描述
due_timestring截止時間(ISO 8601)

todo_search

參數類型必填說明
querystring搜尋關鍵字
completedboolean只搜尋已完成

task_complete / task_delete

參數類型必填說明
task_idstring任務或子任務 ID

todo_update

參數類型必填說明
task_idstring待辦事項 ID
summarystring新摘要
descriptionstring新描述
start_timestring開始時間(ISO 8601 格式)
due_timestring新截止時間(ISO 8601 格式)

todo_add_members / todo_remove_members

參數類型必填說明
task_idstring任務 ID
membersstring[]用戶 ID 清單(open_id 或 user_id)

任務清單工具

tasklist_create

參數類型必填說明
namestring清單名稱

tasklist_update

參數類型必填說明
tasklist_idstring任務清單 ID
namestring新清單名稱

tasklist_get / tasklist_delete / tasklist_tasks

參數類型必填說明
tasklist_idstring任務清單 ID
completedboolean過濾完成狀態(僅 tasklist_tasks

tasklist_add_task

參數類型必填說明
tasklist_idstring任務清單 ID
task_idstring待辦事項 ID
section_guidstring分組 GUID(不填則加入預設分組)
提示:若任務已在該清單中,再次呼叫並指定不同的 section_guid 可直接將任務移至新分組,無需先移除。

tasklist_remove_task

參數類型必填說明
tasklist_idstring任務清單 ID
task_idstring待辦事項 ID

子任務工具

subtask_create

參數類型必填說明
parent_task_idstring父任務 ID
summarystring子任務摘要
membersstring[]負責人 ID 清單(open_id 或 user_id)
start_timestring開始時間(ISO 8601 格式)
due_timestring截止時間(ISO 8601 格式)

subtask_list

參數類型必填說明
parent_task_idstring父任務 ID

subtask_update

參數類型必填說明
task_idstring子任務 ID
summarystring新摘要
membersstring[]新負責人 ID 清單
start_timestring新開始時間(ISO 8601 格式)
due_timestring新截止時間(ISO 8601 格式)

任務分組工具

section_list

參數類型必填說明
resource_typestring資源類型:my_tasks(我負責的)或 tasklist(清單),預設 my_tasks
resource_idstring條件任務清單 GUID(當 resource_type 為 tasklist 時必填)

section_tasks

參數類型必填說明
section_guidstring分組 GUID
completedboolean過濾完成狀態(false 只取未完成)

section_create

參數類型必填說明
namestring分組名稱(最多 100 字元)
resource_typestring資源類型:my_taskstasklist
resource_idstring條件任務清單 GUID(當 resource_type 為 tasklist 時必填)

section_delete

參數類型必填說明
section_guidstring分組 GUID

Lark Block JSON 格式

寫入工具(doc_create, doc_prepend, doc_append, doc_update, doc_insert_blocks, wiki_prepend, wiki_append, wiki_update, wiki_insert_blocks)接受 Lark Block JSON 陣列。

常用 Block 結構

文字段落:

{ "block_type": 2, "text": { "elements": [{ "text_run": { "content": "Hello" } }] } }

標題(H1-H9):

{ "block_type": 3, "heading1": { "elements": [{ "text_run": { "content": "Title" } }] } }

無序列表:

{ "block_type": 12, "bullet": { "elements": [{ "text_run": { "content": "Item" } }] } }

有序列表:

{ "block_type": 13, "ordered": { "elements": [{ "text_run": { "content": "Item" } }] } }

待辦事項:

{ "block_type": 17, "todo": { "elements": [{ "text_run": { "content": "Task" } }], "style": { "done": false } } }

程式碼區塊:

{ "block_type": 14, "code": { "elements": [{ "text_run": { "content": "code" } }], "language": 40 } }

引用:

{ "block_type": 15, "quote": { "elements": [{ "text_run": { "content": "quote" } }] } }

分隔線:

{ "block_type": 22, "divider": {} }

Block Type 對照表

Type名稱屬性名
2Texttext
3-11Heading1-9heading1-heading9
12Bulletbullet
13Orderedordered
14Codecode
15Quotequote
17Todotodo
22Dividerdivider
31Tabletable

Text Element 結構(支援樣式)

{
  "text_run": {
    "content": "文字內容",
    "text_element_style": {
      "bold": true,
      "italic": false,
      "strikethrough": false,
      "inline_code": false
    }
  }
}

讀取與顯示

doc_readwiki_read 回傳原始 blocks。使用 blocks_to_markdown 可將 blocks 轉換為 Markdown 格式顯示給用戶。

表格支援

讀取:支援兩種表格類型:

類型Block Type說明
原生表格 (Table)31Lark 文件中的原生表格
嵌入多維表格 (Sheet)30嵌入的 Bitable 表格(需 bitable:app 權限)

所需權限 (Scopes)

在 Lark 開發者後台設定以下權限:

  • wiki:wiki - Wiki 讀寫
  • wiki:node:move - 移動 Wiki 節點
  • drive:drive - 雲端硬碟(含文件操作、搜尋)
  • bitable:app - 多維表格讀取(嵌入的 Sheet 表格)
  • task:task:read - 讀取待辦事項
  • task:task:write - 寫入待辦事項
  • task:tasklist:read - 讀取任務清單
  • task:tasklist:write - 寫入任務清單
  • task:section:write - 任務分組(取得「我負責的」任務)
  • contact:contact.base:readonly - 列出部門成員
  • contact:user.base:readonly - 讀取用戶基本資訊
  • contact:user.email:readonly - 讀取用戶 email
  • offline_access - 離線存取(Refresh Token)

專案結構

src/
├── index.ts              # MCP Server 入口
├── constants.ts          # 常數與設定
├── types.ts              # TypeScript 型別定義
├── schemas/              # Zod 驗證 Schema
│   ├── common.ts
│   ├── auth.ts
│   ├── wiki.ts
│   ├── doc.ts
│   └── todo.ts
├── services/
│   └── lark-client.ts    # Lark API 客戶端
├── tools/
│   ├── auth.ts           # 認證工具
│   ├── wiki.ts           # Wiki 工具
│   ├── doc.ts            # 文件工具
│   └── todo.ts           # 待辦事項工具
└── utils/
    ├── errors.ts         # 錯誤處理與錯誤碼定義
    ├── rate-limiter.ts   # API 請求頻率限制
    ├── retry.ts          # 重試機制(指數退避)
    ├── markdown.ts       # Markdown 與 Lark Block 轉換
    ├── oauth-callback.ts # OAuth Callback Server(自動授權)
    └── response.ts       # 回應格式化工具

API 穩定性機制

Rate Limiting

自動限制 API 請求頻率,防止觸發 Lark API 限流(錯誤碼 99991400):

類型限制說明
全域限流3 QPS所有 API 請求
文件級限流3 QPS/文件同一文件的編輯操作

自動重試

遇到可恢復錯誤時自動重試(指數退避):

設定
最大重試次數3 次
基礎延遲1 秒
最大延遲10 秒

可重試的錯誤

  • 99991400 - Rate Limit
  • 99991663 / 99991665 - Token 失效(自動刷新)
  • 1770010 - 並發編輯衝突

結構化錯誤訊息

錯誤回應包含詳細資訊與建議:

Error: API request failed

**Error Code**: 99991668
**Description**: Resource access denied
**Message**: no permission to access resource
**Endpoint**: /wiki/v2/spaces/xxx
**Suggestion**: Ensure you have permission to access this resource.

更新日誌

v3.35.0

程式碼品質重構與 Bug 修復 — 重構內部實作、修正 bug、移除 dead code。

  • todo.tsdue_time 時間戳修正 getTime()Math.floor(getTime() / 1000)(毫秒→秒)
  • lark-client.ts:抽出 getAppAccessToken() 共用函數,消除 exchangeCodeForToken / refreshAccessToken 重複邏輯
  • lark-client.ts:抽出 deleteBlockRange() 共用函數,統一 doc.ts / wiki.ts 共 8 處 inline 呼叫
  • lark-client.tsgetDocumentRootBlockId 簡化為直接回傳 document ID
  • lark-client.ts:移除 fetchUserTenantDomain 中無作用的 Wiki 空間 fallback 程式碼
  • lark-client.ts:移除 existsSync import,改用 try/catch 處理
  • schemas/common.ts:移除未使用的 PaginationSchema / PaginationInput
  • schemas/todo.tstasklist_tasks limit 預設 20 → 10,最大 50
  • tools/wiki.tsdrive_list 遞迴搜尋新增 maxApiCalls(50)限制
  • utils/retry.ts:移除未使用的 withRetry 函數及 RetryOptionsexport
  • utils/errors.ts:移除 getErrorInfoexport

v3.34.0

容器 block _children 支援 — 寫入工具新增 _children 欄位,支援 Callout、Quote 等容器 block 自動建立父 block 並遞迴插入子 block。

  • lark-client.tsinsertBlocks 新增 _children 分支,遇到時先 flush、建立父 block、再遞迴插入子 block
  • tools/doc.tsdoc_createdoc_updatedoc_insert_blocks 的 description 補充 _children 用法
  • tools/doc.tshasTablehasNestedBlocks,語意更準確

v3.33.0

tasklist_tasks 新增 completed 過濾 — 新增 completed (boolean, optional) 參數,可依完成狀態過濾清單中的任務。

  • schemas/todo.tsTasklistTasksSchema 加入 completed: coerceBoolean.optional()
  • tools/todo.ts:handler 將 completed 傳入 API request params

v3.32.0

新增 doc_indent_block 工具 — 支援文件區塊縮排/取消縮排,透過 delete + re-insert 遞迴搬移整棵 block tree。

  • lark-client.ts:新增 insertSingleBlock() helper(回傳新 block ID)
  • schemas/doc.ts:新增 DocIndentBlockSchema
  • tools/doc.ts:新增 doc_indent_block tool

v3.31.0

RateLimiter 改為 queue-based — 修復 tasklist_tasks 大量任務時約 30% 回傳 (failed to fetch) 的問題。

  • rate-limiter.tsRateLimiter 從 timestamp-based 改為 promise-chain-based,並發呼叫自動排隊依序執行
  • constants.tsRATE_LIMIT_INTERVAL_MS 350 → 340ms

v3.30.0

新增 MCP String Coercion Helpers — 解決 Claude Code 透過 MCP protocol 呼叫工具時,所有參數值皆為 string 導致 Zod strict schema 驗證失敗(Expected array, received string 等)的問題。

修改內容:

  • common.ts:新增 coerceNumbercoerceBooleancoerceArray(itemSchema) 三個 preprocess helpers,ListPaginationSchema / SearchPaginationSchemalimitoffset 改用 coerceNumber
  • doc.tsblockscoerceArray()start_index / end_index / target_index / indexcoerceNumber.pipe()case_sensitivecoerceBoolean
  • wiki.tsblockscoerceArray()start_index / end_index / indexcoerceNumber.pipe()
  • todo.tsmemberscoerceArray(z.string())completedcoerceBooleanlimit(SectionList / SectionTasks)→ coerceNumber.pipe()

使用重點:

  • 呼叫端傳入 "3"3 皆可,Schema 自動轉為正確型別
  • array 參數可傳 JSON string(如 "[{\"block_type\":2}]")或原生 array,兩者皆接受
  • boolean 參數接受 "true" / "false" string 或原生 true / false
  • 轉型失敗時仍會拋出原始 Zod validation error,不會靜默吞錯
  • 僅影響 input schema,output schema 不變

License

MIT

目录标签

目录标签

文档处理TypeScriptClaudeLarkAPI本地部署文档管理任务管理Wiki操作自动化工具

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

55

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明oauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP