Skip to main content
Glama
shou-nian

Feishu MCP Server

by shou-nian

飞书 MCP Server

一个使用 Python、官方 MCP SDK、asyncio 和飞书官方 lark-oapi SDK 实现的飞书 MCP Server。它通过 stdio 与 Codex 等 MCP Client 通信,支持 Docx 文档读写,以及 Bitable(多维表格)的字段/记录查询、记录写入、公式字段、视图和仪表盘模板复制。

功能与设计

Server 暴露十二个 Tool:

  • read_feishu_document(document_id):读取标题、完整 block 列表,并返回包含表格的 Markdown。

  • create_feishu_document(title, content):创建文档,将 Markdown(含表格)转为飞书 blocks 后写入。

  • update_feishu_document(document_id, content):删除文档根节点下的原正文,然后以 Markdown(含表格)全量替换。

  • append_feishu_document(document_id, content):在已有文档末尾追加普通文本、Markdown 或表格,不删除或改写现有内容。

  • list_feishu_bitable_fields(app_token, table_id):分页查询多维表格字段、类型、选项和是否可写。

  • list_feishu_bitable_records(app_token, table_id, filter_expression, page_size, page_token):分页查询记录,可使用 filter 表达式定位目标行并获取 record_id

  • create_feishu_bitable_record(app_token, table_id, fields):读取实时字段结构,校验并转换字段值后新增记录。

  • update_feishu_bitable_record(app_token, table_id, record_id, fields):读取实时字段结构后,通过 record_id 更新指定行。

  • create_feishu_bitable_formula_field(app_token, table_id, field_name, formula_expression):创建公式字段。

  • create_feishu_bitable_view(app_token, table_id, view_name, view_type):创建表格、看板、画册、甘特或表单视图。

  • list_feishu_bitable_dashboards(app_token, page_size, page_token):分页获取仪表盘模板及其 block_id

  • copy_feishu_bitable_dashboard(app_token, source_block_id, name):复制已有仪表盘及其中全部组件。

追加 Tool 的输入示例:

{
  "document_id": "doxcnxxxxxxxxxxxx",
  "content": "## 新增章节\n\n追加正文\n\n| 项目 | 状态 |\n| --- | --- |\n| 文档 | 完成 |"
}

追加操作只读取 block 列表来确定文档根节点的末尾位置,然后创建新 blocks;不会调用删除接口,也不会通过“读取后整体重写”的方式更新文档。已有的段落、表格、图片以及当前未支持转换的其他根级 blocks 都会保留。普通文本本身是合法 Markdown,可直接作为 content 传入。

对应的飞书 API:

  • POST /open-apis/auth/v3/tenant_access_token/internal:使用 App ID 和 App Secret 获取 tenant_access_token

  • GET /open-apis/docx/v1/documents/{document_id}:读取文档元信息。

  • GET /open-apis/docx/v1/documents/{document_id}/blocks:分页读取 block 结构。

  • POST /open-apis/docx/v1/documents:创建文档。

  • POST /open-apis/docx/v1/documents/{document_id}/blocks/{block_id}/children:写入 blocks。

  • DELETE /open-apis/docx/v1/documents/{document_id}/blocks/{block_id}/children/batch_delete:删除旧正文。

  • GET /open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/fields:分页查询 Bitable 字段结构。

  • GET /open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records:分页或按 filter 查询 Bitable 记录。

  • POST /open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records:新增 Bitable 记录。

  • PUT /open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records/{record_id}:更新指定 Bitable 记录。

  • POST /open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/fields:创建公式字段。

  • POST /open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/views:创建视图。

  • GET /open-apis/bitable/v1/apps/{app_token}/dashboards:分页查询仪表盘。

  • POST /open-apis/bitable/v1/apps/{app_token}/dashboards/{block_id}/copy:复制仪表盘和已有组件。

鉴权仅使用飞书自建应用的 tenant_access_token,不使用用户 OAuth。应用凭证、Token 获取与缓存、API 请求序列化均由飞书官方 lark-oapi SDK 管理;业务代码调用 SDK 提供的 agetalistacreateabatch_delete 等原生异步接口,不再自行发送 HTTP 请求。

