Skip to main content
Glama

feishu-mcp

飞书(Lark)MCP 服务:通过 MCP 接口对飞书 文档 / 知识库文档 / 电子表格 / 多维表格 进行读取、写入与搜索。

本质是一个薄连接器:MCP 客户端(ZCode / Claude Code / Cursor 等)通过 MCP 协议发来指令,本服务调用 飞书官方 lark-cli 执行,并把结果整理为 AI 友好的结构化 JSON 返回。认证完全复用 lark-cli 的 OAuth 登录态,本服务自身不接触任何飞书凭证。

支持两种传输模式:

  • stdio(默认):本地使用,AI 工具直接拉起进程;

  • HTTP(S):云服务器部署,Streamable HTTP + Bearer Token 鉴权,路径 /mcp

工具清单(9 个)

工具

说明

read_feishu_doc

读文档(docx/wiki 链接或 token),全文 / 大纲 / 章节 / 关键词定位,Markdown 输出

write_feishu_doc

写文档:create 新建 / append 文末追加 / replace 整篇覆盖 / replace_text 精确替换

read_feishu_sheet

读电子表格:不传子表返回子表清单;按区域读 CSV,detail=cells 读公式/样式

write_feishu_sheet

写电子表格:overwrite 区域覆盖 / append 追加末行 / set_cell 写值或公式

read_feishu_base_records

读多维表格记录:结构化筛选、排序、字段投影、分页

write_feishu_base_records

写多维表格记录:批量新增 / 按 record_id 更新(单次 ≤200 条)

describe_feishu_base

列出多维表格的数据表与字段 schema(读写记录前先调用)

search_feishu_docs

搜索我有权限的云空间对象(关键词 ≤30 字符,支持 intitle:OR-排除

check_feishu_auth

检查 lark-cli 安装与登录状态,未登录时返回修复指引

推荐工作流search_feishu_docs 找到文档 → 读写;多维表格先 describe_feishu_basetable_id 和字段名 → 再读写记录。

Related MCP server: lark-mcp

前置条件

  1. Node.js ≥ 20

  2. 安装并登录 lark-cli(一次性,在运行本服务的机器上):

npx @larksuite/cli@latest install   # 或 npm i -g @larksuite/cli
lark-cli config init                # 配置应用凭证(交互式)
lark-cli auth login --recommend     # 浏览器授权,按业务域授权也可:
                                    # lark-cli auth login --domain docs,drive,base,sheets
lark-cli auth status                # 确认登录态

本地使用(stdio)

git clone <repo> feishu_mcp && cd feishu_mcp
npm install && npm run build

MCP 客户端配置(以 ZCode / Claude Code 为例):

{
  "mcpServers": {
    "feishu": {
      "command": "node",
      "args": ["D:/projects/feishu_mcp/dist/index.js"]
    }
  }
}

Windows 提示:若提示找不到 lark-cli,把 LARK_CLI_PATH 设为 lark-cli.exe 的完整路径(通常在 npm config get prefix 下的 node_modules/@larksuite/cli/bin/lark-cli.exe)。

云服务器部署(HTTP(S) 模式)

node dist/index.js   # 需要以下环境变量

环境变量

默认

说明

MCP_TRANSPORT

stdio

http 启动 HTTP(S) 服务

MCP_HTTP_TOKEN

HTTP 模式必填,Bearer token,逗号分隔可配多个;未配置拒绝启动

MCP_HTTP_HOST

127.0.0.1

反代场景绑 127.0.0.1,直连绑 0.0.0.0

MCP_HTTP_PORT

3000

监听端口,端点为 /mcp

MCP_HTTP_TLS_CERT / MCP_HTTP_TLS_KEY

同时配置则以 HTTPS 直启;不配则纯 HTTP(由前置反代终止 TLS)

LARK_CLI_PATH

lark-cli

lark-cli 可执行文件路径

LARK_IDENTITY

user

调用身份 user / bot

LARK_PROFILE

多应用 profile 时注入 --profile

LARK_TIMEOUT_MS

120000

单次 lark-cli 调用超时

FEISHU_MCP_CONFIG

~/.feishu-mcp/config.json

JSON 配置文件路径(环境变量优先于文件)

HTTPS 的两条路径

  1. nginx 反代终止 TLS(推荐):服务绑 127.0.0.1:3000,nginx 挂证书转发,见 deploy/nginx-feishu-mcp.conf.sample

  2. 服务内置 HTTPS:配置 MCP_HTTP_TLS_CERT + MCP_HTTP_TLS_KEY 后服务直接以 https:// 启动。

客户端配置示例:

{
  "mcpServers": {
    "feishu": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "headers": { "Authorization": "Bearer <MCP_HTTP_TOKEN 的值>" }
    }
  }
}

