MCP server for reading and editing Feishu (Lark) documents, spreadsheets, multi-dimensional tables, and cloud drive files with safety guardrails
Strong schema definitions with Zod validation, clear tool naming (verb_noun pattern), and comprehensive parameter constraints. All 8 tools have descriptions and input schemas. Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present and correct. However, descriptions are brief (avg ~60 chars, below the 194-char baseline), lack dependency hints, and some parameter descriptions are minimal. Error handling redacts secrets but lacks recovery guidance. Output schema is not documented.
在已授权知识库节点或共享文件夹中新建 Docx 文档。
从本地备份新建 [Codex恢复] 草稿,不覆盖当前文档。
按块替换或插入段落。服务会校验修订、范围并在写入前备份。
列出指定飞书文档在本机生成的修改前快照。
遍历已授权共享文件夹;没有配置云盘根目录时会明确提示。
列出已授权知识库根节点或指定子节点下的页面。
读取已授权页面、电子表格、多维表格或文件;新版文档返回可审计的块结构。
在已授权知识库和共享云盘内按标题与正文搜索。
Tool descriptions are too brief (avg 60 chars vs 194-char baseline). Lack context on WHEN to use each tool and prerequisites. E.g., feishu_list_wiki: '列出已授权知识库根节点或指定子节点下的页面。' does not explain when to call it vs feishu_search, or that it requires prior authorization.
Output schema not documented. Tools return JSON via toToolResult() but LLMs cannot see what fields to expect. feishu_read, feishu_search, feishu_list_* should document their response structure (e.g., 'Returns {items: [...], cursor?: string, total?: number}').
Error handling redacts secrets but provides no recovery guidance. redactError() returns a truncated message with no actionable next steps. E.g., 'Invalid revision_id' should suggest 'Call feishu_read() to fetch the current revision_id first.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2025-06-18+ | v2 |
Parameter descriptions lack format/constraint details. E.g., 'parent' is described as '飞书页面、文档或文件夹链接,也可以是已授权 token' but does not specify: what format is a valid link? What is a token format? How does the tool distinguish between them?
No dry-run or confirmation step for destructive operations. feishu_edit and feishu_create modify state but lack a 'dry_run' parameter or confirmation pattern to prevent accidental data loss.