当前 Markdown 转换支持普通段落、1—9 级标题、无序/有序列表、任务列表、引用、分隔线、代码块、标准管道表格,以及粗体、删除线、行内代码和链接。未支持的复杂飞书 block 仍会保留在 blocks 原始响应中,但不会凭空转换成 Markdown。

表格示例:

| 姓名 | 年龄 |
| --- | --- |
| 小明 | 18 |

写入时第一行会作为飞书表格表头;<br> 会在单元格内转换为换行。读取飞书表格时会根据 table block 的行列属性、cell IDs 和单元格子 blocks 重建 Markdown。Markdown 本身不能完整表达合并单元格、精确列宽或复杂嵌套 block,这些信息仍保留在 Tool 返回的原始 blocks 字段中。

Related MCP server: feishu-mcp-server

Bitable 字段与记录

Docx 表格是文档内的排版 block,Bitable 是具有字段 schema 和记录的独立多维表格。append_feishu_document 只能追加前者;查询或修改多维表格必须使用 Bitable Tools。

Bitable 地址通常类似:

https://example.feishu.cn/base/{app_token}?table={table_id}

建议先查询字段:

{
  "app_token": "bascnxxxxxxxx",
  "table_id": "tblxxxxxxxx"
}

list_feishu_bitable_fields 会返回 field_idfield_name、数字类型、可读类型名、ui_type、选择项、原始 property 以及 writable。新增记录可以使用字段名称或 field_id 作为 key;服务会重新读取最新 schema,最终按字段名称调用官方 API:

{
  "app_token": "bascnxxxxxxxx",
  "table_id": "tblxxxxxxxx",
  "fields": {
    "标题": "新任务",
    "数量": 3,
    "状态": "进行中",
    "标签": ["重要"],
    "日期": "2026-07-23T10:00:00+08:00",
    "完成": false,
    "负责人": "ou_xxxxxxxxx",
    "链接": "https://example.com"
  }
}

查询并更新指定行

先通过 list_feishu_bitable_records 获取目标行的 record_id。不传 filter_expression 时按页返回记录;需要定位时可传飞书 Bitable filter 表达式:

{
  "app_token": "bascnxxxxxxxx",
  "table_id": "tblxxxxxxxx",
  "filter_expression": "CurrentValue.[标题]=\"目标任务\"",
  "page_size": 100
}

响应中的每条记录包含 record_idfields、创建/修改时间和记录 URL。若 has_moretrue,将返回的 page_token 传入下一次调用继续查询。

取得 record_id 后,只更新需要修改的字段:

{
  "app_token": "bascnxxxxxxxx",
  "table_id": "tblxxxxxxxx",
  "record_id": "recxxxxxxxx",
  "fields": {
    "是否启用": "是",
    "适用范围": ["内部", "测试"]
  }
}

update_feishu_bitable_record 不会在表尾新增记录,也不会替换整行;未传入的其他字段保持不变。更新前会重新读取实时字段 schema。单选字段直接传已存在的选项名称字符串,多选字段传选项名称数组,服务校验选项后由飞书 API 选择对应项;也可以传 null 清空单选,或传空数组清空多选。

常用字段值格式:

字段类型

输入格式

文本、电话

字符串

数字

intfloat,不接受布尔值

单选

已存在的选项名称字符串

多选

已存在的选项名称数组

日期

毫秒时间戳或 ISO 8601 字符串;无时区字符串按 UTC 处理

复选框

布尔值

人员、群组

ID 字符串、{"id": "..."} 或对应数组

超链接

URL 字符串或 {"link": "...", "text": "..."}

附件

[{"file_token": "..."}]

单向/双向关联

关联记录 ID 数组

地理位置

飞书 API 要求的地理位置对象

公式、查找引用、创建/修改时间、创建/修改人和自动编号属于只读字段,新增或更新记录时会被拒绝。单选和多选值必须已经存在于字段选项中;未知字段、错误类型和空字段对象都会在调用写入 API 前返回清晰错误。

Bitable 公式字段、视图与仪表盘

创建公式字段时,表达式会按飞书 Bitable 公式语法原样提交。示例:

{
  "app_token": "bascnxxxxxxxx",
  "table_id": "tblxxxxxxxx",
  "field_name": "总价",
  "formula_expression": "[数量]*[单价]"
}

创建结果返回 field_id、字段名称和公式表达式。公式字段本身是计算字段,不能通过记录新增或更新 Tool 直接写值。