不支持自定义请求头的客户端(如 ChatGPT 网页版"连接器"):把 token 放到 URL 查询参数里,认证方式选"无身份验证":

https://mcp.example.com/mcp?token=<MCP_HTTP_TOKEN 的值>

注意:URL 方式的 token 可能出现在浏览器历史/代理日志中,仅在此类受限客户端下使用;如泄露可在服务器改 MCP_HTTP_TOKEN 后重启服务轮换。服务同时实现了 RFC 9728 /.well-known/oauth-protected-resource 元数据端点,规范客户端在 401 时不会误走 OAuth 自动发现。

方式 A:Docker

# 1. 修改 docker-compose.yml 中的 MCP_HTTP_TOKEN
docker compose up -d --build

# 2. 首次登录(一次性):容器内无系统密钥链,lark-cli 回落为文件存储(挂载在 volume 中持久化)
docker exec -it feishu-mcp lark-cli config init
docker exec -it feishu-mcp lark-cli auth login --domain docs,drive,base,sheets
# 按提示在本地浏览器打开授权链接确认即可(无需在服务器开浏览器)

# 3. 重启后登录态仍在(凭证已持久化到 volume)
docker compose restart

方式 B:systemd(裸机)

# 构建产物上传到 /opt/feishu-mcp(或服务器上 git clone 后 npm install && npm run build)
sudo cp deploy/feishu-mcp.service /etc/systemd/system/
sudo cp deploy/feishu-mcp.env /opt/feishu-mcp/deploy/ && sudo chmod 600 /opt/feishu-mcp/deploy/feishu-mcp.env
# 编辑 env 中的 MCP_HTTP_TOKEN 等配置
sudo systemctl daemon-reload && sudo systemctl enable --now feishu-mcp

服务器上登录(一次性):

sudo -u <运行用户> lark-cli config init
sudo -u <运行用户> lark-cli auth login --domain docs,drive,base,sheets
# 无桌面环境时如连接中断,可用官方断点续登:
#   lark-cli auth login --domain docs --no-wait   # 记下 device code 与 URL
#   lark-cli auth login --device-code <DEVICE_CODE>

验证

# stdio 冒烟测试(工具清单 + 登录态 + 真实搜索)
node scripts/smoke-stdio.mjs all

# 写读全链路校准(会在云空间创建"【MCP校准-可删除】"测试文件)
node scripts/calibrate.mjs docs    # 文档 create→read→append→replace_text→overwrite
node scripts/calibrate.mjs sheet   # 电子表格读取
node scripts/calibrate.mjs base    # 多维表格 describe + 读记录
BASE_TOKEN=<token> node scripts/calibrate.mjs basewrite      # 多维表格写记录
SHEET_TOKEN=<token> node scripts/calibrate.mjs sheetwrite    # 电子表格写

注意事项

  • 风险提示:授权后本服务以你的用户身份读写飞书,写入操作(尤其 replace 整篇覆盖)不可自动回滚,请在可信网络与可信客户端环境下使用。

  • 授权自愈:飞书用户授权失效(长期闲置 token 过期、主动撤销授权)时,工具报错信息会自动附带一个设备码授权链接(10 分钟内有效),在浏览器打开确认后服务后台自动完成登录,无需登录服务器check_feishu_auth 在授权失效时也会直接返回 login_url 字段。同一时间只保留一个授权流程,链接 9 分钟内复用。

  • 写入可见性:飞书写入后立即读取可能有毫秒级延迟(最终一致)。

  • 电子表格 append:目标子表为空时自动从 A1 写入;非空时追加到数据末行。

  • 多维表格 token:支持 /base/ URL、知识库 /wiki/ URL(自动解析节点)或裸 token。

  • lark-cli 升级:lark-cli update(官方发布较频繁,schema 修正优先用新版)。