创建视图示例:

{
  "app_token": "bascnxxxxxxxx",
  "table_id": "tblxxxxxxxx",
  "view_name": "任务看板",
  "view_type": "kanban"
}

支持的 view_type

视图

grid

表格视图(默认)

kanban

看板视图

gallery

画册视图

gantt

甘特视图

form

表单视图

飞书公开 Bitable API 当前没有“创建单个仪表盘组件”的接口,官方 lark-oapi 1.7.1 只提供仪表盘列表与整表复制。因此 Server 不会调用未公开接口,而是通过模板复制创建带组件的仪表盘:

  1. 调用 list_feishu_bitable_dashboards,获取已有模板仪表盘的 block_id

  2. 调用 copy_feishu_bitable_dashboard,传入 source_block_id 和新名称。

{
  "app_token": "bascnxxxxxxxx",
  "source_block_id": "blkxxxxxxxx",
  "name": "月度运营仪表盘"
}

复制结果会返回新的 block_id,模板中的图表、指标卡等组件会一起复制。若需要从零新增或修改单个组件,必须等待飞书开放对应公开 API,或先在飞书界面创建模板组件再使用复制 Tool。

环境准备

要求:

  • Python 3.11 或更高版本

  • uv

  • 已创建并启用的飞书企业自建应用

同步虚拟环境和锁文件:

uv sync

飞书应用需要开通与 Docx 文档读取、创建、编辑,以及 Bitable 字段读取/创建、记录读取/新增/更新、视图创建和仪表盘读取/复制相关的权限,并发布可用版本。目标文档和多维表格还必须向应用开放访问权限。

配置

复制 .env.example.env,填写以下必需变量:

FEISHU_APP_ID=cli_xxxxx
FEISHU_APP_SECRET=xxxxx

飞书开放平台地址固定为官方 https://open.feishu.cn,由代码配置,不需要环境变量。

可选变量:

变量

默认值

说明

FEISHU_DOCUMENT_URL_BASE

https://feishu.cn/docx

创建结果中的文档 URL 前缀;私有化域名可覆盖

FEISHU_REQUEST_TIMEOUT

15

HTTP 超时秒数

LOG_LEVEL

INFO

stderr 日志级别

不要提交真实的 App Secret;.env 已加入 .gitignore

启动

uv run feishu-mcp

feishu-mcp 是通过 project.scripts 安装的推荐入口。根目录入口 uv run python main.py 仍可兼容使用。

Server 使用 stdio 传输。日志只写入 stderr,不会污染 MCP 协议的 stdout。stdin 正常关闭、任务取消,或进程收到 SIGINT/SIGTERM 时,Server 会取消服务任务并退出 MCP 生命周期。

缺少配置时进程会输出简明错误并以状态码 2 退出,不会把 Python traceback 返回给 MCP Client。

Codex MCP 配置示例

推荐让 Codex 直接通过 uv 启动已安装的 feishu-mcp 命令:

{
  "mcpServers": {
    "feishu": {
      "command": "uv",
      "args": [
        "--directory",
        "D:\\project\\feishu-mcp-server",
        "run",
        "feishu-mcp"
      ],
      "env": {
        "FEISHU_APP_ID": "cli_xxxxx",
        "FEISHU_APP_SECRET": "xxxxx"
      }
    }
  }
}

如果 Codex 已经在项目根目录运行,也可以省略 --directory

{
  "mcpServers": {
    "feishu": {
      "command": "uv",
      "args": [
        "run",
        "feishu-mcp"
      ],
      "env": {
        "FEISHU_APP_ID": "cli_xxxxx",
        "FEISHU_APP_SECRET": "xxxxx"
      }
    }
  }
}

测试与质量检查

uv run pytest
uv run ruff check main.py src tests

测试中的所有飞书调用都使用官方 SDK 模型、AsyncMock 或内存 fake client,不会访问真实飞书数据。覆盖范围包括 SDK 客户端配置、鉴权与 API 错误转换,文档创建/读取/全量更新/追加、分页、Markdown 与表格转换和表格单元格写入,以及 Bitable 字段分页、记录查询、指定行更新、单双选规范化、公式字段、视图、仪表盘列表/复制、只读字段、非法选项、未知字段和记录新增。MCP Tool 注册、参数校验、错误转换和优雅退出也有独立覆盖。

项目结构

main.py                          # 兼容的项目根目录入口
src/
└── feishu_mcp/                  # 可安装的 Python 包
    ├── __init__.py              # feishu-mcp console script 入口
    ├── main.py                  # stdio 生命周期和优雅退出
    ├── config/settings.py       # 环境变量配置
    ├── feishu/
    │   ├── auth.py              # lark-oapi Client 与应用鉴权配置
    │   ├── client.py            # 官方 SDK Docx/Bitable 异步接口封装
    │   ├── document.py          # Docx 业务、Markdown 与表格转换
    │   ├── bitable.py           # Bitable schema、记录查询、值校验与记录写入
    │   ├── bitable_structure.py # Bitable 公式字段、视图和仪表盘模板
    │   └── errors.py            # 用户友好的异常
    ├── tools/tools.py           # MCP Tools 注册(避免与官方 mcp 包冲突)
    ├── models/schemas.py        # 结构化响应模型
    └── utils/logger.py          # stderr 日志

Available Tools

12 tools
append_feishu_documentA

在飞书文档末尾追加 Markdown、普通文本或表格;不会删除、覆盖或清空已有内容。

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes需要追加的 Markdown 或普通文本正文
document_idYes飞书 Docx 文档 ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 provides crucial behavioral info: append-only, non-destructive operation (no delete/overwrite/clear), and support for Markdown/plain text/tables. It covers key traits but omits error handling or auth requirements.

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?

Single sentence with no filler. Front-loads the action and immediately clarifies what the tool does and does not do. Every word earns its place.

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 simple append tool with two well-described parameters and an output schema, the description fully covers the purpose, behavior, and content types. No gaps.

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%, and the description adds value by specifying 'tables' alongside Markdown/plain text for content, and 'at the end' for the append behavior. This enhances the schema's meaning.

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 appends Markdown, plain text, or tables to the end of a Feishu document. It uses a specific verb ('append') and resource ('Feishu document'), and distinguishes from siblings like update by explicitly stating no deletion or overwrite.

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 clarifies when to use (to add content without affecting existing content) and what it avoids (no delete/overwrite/clear). It implicitly suggests not using for replacement, but does not name alternatives explicitly. With sibling tools listed, the guidance is adequate.

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

copy_feishu_bitable_dashboardA

通过官方复制接口从已有仪表盘模板创建新仪表盘,并复制模板中的全部组件。

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes复制后新仪表盘的名称
app_tokenYesBitable app_token(多维表格 Token)
source_block_idYes作为复制模板的仪表盘 block_id

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/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 only states the action and that it copies all components, but fails to mention any side effects, permission requirements, or limitations. For a mutation tool, more details are needed.

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. It is front-loaded with the method and then describes the action. No redundant or unnecessary words.

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?

While the tool has a clear purpose and schema descriptions, the description does not cover behavioral aspects or output expectations. An output schema exists, so return values are documented elsewhere, but additional context about prerequisites or the effect on the source template would improve completeness.

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 baseline is 3. The overall description adds no extra parameter semantics beyond what the schema already provides. The schema descriptions for each parameter are clear and adequate.

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 explicitly states the action (creating a new dashboard by copying), the resource (an existing dashboard template), and the extent (copies all components). It clearly distinguishes from sibling tools like read or create, as none other perform a copy operation.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives. While the purpose is clear, there is no guidance on prerequisites or exclusions. Usage is implied but not directive.

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

create_feishu_bitable_formula_fieldB

在指定 Bitable 数据表中创建公式字段,公式表达式按飞书语法原样提交。

ParametersJSON Schema
NameRequiredDescriptionDefault
table_idYesBitable table_id(数据表 ID)
app_tokenYesBitable app_token(多维表格 Token)
field_nameYes需要创建的 Bitable 字段名称
formula_expressionYes飞书 Bitable 公式表达式

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only notes that the formula is submitted 'as-is', but fails to mention mutation effects, authorization requirements, potential side effects, or error conditions. This is insufficient for a creation tool.

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?