Available Tools

9 tools
check_feishu_auth检查飞书登录状态A

检查 lark-cli 是否已安装、当前登录状态与可用身份(user/bot)。读写报权限错误时先调用本工具排查。未登录时按返回的指引让用户在部署机上执行登录命令。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses that the tool only checks installation/login/identity and does not perform the login itself (the user must execute the command), which is valuable. It stops short of explicitly stating the tool has no side effects or describing the exact response shape, but it covers the principal behavioral trait.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no filler: the first states what is checked, the second states when to invoke it, and the third states the follow-up action. Every sentence earns its place and the key purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless diagnostic tool with no output schema, the description is complete: it specifies the checked state, the triggering error condition, and the guided next step. Nothing essential is missing for an agent to decide to call it and act on the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and 100% schema coverage, so there is nothing for the description to add about parameter meaning. The baseline of 4 applies because no parameter documentation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('检查'/check) and names exact resources: whether lark-cli is installed, current login status, and available identity (user/bot). This clearly distinguishes the tool from sibling read/write tools for docs, sheets, and bases, which perform data operations rather than auth diagnostics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides an explicit trigger condition: when read/write operations report permission errors, call this tool first to troubleshoot. It also tells the agent what to do if not logged in (follow returned guidance and have the user run login on the deployment machine), leaving no ambiguity about when and how to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_feishu_base查看多维表格结构A

列出飞书多维表格(bitable)的所有数据表及每张表的字段 schema(字段名/类型/可选值),用于读写记录前发现 table_id、准确字段名和字段类型约定(如单选字段的合法选项)。base_token 支持多维表格 URL、wiki 知识库 URL 或裸 token。

ParametersJSON Schema
NameRequiredDescriptionDefault
base_tokenYes多维表格 token 或 URL(支持 /base/、/wiki/ 链接)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full behavioral disclosure burden. It characterizes the tool as a listing/inspection operation ('列出', '查看'), which implies read-only behavior, and it documents accepted input forms. However, it does not explicitly state that it makes no modifications, mention auth prerequisites, or describe rate limits, errors, or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two purposeful sentences: the first states the action and output, the second states accepted input formats. Every sentence earns its place, with no filler or redundant detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one required parameter, full schema coverage, no output schema, and no annotations, the description gives a clear enough output picture (table_id, field names, types, options) and the supported input variants. It falls short of 5 only because it does not explicitly describe the return structure or state that the operation is read-only.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's explanation of base_token formats ('多维表格 URL、wiki 知识库 URL 或裸 token') largely mirrors the schema's '/base/、/wiki/ 链接' wording and adds only marginal explicitness about bare tokens.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('列出'), the resource ('飞书多维表格(bitable)'), and the deliverable ('所有数据表及每张表的字段 schema'), far beyond a tautology. It also implicitly distinguishes itself from siblings like read_feishu_base_records by focusing on schema discovery rather than record read/write.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says this tool is for use '读写记录前' to discover table_id, field names, and field type conventions, which is a clear trigger condition. It does not explicitly rule out alternatives or name sibling tools, but the bitable-vs-doc/sheet distinction is strong enough to guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_feishu_base_records读取多维表格记录A

读取飞书多维表格(bitable)的数据表记录,返回对象数组(每条含 record_id 和字段值)。可按字段筛选(op 支持 ==/!=/>/>=/</<=/intersects/contains/is_empty/non_empty)、排序、字段投影、分页。先用 describe_feishu_base 获取 table_id 和字段名。base_token 支持多维表格 URL、wiki URL 或裸 token。

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo排序,按数组顺序为优先级
limitNo单次最多返回条数(1-200)
logicNo多个筛选条件的组合逻辑and
fieldsNo只返回这些字段(字段投影)
offsetNo分页偏移
filtersNo筛选条件(AND/OR 组合)
view_idNo视图 ID 或名称(可选)
table_idYes数据表 ID(tbl 开头)或表名
base_tokenYes多维表格 token 或 URL(支持 /base/、/wiki/ 链接)

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses return shape (object array with record_id and field values), filtering operators, sorting, projection, pagination, and token formats. However, it doesn't mention rate limits, error behavior, or whether this is a read-only operation (though the name implies it).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose, then lists capabilities and prerequisites in a logical order. It packs substantial information into two sentences without redundancy, though the operator list is long and could be considered dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read tool with 9 parameters and no output schema, the description covers the return format, filtering, sorting, projection, pagination, and token handling. It lacks explicit mention of pagination limits beyond the schema's limit parameter, but the schema covers that. The prerequisite reference to describe_feishu_base completes the usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 9 parameters. The description adds context about base_token URL formats and the prerequisite for table_id/field names, but most parameter semantics are already in the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads Feishu bitable records and returns an object array with record_id and field values. It distinguishes itself from siblings by naming describe_feishu_base as a prerequisite and by listing filtering/sorting/projection/pagination capabilities, which separates it from read_feishu_doc and read_feishu_sheet.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to first use describe_feishu_base to obtain table_id and field names, and explains base_token accepts URL, wiki URL, or bare token. This gives clear when-to-use guidance and a prerequisite step, though it doesn't explicitly name alternatives for exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_feishu_doc读取飞书文档A

读取飞书云文档内容(支持文档链接 /docx/ 或知识库链接 /wiki/,自动路由),返回 Markdown。可读全文、目录大纲(scope=outline,先看结构)、指定章节(需 block id)、关键词定位。返回 JSON 含 document_id / revision_id / content。