A single sentence that is front-loaded with the purpose and contains no extraneous information. Every word is necessary and there is no redundancy.

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 tool has moderate complexity with 4 required parameters and an output schema. The description does not mention prerequisites (e.g., table must exist), validation behavior, or error handling. It is adequate but lacks completeness for a creation tool with no annotations.

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 coverage is 100% with all parameters described. The description adds no extra meaning beyond the schema definitions (e.g., 'formula_expression' is similarly described). Baseline 3 applies as no additional value is contributed.

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 'create', the resource 'formula field in Bitable table', and specifies that the formula expression is submitted as-is in Feishu syntax. It uniquely identifies the tool among siblings with similar names.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description does not mention exclusions, prerequisites, or compare with other field creation tools. The user must infer usage from synthetic context.

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

create_feishu_bitable_recordA

先查询 Bitable 字段结构并校验字段名称、类型、选项和只读属性,再新增一条记录。

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYes以字段名称或 field_id 为 key 的记录字段值
table_idYesBitable table_id(数据表 ID)
app_tokenYesBitable app_token(多维表格 Token)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/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. It discloses a two-step behavior (query/validate then create), which is helpful. However, it does not detail error handling, side effects, or authentication requirements. The behavioral disclosure is moderate.

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 sentence in Chinese, efficiently conveying the two-step process. It is concise with no redundant words, though it could be structured into clearer segments. Still, it earns its place.

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

Completeness2/5

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

Despite the complexity of dynamic fields and the validation step, the description is sparse. It does not mention the output schema (which exists) or clarify what happens if validation fails. The reference to querying field structure is present but incomplete without specifying that list_feishu_bitable_fields is the tool for that. Lacks sufficient context for an agent to use this tool 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 coverage is 100%, with all three parameters described. The description adds no additional meaning beyond the schema; it does not elaborate on 'fields' object structure or valid values. Baseline score of 3 is appropriate given the schema already documents parameters.

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: it first queries the Bitable field structure, validates field names, types, options, and read-only attributes, then creates a new record. This specific verb-resource combination distinguishes it from sibling tools like list_feishu_bitable_records (read) and update_feishu_bitable_record (modify).

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

Usage Guidelines3/5

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

The description implies a precondition (validate fields first) but does not explicitly state when to use this tool versus alternatives. It lacks guidance on when not to use it or context about prerequisites like having queried field structure beforehand. The guidance is adequate but not thorough.

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

create_feishu_bitable_viewC

在指定数据表中创建 grid、kanban、gallery、gantt 或 form 视图。

ParametersJSON Schema
NameRequiredDescriptionDefault
table_idYesBitable table_id(数据表 ID)
app_tokenYesBitable app_token(多维表格 Token)
view_nameYes需要创建的 Bitable 视图名称
view_typeNo视图类型:grid、kanban、gallery、gantt 或 formgrid

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, and the description does not disclose behavioral traits such as whether the creation is destructive, if it overrides existing views, permission requirements, rate limits, or other side effects. The description only states the action without clarifying behavior beyond creation.

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, concise sentence with no wasted words. It is front-loaded with the action. However, it could be expanded slightly without losing conciseness to include more context.

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 tool has four parameters (three required), an output schema, and no enums. The description does not mention return values or confirmation, but the output schema partially compensates. Behavioral details like default view type or conflict handling are missing, making it adequate but incomplete.

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?

With 100% schema description coverage, the schema already provides descriptions for all parameters. The description adds no extra meaning beyond the schema. Baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool creates a view in a specified table and lists the view types (grid, kanban, gallery, gantt, or form). It distinguishes from sibling tools like create_feishu_bitable_record or create_feishu_bitable_formula_field by specifying the resource type (view). However, it lacks further differentiation about what a view represents in Feishu Bitable.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as other creation tools. There are no when-not use cases or prerequisites mentioned. The description only states the action without contextual usage advice.

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

create_feishu_documentA

创建飞书文档,并把 Markdown 正文(含表格)转换为飞书 blocks。

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes新文档标题
contentYesMarkdown 格式的文档正文

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/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 full burden. It states the basic behavior (create and convert Markdown to blocks), but does not disclose additional behavioral traits such as idempotency, error handling, or authentication requirements. This is adequate for a simple tool but lacks depth.

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, front-loaded sentence with no wasted words. Every character contributes to understanding the tool's purpose.

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 simplicity (2 params, schema coverage 100%, output schema exists), the description sufficiently covers the creation and conversion behavior. It does not need to explain return values due to output schema. Slight gaps in error handling or duplicate behavior are minor.

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%, providing baseline of 3. The overall description adds value by explicitly noting that tables are supported in content, which is not stated in the parameter description. This provides clear context beyond 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 creates a Feishu document and converts Markdown content (including tables) to Feishu blocks. It is a specific verb+resource combination that distinguishes from sibling tools like read, update, and append.

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 clear context for using this tool (create document with Markdown). While it does not explicitly state when not to use or mention alternatives, the sibling tools context makes the usage clear. No exclusions are needed.

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

list_feishu_bitable_dashboardsA

分页查询 Bitable 仪表盘,返回可用于复制模板的 block_id。

ParametersJSON Schema
NameRequiredDescriptionDefault
app_tokenYesBitable app_token(多维表格 Token)
page_sizeNo每页仪表盘数,范围 1—100
page_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided; description carries full burden. It discloses paginated behavior and output purpose, but lacks details on rate limits, error handling, or side effects. Adequate but minimal.

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?

Description is a single sentence, front-loaded with key action and output, no unnecessary words.

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?

Description is brief for a paginated list tool with output schema. It lacks explanation of how block_id is used (e.g., for copying dashboards) and does not describe pagination mechanics. Sufficient for basic use but incomplete for first-time users.

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 67%, so baseline is 3. Description does not add meaning beyond schema for parameters; it only states output purpose without detailing parameter usage. Minimal added value.

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?

Description clearly states the action (paginated query) and resource (Bitable dashboards), and specifies the output (block_id for copying templates). It distinguishes from sibling tools that operate on documents, fields, records, etc.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no prerequisites mentioned. Sibling tool 'copy_feishu_bitable_dashboard' likely uses the returned block_id, but this relationship is not stated.

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

list_feishu_bitable_fieldsB

分页查询飞书多维表格字段结构、类型、选项和是否可写。

ParametersJSON Schema
NameRequiredDescriptionDefault
table_idYesBitable table_id(数据表 ID)
app_tokenYesBitable app_token(多维表格 Token)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Discloses pagination and returned data (structure, type, options, writability), but lacks details on pagination defaults, limits, or side effects. Since no annotations exist, description partially fulfills 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?

Single sentence, front-loaded with action and purpose. Efficient but could be slightly more structured.

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?

Output schema exists, so return format is covered. Description covers core functionality but lacks usage guidelines and pagination specifics. Adequate but not comprehensive.

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 coverage is 100% with both parameters described in Chinese. Description adds no additional meaning beyond the schema, so baseline 3 applies.

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 it is a paginated query for field structure, type, options, and writability, distinguishing it from sibling tools like list records or list dashboards.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like list records or create fields. No when-not-to-use or prerequisites mentioned.

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

list_feishu_bitable_recordsA

分页查询飞书多维表格记录,可传入 Bitable filter 表达式定位目标行;返回用于精确更新的 record_id。

ParametersJSON Schema
NameRequiredDescriptionDefault
table_idYesBitable table_id(数据表 ID)
app_tokenYesBitable app_token(多维表格 Token)
page_sizeNo每页记录数,范围 1—500
page_tokenNo
filter_expressionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description discloses pagination support, filter capability, and that the result includes record_id for updates. It adds value beyond the schema by explaining the purpose of filter_expression and return value.

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 sentence that efficiently conveys the core action and key features without extraneous information.

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 complexity of pagination and filtering, the description provides sufficient context. The presence of an output schema reduces the need to describe return values in detail.

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 descriptions cover all parameters (100% coverage), but the tool description adds context about filtering to locate target rows and returning record_id, which enhances understanding of parameter usage.

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 paginates Feishu Bitable records, with optional filter expressions, and returns record IDs for updates. This distinguishes it from siblings like create/update/list fields.

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 implicitly indicates usage for reading records with pagination and filtering. While no explicit when-not-to-use or alternatives are given, the context from siblings (create, update) makes its role clear.

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

read_feishu_documentA

读取飞书文档标题、Markdown 正文(含表格)和原始 block 结构。

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYes飞书 Docx 文档 ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions what is returned but does not disclose behavioral traits such as read-only nature, authentication requirements, or whether the operation is destructive. Minimal transparency beyond inputs.

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, concise sentence front-loaded with the action and output types. No wasted words.

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 has an output schema and a single required parameter, the description sufficiently describes the tool's purpose and output. However, it lacks context about preconditions like document existence or access permissions.

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?