ParametersJSON Schema
NameRequiredDescriptionDefault
docYes文档 URL 或 token(支持 https://xxx.feishu.cn/docx/xxx、/wiki/xxx 或纯 token)
scopeNofull=全文;outline=仅目录大纲(推荐先看结构);section=某标题整节(需 start_block_id);range=block 区间;keyword=关键词定位full
detailNosimple=纯内容;with-ids=含 block id(后续局部更新时需要);full=含样式与编辑元数据simple
formatNo输出格式,默认 markdownmarkdown
keywordNoscope=keyword 时的关键词,支持 'a|b' 或分支
max_depthNooutline 的标题层级上限,其他 scope 为子树深度
end_block_idNorange 的结束 block id,-1 表示读到文末
start_block_idNosection/range 的起始 block id

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses automatic routing between docx and wiki links, the return format (Markdown), and the JSON structure with document_id/revision_id/content. It also explains the effect of different scope values (outline, section, keyword) and detail levels. It doesn't mention rate limits, auth requirements, or error behavior, but for a read tool the disclosed behavior is quite thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose, then lists capabilities in a dense but organized way. It packs a lot of information into a few sentences without redundancy. Minor deduction because the parameter interaction details (e.g., keyword with 'a|b') could be seen as schema territory, but overall it's efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read tool with 8 parameters and no output schema, the description covers the main usage patterns, return format, and routing behavior. It doesn't explain error cases, pagination, or auth prerequisites, but the sibling check_feishu_auth exists for auth. The description is complete enough for an agent to select and invoke the tool correctly for common scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 8 parameters. The description adds value by explaining the workflow: scope=outline for structure first, section needs start_block_id, keyword supports 'a|b' branches, and detail=with-ids is needed for later partial updates. This goes beyond the schema's field-level descriptions and helps an agent understand how parameters interact.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('读取' / read), a clear resource (飞书云文档), and explicitly distinguishes between document links (/docx/) and wiki links (/wiki/) with automatic routing. It also names the return format (Markdown) and the JSON structure, making it immediately clear what this tool does and how it differs from siblings like read_feishu_sheet or read_feishu_base_records.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: it recommends using scope=outline first to see the structure, explains when to use section (needs block id), and mentions keyword positioning. It also implies when to use this tool vs alternatives by focusing on document content reading, while siblings handle sheets and base records. The routing note for /docx/ vs /wiki/ links is a clear when-to-use signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_feishu_sheet读取飞书电子表格A

读取飞书电子表格(电子表格 spreadsheet,不是多维表格)。不传 sheet_name/sheet_id 时返回工作簿的子表清单;传入子表后按区域读取,默认返回 CSV 文本(纯值),detail=cells 可读公式/样式/批注。

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo电子表格 URL(与 spreadsheet_token 二选一)
rangeNoA1 区域,如 A1:F30;不传读全表(大表会被截断)
detailNovalues=CSV 纯值;cells=含公式/样式/批注values
sheet_idNo子表 ID(与 sheet_name 二选一)
sheet_nameNo子表名称(与 sheet_id 二选一;都不传时返回子表清单)
spreadsheet_tokenNo电子表格 token(与 url 二选一)

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses that it returns CSV text by default, that detail=cells exposes formulas/styles/comments, that omitting sheet params yields a sheet list, and that large tables may be truncated (the truncation note is in the schema but the description reinforces it). The read-only nature is implied by '读取'. This level of behavioral detail exceeds what a typical tool description provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence that front-loads the core purpose and then quickly covers the key behavioral branches. There is no redundant wording; every clause adds information. The structure is efficient and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given six parameters, no output schema, and no annotations, the description is remarkably complete. It covers the main use cases, the two modes, the detail option, and the truncation caveat. It does not explicitly mention authentication or error handling, but those are typically implied for read tools and not essential for correct invocation. For a read tool, this description provides all the context an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the interplay between sheet_name/sheet_id and the list mode, and by stating the default behavior of range and detail. While some of this is also in the schema (e.g., '都不传时返回子表清单'), the description synthesizes the parameter logic into a coherent flow, which helps an agent understand how the parameters interact rather than just their individual meanings.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads a Feishu spreadsheet (电子表格), explicitly distinguishing it from multidimensional tables (不是多维表格). It also differentiates from sibling tools by specifying the two operational modes: returning a sheet list when no sheet is given, or reading a region when a sheet is provided. The verb '读取' (read) plus the resource '电子表格' makes the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit conditional guidance: '不传 sheet_name/sheet_id 时返回工作簿的子表清单;传入子表后按区域读取' (without sheet params, return the sheet list; with a sheet, read by region). It also clarifies the detail parameter options and the default CSV output. While it doesn't explicitly name alternative tools like read_feishu_base_records, it clearly delimits its scope by stating it is not for multidimensional tables, which effectively routes agents to the correct sibling. This is strong usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_feishu_docs搜索飞书云文档A

按关键词搜索我有权限的飞书云空间对象(文档/电子表格/多维表格/知识库文档等),返回标题、类型、URL、更新时间。关键词最长 30 个字符。拿到 URL/token 后可用 read_feishu_doc 等工具进一步读写。

ParametersJSON Schema
NameRequiredDescriptionDefault
mineNo只搜我担任所有者的对象
sortNo排序
queryYes搜索关键词(≤30 字符),支持高级语法:intitle:标题 '精确短语' A OR B -排除词
doc_typesNo按类型过滤(可多选)
page_sizeNo每页条数(1-20)
only_titleNo只在标题中匹配
page_tokenNo上一页返回的翻页 token
created_by_meNo只搜我创建的对象

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the return fields (title, type, URL, update time) and the permission scope. It does not explicitly state that it is read-only (though implied by being a search), nor does it describe pagination behavior or rate limits. It is adequate but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose, mentions the return fields, and provides a hint about follow-up tools. There is no fluff or redundancy, and every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, 1 required) and absence of an output schema, the description provides essential context: the scope of search, return fields, keyword length, and a pointer to related tools. It does not explain pagination or advanced syntax, but these are covered in the schema, so the description is sufficiently complete for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters have descriptions in the schema. The description adds minimal parameter-specific value beyond what the schema already provides (e.g., it mentions the 30-character limit, which is also in the schema). It does not clarify parameter semantics beyond the schema, so a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: searching Feishu cloud objects (documents, sheets, bitables, wiki pages, etc.) by keyword, returning title, type, URL, and update time. It explicitly names the sibling tool read_feishu_doc for further read/write operations, distinguishing itself as a discovery tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (to find objects) versus siblings (to read/write them after obtaining URL/token). It mentions the keyword length limit and permission scope. However, it does not explicitly state when NOT to use it or provide alternative search methods, but the context is clear enough for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_feishu_base_records写入多维表格记录A

向飞书多维表格(bitable)批量新增或更新记录,单次最多 200 条。mode=create 时 records 为字段对象数组;mode=update 时每项需含 record_id 和 fields。字段值约定:文本直接字符串,单选/多选用字符串数组,日期用 'YYYY-MM-DD HH:mm',勾选用 true/false,数字用数值。先用 describe_feishu_base 确认可写字段。

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYescreate=批量新增;update=按 record_id 批量更新
recordsYes记录数组,单次最多 200 条
table_idYes数据表 ID(tbl 开头)或表名
base_tokenYes多维表格 token

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral disclosure burden. It covers batch limit, mode-specific record structure, and field value type conventions, which are essential for correct invocation. However, it does not disclose partial-failure handling, idempotency, or overwrite semantics—traits an agent would need for a side-effectful write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: purpose, batch limit, mode semantics, value conventions, and prerequisite advice are delivered in three sentences. Every sentence contributes non-redundant information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batch write tool with four parameters and no output schema, the description covers all essential invocation details: mode, records shape, value types, and a prerequisite check. Missing error/response behavior is a gap, but it is not fatal for constructing a correct request.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While the schema has 100% coverage, the description adds a crucial mapping of Feishu field types (text, select, date, boolean, number) to JSON value conventions, which is absent from the schema. It also clarifies that update mode requires each item to contain both record_id and fields, a conditional requirement not enforced by the static schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool batch adds or updates records in Feishu bitable, naming both the operation and the resource. It distinguishes itself from siblings like read_feishu_base_records and describe_feishu_base by focusing on writing records, and the sibling list confirms write_feishu_doc/write_feishu_sheet target different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly advises using describe_feishu_base to confirm writable fields, which is a clear prerequisite. It also implies usage scope by focusing on bitable records, but does not explicitly exclude other write tools. The mode guidance helps select between create/update parameters, but no alternative tools are named for exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_feishu_doc写入飞书文档A

写入飞书云文档(docx / wiki),内容用 Markdown。模式:create=新建文档(需 title);append=在文末追加;replace=整篇覆盖已有文档(慎用,会丢弃原有内容);replace_text=把文档中的精确旧文本替换为新文本(适合小改动)。新建成功返回新文档的 url 和 document_id。

ParametersJSON Schema
NameRequiredDescriptionDefault
docNo目标文档 URL 或 token(append/replace/replace_text 必填)
modeYes写入模式
titleNo文档标题(create 必填)
contentNoMarkdown 内容(create 可选只建空文档;append/replace 必填)
patternNoreplace_text 必填:要被替换的旧文本(需与文档中的文本精确一致)
parent_tokenNocreate 可选:父文件夹 token 或知识库节点 token,不传则建在个人空间

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the destructive nature of replace (discards original content) and clarifies that replace_text requires exact text matching. It also states the create return value. It doesn't cover auth, rate limits, or error cases, but the key side effects are transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph that front-loads the core purpose and efficiently lists all modes with their constraints. Every sentence contributes useful behavioral or semantic information; there is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains create's return value but is silent about append/replace/replace_text return values or error behavior. With no output schema and no annotations, this leaves some ambiguity for an agent. However, the mode semantics and destructive warnings cover the most critical operational aspects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% parameter coverage, so the baseline is 3. The description adds substantial meaning beyond the schema by explaining the mode enum values in detail, noting that content is Markdown, and emphasizing that pattern must match exactly. This goes beyond the bare schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's purpose: writing Markdown content to Feishu cloud documents (docx/wiki). It enumerates four distinct modes (create, append, replace, replace_text), each with a specific verb and resource, and the modes naturally distinguish it from sibling read/search/sheet tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use each mode, including a caution for replace ('慎用') and a recommendation for replace_text for small changes. It does not explicitly name alternative sibling tools or conditions to avoid this tool, but the mode-level guidance is strong enough to route correct usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_feishu_sheet写入飞书电子表格A

写入飞书电子表格。模式:overwrite=从锚点单元格(默认 A1)开始粘贴 CSV 文本;append=把 CSV(首行为表头)追加到子表末行;set_cell=向指定区域写值或公式(cells 为二维数组,如 [[{"value":"名称"},{"formula":"=SUM(A1:A2)"}]])。