The schema description coverage is 100% for the single parameter. The description merely repeats the schema's description of '飞书 Docx 文档 ID', adding no new semantic meaning.

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 document and returns title, Markdown body, and original block structure. It distinguishes from sibling tools like create, update, append, and bitable-related tools.

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

Usage Guidelines3/5

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

The description implies usage for reading a document, but lacks explicit guidance on when to use it versus alternatives (e.g., create, update). No exclusion criteria or prerequisite information is provided.

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

update_feishu_bitable_recordA

通过 record_id 更新指定 Bitable 行。更新前读取实时字段结构;单选传选项名称字符串,多选传选项名称数组。

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYes以字段名称或 field_id 为 key 的记录字段值
table_idYesBitable table_id(数据表 ID)
app_tokenYesBitable app_token(多维表格 Token)
record_idYes需要更新的 Bitable record_id

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

The description reveals that it reads the real-time field structure before updating, which is useful behavioral context. However, with no annotations, it fails to mention permissions, error handling, or whether it overwrites or merges fields.

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 sentences, zero waste. First sentence states verb+resource, second provides critical usage detail. Information is front-loaded.

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?

Has output schema and 100% schema coverage. Description adds key behavioral nuance about select fields. Missing minor context like expected return format or error cases, but still solid.

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 already describes all parameters. The description adds valuable semantics: how to format values for single-select (string) and multi-select (array) fields, which is not in schema.

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

Purpose4/5

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

The description clearly states the action (update a Bitable row via record_id) and provides specific details about handling select fields. It distinguishes from siblings like create_* because it focuses on updating existing records.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives (e.g., create_feishu_bitable_record). No when-not-to-use or prerequisites mentioned.

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

update_feishu_documentA

用 Markdown(含表格)全量替换指定飞书文档的正文。

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesMarkdown 格式的文档正文
document_idYes飞书 Docx 文档 ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/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. It discloses that the tool performs a destructive full replacement (全量替换) and supports Markdown with tables. However, it does not mention permissions, reversibility, or error handling, leaving room for improvement.

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 sentence, concise and front-loaded with the action. It contains no unnecessary words and efficiently conveys the tool's purpose.

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 simplicity (2 parameters, no nested objects, output schema present), the description covers the essential aspects: action, input format, and scope of replacement. It does not explain error cases or output structure, but since output schema exists, it is not required. For a tool with no annotations, it is reasonably complete.

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 baseline is 3. The description adds value by clarifying that the 'content' parameter supports Markdown with tables (含表格), which is not fully captured in the schema description. This modest addition justifies a 4.

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 that the tool uses Markdown (including tables) to fully replace the body of the specified Feishu document. The specific verb 'replace' and resource 'Feishu document body' distinguish it from sibling tools like read, create, and append.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives like 'append_feishu_document' or 'create_feishu_document'. It only implies usage for full replacement, but lacks when-not-to or alternative context.

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. Dates show when Glama detected each change.

  1. 12 tool updatesv0.1.0
    • First observedappend_feishu_document
    • First observedcopy_feishu_bitable_dashboard
    • First observedcreate_feishu_bitable_formula_field
    • First observedcreate_feishu_bitable_record
    • First observedcreate_feishu_bitable_view
    • First observedcreate_feishu_document
    • First observedlist_feishu_bitable_dashboards
    • First observedlist_feishu_bitable_fields
    • First observedlist_feishu_bitable_records
    • First observedread_feishu_document
    • First observedupdate_feishu_bitable_record
    • First observedupdate_feishu_document

TDQS

A3.8/5.0
Disambiguation5/5

Tools are cleanly separated into two domains (documents and bitable) with distinct actions per resource. No overlap or ambiguity.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (e.g., read_feishu_document, create_feishu_bitable_record). Perfectly uniform.

Tool Count5/5

12 tools is an appropriate scope covering both document and bitable operations without being overwhelming or sparse.

Completeness4/5

Covers core CRUD for documents and bitable records well. Minor gaps like missing delete operations for records or fields, but core workflows are supported.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shou-nian/feishu-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server