ParametersJSON Schema
NameRequiredDescriptionDefault
csvNooverwrite/append 必填:RFC-4180 CSV 文本(append 时首行视为表头)
urlNo电子表格 URL(与 spreadsheet_token 二选一)
modeYes写入模式
cellsNoset_cell 必填:单元格二维数组的 JSON 字符串
rangeNoset_cell 必填:目标区域,如 A1:B2
sheet_idNo子表 ID(与 sheet_name 二选一,必填)
sheet_nameNo子表名称(与 sheet_id 二选一,必填)
start_cellNooverwrite 锚点单元格,默认 A1
allow_overwriteNo是否允许覆盖非空单元格,默认允许
spreadsheet_tokenNo电子表格 token(与 url 二选一)

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It explains what each mode does (pastes CSV, appends with header, writes values/formulas) and gives a concrete cells example, which is helpful. However, it omits important side effects such as overwrite behavior (allow_overwrite parameter), what happens to existing data, authentication requirements (check_feishu_auth exists as a sibling), or rate limits. For a write operation, this level of disclosure is insufficient for full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense sentence but packs in all essential mode information without fluff. It is front-loaded with the purpose and then enumerates modes. While a bulleted list might improve readability, the current structure is efficient and every clause earns its place. Slightly verbose but not bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters, 3 modes, no output schema, no annotations), the description covers the core usage scenarios well: it explains all three modes, which parameters are required for each, and provides a concrete example. It lacks guidance on parameter conflicts (e.g., both url and spreadsheet_token provided) and the effect of allow_overwrite, but those are covered in schema descriptions. The description is adequate for an agent to invoke the tool correctly in most cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds significant value by linking parameters to modes: csv for overwrite/append, cells and range for set_cell, start_cell for overwrite, and clarifying that append treats the first row as a header. It also provides a detailed example of the cells format. This goes beyond the schema's individual descriptions and aids correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb '写入' (write) and the resource '飞书电子表格' (Feishu spreadsheet), and further breaks down into three distinct modes with concrete behaviors. This distinguishes it from siblings like read_feishu_sheet (read) and write_feishu_doc (doc vs sheet), leaving no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit mode-specific instructions (overwrite, append, set_cell) that act as usage guidance within the tool, including what each mode expects (CSV, anchor cell, sheet last row, cells array). However, it does not mention when to choose this tool over alternatives like read_feishu_sheet or write_feishu_doc, relying on the name for that distinction. This is a minor gap given the tool's name is self-explanatory.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv0.1.0
    • First observedcheck_feishu_auth
    • First observeddescribe_feishu_base
    • First observedread_feishu_base_records
    • First observedread_feishu_doc
    • First observedread_feishu_sheet
    • First observedsearch_feishu_docs
    • First observedwrite_feishu_base_records
    • First observedwrite_feishu_doc
    • First observedwrite_feishu_sheet

TDQS

A4.2/5.0

Scored across 9 tools

Disambiguation4/5

Tools are mostly distinct by resource type (doc vs sheet vs base) and action (read vs write vs describe vs search vs auth). The only potential confusion is read_feishu_doc vs search_feishu_docs (both involve docs) and read_feishu_sheet vs read_feishu_base_records (both read tabular data), but descriptions clarify the resource types clearly.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern: read_feishu_doc, write_feishu_doc, read_feishu_sheet, write_feishu_sheet, read_feishu_base_records, write_feishu_base_records. Minor deviations: describe_feishu_base (uses describe instead of read), search_feishu_docs (plural docs), and check_feishu_auth (uses check instead of a resource noun).

Tool Count5/5

9 tools is well-scoped for a Feishu/Lark workspace server covering docs, sheets, bitable, search, and auth. Each tool earns its place and the count is within the ideal 3-15 range.

Completeness4/5

The server covers read/write for docs, sheets, and bitable records, plus schema discovery, search, and auth check. Minor gaps: no delete/update for docs or sheets, no bitable table creation or schema modification, and no explicit tool for listing docs/sheets (though search covers discovery).

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers