飞书日历 MCP 服务器
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@飞书日历 MCP 服务器查询我明天的空闲时间,需要安排1小时的会议"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
飞书日历 MCP 服务器
Feishu Calendar MCP Server - 用于将飞书日历 API 包装成 Model Context Protocol (MCP) 服务器。
功能特性
日历管理: 获取、创建、更新、删除日历
日程管理: 获取、创建、更新、删除日程事件
订阅管理: 订阅/取消订阅日历
忙碌状态: 查询用户忙碌状态和可用时间
简单认证: 支持多种认证方式,推荐使用 app_access_token(最简单)
Related MCP server: calendar-mcp
快速开始
1. 安装依赖
npm install
npm run build2. 获取飞书应用凭证
访问 飞书开放平台
创建自建应用
获取 App ID 和 App Secret
3. 配置应用权限
在飞书开放平台配置应用:
进入你的应用管理页面
权限管理 → 权限配置,开通以下权限:
calendar:calendar- 查看、管理日历calendar:event- 查看、创建、编辑日程
4. 配置认证方式
本服务器支持三种认证方式,推荐使用方式一(最简单):
方式一:App Access Token(推荐,最简单)
只需配置 app_id 和 app_secret,系统自动获取 app_access_token。
FEISHU_APP_ID=cli_xxxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxx
FEISHU_USE_APP_TOKEN=true无需任何额外配置,这是最简单的方式!
方式二:Refresh Token(自动刷新)
通过 OAuth 授权获取 refresh_token,系统会自动刷新 access_token。
FEISHU_APP_ID=cli_xxxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxx
FEISHU_REFRESH_TOKEN=你的刷新令牌运行授权脚本获取 refresh_token:
npm run auth按照提示在浏览器中完成授权,refresh_token 会自动保存到 .env 文件。
方式三:User Access Token(手动管理)
直接使用 user_access_token,但需要注意 token 有效期约 2 小时,过期需要重新获取。
FEISHU_APP_ID=cli_xxxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxx
FEISHU_USER_ACCESS_TOKEN=你的用户访问令牌5. 在 Claude Desktop 中使用
编辑 Claude Desktop 配置文件:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
配置方式选择
根据你的安装方式选择对应的配置:
方式一:全局安装(推荐,最简单)
先全局安装:
npm install -g feishu-calendar-mcp配置:
{
"mcpServers": {
"feishu-calendar": {
"command": "feishu-calendar-mcp",
"args": [],
"env": {
"FEISHU_APP_ID": "your_app_id",
"FEISHU_APP_SECRET": "your_app_secret",
"FEISHU_USE_APP_TOKEN": "true"
}
}
}
}方式二:使用 npx(无需安装)
配置:
{
"mcpServers": {
"feishu-calendar": {
"command": "npx",
"args": ["-y", "feishu-calendar-mcp"],
"env": {
"FEISHU_APP_ID": "your_app_id",
"FEISHU_APP_SECRET": "your_app_secret",
"FEISHU_USE_APP_TOKEN": "true"
}
}
}
}方式三:本地开发路径
如果你在开发目录下使用:
{
"mcpServers": {
"feishu-calendar": {
"command": "node",
"args": ["/absolute/path/to/feishu-calendar/dist/index.js"],
"env": {
"FEISHU_APP_ID": "your_app_id",
"FEISHU_APP_SECRET": "your_app_secret",
"FEISHU_USE_APP_TOKEN": "true"
}
}
}
}认证方式选择
使用 App Access Token(推荐):
"env": {
"FEISHU_APP_ID": "your_app_id",
"FEISHU_APP_SECRET": "your_app_secret",
"FEISHU_USE_APP_TOKEN": "true"
}使用 Refresh Token:
"env": {
"FEISHU_APP_ID": "your_app_id",
"FEISHU_APP_SECRET": "your_app_secret",
"FEISHU_REFRESH_TOKEN": "your_refresh_token"
}配置完成后,重启 Claude Desktop 即可使用。
6. 测试连接
npm run build
npx tsx test-client.ts可用工具
日历相关
工具名 | 描述 | 必需参数 |
| 获取日历列表 | - |
| 获取日历详情 | calendar_id |
| 创建日历 | summary |
| 更新日历 | calendar_id |
| 删除日历 | calendar_id |
日程事件相关
工具名 | 描述 | 必需参数 |
| 获取日程列表 | calendar_id |
| 获取日程详情 | calendar_id, event_id |
| 创建日程 | calendar_id, summary, start_time, end_time |
| 更新日程 | calendar_id, event_id |
| 删除日程 | calendar_id, event_id |
订阅相关
工具名 | 描述 | 必需参数 |
| 订阅日历 | calendar_id |
| 取消订阅日历 | calendar_id |
忙碌状态相关
工具名 | 描述 | 必需参数 |
| 查询忙碌状态 | calendar_ids, start_time, end_time |
| 获取可用时间 | calendar_id, start_time, end_time, duration_minutes |
使用示例
在 Claude Desktop 中使用
查询我的日历列表:
请帮我查询所有日历创建一个日程:
帮我创建一个明天下午2点的会议,主题是"产品讨论会",时长1小时查询某段时间的空闲时间:
查询明天上午9点到12点之间,我有哪段空闲时间可以安排30分钟的会议API 直接调用示例
创建日程(完整参数)
curl -i -X POST \
'https://open.feishu.cn/open-apis/calendar/v4/calendars/{calendar_id}/events?user_id_type=open_id' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {your_user_access_token}' \
-d '{
"summary": "团队周会",
"description": "每周项目进度同步会议",
"start_time": {
"timestamp": "1738360800",
"timezone": "Asia/Shanghai"
},
"end_time": {
"timestamp": "1738364400",
"timezone": "Asia/Shanghai"
},
"visibility": "default",
"attendee_ability": "can_see_others",
"free_busy_status": "busy",
"location": "会议室 A"
}'参数说明
时间参数
参数 | 类型 | 说明 | 示例 |
| string | Unix 时间戳(秒) |
|
| string | 时区 |
|
注意: 飞书 API 使用秒级时间戳,不是毫秒!
可见性 (visibility)
值 | 说明 |
| 默认 |
| 公开 |
| 私密 |
参与者能力 (attendee_ability)
值 | 说明 |
| 可见其他参与者 |
| 不可见其他参与者 |
忙碌状态 (free_busy_status)
值 | 说明 |
| 忙碌 |
| 空闲 |
开发
# 安装依赖
npm install
# 开发模式运行
npm run dev
# 构建
npm run build注意事项
认证方式: 推荐使用 app_access_token(只需 app_id 和 app_secret,最简单)
Token 刷新: refresh_token 会自动刷新 access_token,无需手动干预
时间格式: API 使用 Unix 时间戳(秒)
权限配置: 确保应用已获取足够的权限
API 限制: 飞书 API 有调用频率限制,请注意控制调用频率
许可证
MIT
Available Tools
14 toolsfeishu_create_calendarA
创建新的飞书日历。当用户说"创建日历"、"新建日历"时使用。
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | 日历颜色 (Calendar color, hex format) | |
| summary | Yes | 日历名称 (Calendar name/title) | |
| description | No | 日历描述 (Calendar description) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing beyond the fact that a calendar is created. It does not say whether the calendar is private or shared, what permissions are required, whether the call is idempotent, or what the response returns on success. For a mutation tool with zero annotation coverage this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the action statement front-loaded before the trigger phrases. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (3 flat params, no output schema) and the schema documents all inputs, so the description is minimally sufficient for invocation. However, with no annotations and no output schema, it should have covered the mutation semantics and success behavior, which are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the three fields (color, summary, description) is documented inline, including format hints like hex color. The description adds no parameter meaning of its own, so the baseline of 3 applies — the schema, not the prose, does the work here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb (创建/create) with a specific resource (飞书日历), so the agent knows exactly what the tool produces. It does not explicitly contrast with siblings like feishu_update_calendar or feishu_delete_calendar, but the create/read/update/delete distinction is unambiguous from the verb alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete trigger utterances ('创建日历', '新建日历') that map user intent to this tool, which is genuinely useful routing guidance. It stops short of naming alternatives or stating when NOT to use it (e.g., pre-existing calendar, subscribing to an existing one), so it falls one step short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feishu_create_eventB
创建飞书日程/会议。当用户说"创建日程"、"新建会议"、"安排会议"、"添加日程"、"预约"等类似话语时使用。需要提供日历ID、标题、开始时间和结束时间。
| Name | Required | Description | Default |
|---|---|---|---|
| summary | Yes | 日程标题 (Event title) | |
| end_time | Yes | 结束时间,Unix 时间戳,单位秒 (End time timestamp in seconds) | |
| location | No | 地点 (Location) | |
| timezone | No | 时区,如 Asia/Shanghai (Timezone) | Asia/Shanghai |
| attendees | No | 参与者列表 (Attendees) | |
| start_time | Yes | 开始时间,Unix 时间戳,单位秒 (Start time timestamp in seconds) | |
| visibility | No | 可见性 (Visibility) | |
| calendar_id | Yes | 日历 ID (Calendar ID) | |
| description | No | 日程描述 (Event description) | |
| attendee_ability | No | 参与者能力 (Attendee ability) | |
| free_busy_status | No | 忙碌状态 (Free/Busy status) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It mentions the required inputs but says nothing about side effects (whether attendees are invited/notified), auth/permission needs, or what the call returns. For a mutation tool with zero annotation coverage and 11 parameters, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose, trigger phrases, required inputs, in that order. Every sentence earns its place, though the required-inputs sentence is largely redundant given the schema's required list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists and no annotations, so the description is the only behavioral signal. It adequately covers purpose and trigger conditions but omits side effects and return behavior, leaving the mutation semantics under-specified for an 11-parameter creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with bilingual descriptions on every property, so the schema already documents parameters fully. The description only restates the four required inputs (calendar ID, title, start/end time) and adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('创建飞书日程/会议' – create a Feishu calendar event/meeting), which is unambiguous. It does not explicitly contrast with siblings like feishu_update_event or feishu_create_calendar, but the verb 'create' plus 'event' cleanly separates it from the update/delete/get tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete trigger utterances ('创建日程', '新建会议', '安排会议', '添加日程', '预约') that map user phrasing directly to this tool, which is strong context. It stops short of naming when NOT to use it or pointing to the sibling for updating/moving an existing event, so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feishu_delete_calendarC
删除飞书日历
| Name | Required | Description | Default |
|---|---|---|---|
| calendar_id | Yes | 日历 ID (Calendar ID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Delete' implies a destructive, likely irreversible operation, but the description says nothing about permission requirements, reversibility, or whether deleting a calendar also removes its events — significant omissions for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded phrase with zero waste, which is efficient. It is arguably under-specified rather than verbose, but on pure conciseness and structure it performs well.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is too thin — it omits irreversibility, cascading effects on events, and required permissions. An agent has enough to call it mechanically but not to call it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema coverage, the schema already documents calendar_id fully. The description adds no meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (删除) and resource (飞书日历), which cleanly separates it from the event-oriented siblings like feishu_delete_event and feishu_get_calendar. However, it does not explicitly route the agent among the sibling calendar tools (e.g., update vs. delete), so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as feishu_update_calendar or feishu_unsubscribe_calendar, nor any stated prerequisites (permissions, ownership). The agent must infer everything from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feishu_delete_eventC
删除日程 (Delete event)
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | 日程 ID (Event ID) | |
| calendar_id | Yes | 日历 ID (Calendar ID) |
TDQS
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, and it discloses nothing. For a destructive operation it never states whether deletion is permanent, whether attendees are notified, how recurring events are handled, or what permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is very short with no wasted prose, but the length reflects under-specification rather than discipline, and the bilingual duplication of the same two words adds no information. Nothing is front-loaded because there is nothing to front-load.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with a complete schema and no output schema, the structured fields cover most needs, but the total absence of destructive-operation context (permanence, side effects) leaves an agent under-informed for an irreversible action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both calendar_id and event_id are already documented in the schema and the baseline of 3 applies. The description adds no additional meaning such as format, source, or constraints for either identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a direct restatement of the tool name: '删除日程 (Delete event)' for feishu_delete_event. It identifies the verb and resource only because the name already did, and it offers no differentiation from siblings such as feishu_delete_calendar or feishu_update_event.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, prerequisite, or alternative guidance is given. An agent gets no signal about when deletion is appropriate versus feishu_update_event, or whether the event must first be fetched via feishu_get_event.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feishu_get_available_timeC
获取可用时间段 (Get available time slots)
| Name | Required | Description | Default |
|---|---|---|---|
| end_time | Yes | 结束时间,Unix 时间戳,单位毫秒 (End time timestamp in ms) | |
| start_time | Yes | 开始时间,Unix 时间戳,单位毫秒 (Start time timestamp in ms) | |
| calendar_id | Yes | 日历 ID (Calendar ID) | |
| duration_minutes | Yes | 需要的时长(分钟)(Duration in minutes) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not state whether this is read-only, how availability is computed, whether existing events/working hours/timezones are considered, or any permission needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The bilingual one-line description is front-loaded and free of filler. It is appropriately concise, though extremely terse and could include a small amount of routing context without becoming bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a scheduling query with four required parameters and no output schema or annotations, the description is incomplete. It lacks timezone assumptions, availability computation rules, and any indication of what the returned slots represent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are documented in the input schema. The description adds no extra meaning beyond the schema, such as inclusive/exclusive time boundaries or duration behavior, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('获取可用时间段' / Get available time slots), so the basic action is clear. However, it does not distinguish this from sibling tools like feishu_get_free_busy or clarify the scope of availability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no when-to-use guidance, prerequisites, or alternative-tool comparisons. An agent must infer usage entirely from the name and input schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feishu_get_calendarB
获取指定飞书日历的详细信息,需要提供日历 ID
| Name | Required | Description | Default |
|---|---|---|---|
| calendar_id | Yes | 日历 ID (Calendar ID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only implies a read operation via '获取' and says nothing about return shape, permissions, or error behavior for an invalid ID — thin for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the purpose front-loaded and no filler. Efficient, though it could carry a bit more useful context without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-resource read with 100% schema coverage and no output schema, the description is minimally sufficient. It omits any hint of what the returned detail contains or how to obtain a valid calendar ID.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema description coverage is 100% with the schema documenting 'calendar_id' itself. The description merely restates the requirement ('需要提供日历 ID') without adding format or sourcing detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('获取指定飞书日历的详细信息'), clearly indicating a single-calendar fetch. It does not explicitly name or differentiate from siblings like feishu_get_calendar_list, though '指定' implies one calendar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides the prerequisite ('需要提供日历 ID'), which is basic usage context. However, it gives no guidance on when to use this versus feishu_get_calendar_list or other sibling tools, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feishu_get_calendar_listA
查询所有飞书日历。当用户说"查询日历"、"查看日历"、"我的日历"、"有哪些日历"等类似话语时使用。
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | 每页数量 (Page size), 默认 50 | |
| page_token | No | 分页令牌 (Page token for pagination) |
TDQS
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 does not mention that the operation is read-only or safe, nor does it describe pagination behavior, rate limits, or what the returned data includes. It only restates the purpose and usage triggers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences: the first states the purpose, the second gives usage examples. It is front-loaded with the core action and has no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with well-documented schema parameters and no output schema, the description is adequate but lacks behavioral context such as read-only nature and pagination handling. It covers purpose and usage but leaves gaps that an agent might need to infer safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents both parameters (page_size and page_token) with descriptions and default values. The description adds no additional parameter details, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries all Feishu calendars, giving a specific verb and resource. It distinguishes itself from siblings conceptually by referring to all calendars, though it does not explicitly contrast with feishu_get_calendar (single calendar).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool by listing natural user phrases like '查询日历', '查看日历', '我的日历', '有哪些日历'. This provides clear triggers for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feishu_get_eventC
获取飞书日程详情
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | 日程 ID (Event ID) | |
| calendar_id | Yes | 日历 ID (Calendar ID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the bare action. It does not state whether authentication or calendar access permissions are required, what happens when the event or calendar ID is invalid, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the verb and resource front-loaded; nothing is padded. It is efficient, though the extreme brevity leaves content gaps that conciseness alone cannot justify.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with fully documented parameters and no output schema, the description is minimally sufficient to select and invoke it correctly. However, with no annotations and no return-value guidance, an agent gets no hint about permissions or failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with event_id and calendar_id both documented in the schema, so the baseline of 3 applies. The description adds no additional semantic detail (e.g., ID formats or where to obtain them) beyond what the schema already supplies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (获取) and resource (飞书日程详情), which is clearly a read of a single event. It does not explicitly distinguish itself from the sibling feishu_get_event_list, so the agent must infer the singular-vs-list distinction from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives such as feishu_get_event_list or feishu_get_free_busy. The agent must infer usage purely from the tool name and required IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feishu_get_event_listB
查询飞书日程/事件列表。当用户说"查看日程"、"今天的安排"、"查询日程"、"有哪些会议"等类似话语时使用。需要提供日历 ID。
| Name | Required | Description | Default |
|---|---|---|---|
| end_time | No | 结束时间,Unix 时间戳,单位毫秒 (End time timestamp in ms) | |
| page_size | No | 每页数量 (Page size) | |
| page_token | No | 分页令牌 (Page token) | |
| start_time | No | 开始时间,Unix 时间戳,单位毫秒 (Start time timestamp in ms) | |
| calendar_id | Yes | 日历 ID (Calendar ID) |
TDQS
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 mentions the action and a required input, but fails to disclose pagination behavior (despite page_size/page_token params), rate limits, sorting order, or what happens if no events exist. It does not describe what the returned list contains, which matters because there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficient, two-sentence description with the core purpose first, then trigger phrases. No wasted words. Could be slightly more concise on trigger examples, but they add value for intent matching.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list-fetching tool with 5 parameters (including pagination), no output schema, and no annotations, the description is insufficient. It omits pagination guidance, return shape, time-range filtering behavior, and default values. An agent cannot fully anticipate behavior from this description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 only adds that calendar_id is required, which is already indicated by the required field in the schema. No additional meaning is provided beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: querying a Feishu calendar/event list. It's a list-fetching tool, distinguishable from feishu_get_event (single event) and feishu_get_calendar_list by the 'calendar ID' requirement. However, it doesn't explicitly name the sibling tools it contrasts with, preventing a full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides natural-language trigger phrases (查看日程, 今天的安排, etc.) which give clear usage context. It states the prerequisite of providing a calendar ID. However, it doesn't state when NOT to use this (e.g., vs get_event for a single event) or explicitly cross-reference alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feishu_get_free_busyD
查询用户忙碌状态 (Get user free/busy status)
| Name | Required | Description | Default |
|---|---|---|---|
| end_time | Yes | 结束时间,Unix 时间戳,单位毫秒 (End time timestamp in ms) | |
| start_time | Yes | 开始时间,Unix 时间戳,单位毫秒 (Start time timestamp in ms) | |
| calendar_ids | Yes | 日历 ID 列表 (List of calendar IDs) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It does not state whether this is a read-only operation, what permissions are required, how the busy status is computed, whether it includes all-day events, or what the response format looks like. The description is devoid of any behavioral context beyond the vague purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (a single bilingual phrase), but it is under-specified rather than efficient. It front-loads the core purpose but lacks any supporting detail that would make it useful. For a tool description, being this short without adding value is a weakness, not a strength.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a read tool with no annotations, no output schema, and three required parameters, the description is completely inadequate. It does not explain what the tool returns, whether it aggregates over multiple calendars, how it handles time zones, or any operational constraints. Nothing an agent needs to call it correctly is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already well-documented in the schema (calendar_ids, start_time, end_time with types and units). The description adds no additional parameter information, but because the schema is complete, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is essentially a translation of the tool name: 'feishu_get_free_busy' -> '查询用户忙碌状态' (query user busy status). It restates the name in Chinese and English but adds no specificity, such as what 'busy status' means in output, whether it returns intervals, or how it differs from the sibling feishu_get_available_time. This is tautological and fails to distinguish it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like feishu_get_available_time or feishu_get_event_list. It does not state any conditions, prerequisites, or exclusions, leaving the agent to infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feishu_subscribe_calendarC
订阅日历 (Subscribe to calendar)
| Name | Required | Description | Default |
|---|---|---|---|
| calendar_id | Yes | 日历 ID (Calendar ID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nothing beyond the bare verb. It does not state whether the operation is idempotent, what happens if the calendar is already subscribed, what permissions are required, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short bilingual phrase with no wasted words, but the brevity reflects under-specification rather than tight editing. There is no structure to speak of because there is no substantive content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation-like tool with no annotations and no output schema, the description should carry the safety and behavior profile; instead it offers only the name restated. The only element that is complete (the parameter list) is already covered by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter with 100% schema description coverage, so the schema already documents calendar_id. The description adds no syntax, format, or sourcing detail beyond the schema, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a direct bilingual restatement of the tool name ('订阅日历 / Subscribe to calendar') with no added specificity. It tells the agent nothing the identifier did not already convey and does not distinguish it from its closest sibling, feishu_unsubscribe_calendar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to subscribe, what precondition must hold (e.g. an existing calendar the caller can access), or how this relates to feishu_get_calendar_list / feishu_unsubscribe_calendar. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feishu_unsubscribe_calendarC
取消订阅日历 (Unsubscribe from calendar)
| Name | Required | Description | Default |
|---|---|---|---|
| calendar_id | Yes | 日历 ID (Calendar ID) |
TDQS
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, yet it only restates the tool name. It says nothing about whether the operation is destructive, reversible, requires special permissions, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loads the action, with no wasted words. However, it is so minimal that it lacks any structure beyond a direct translation of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is not complete enough. It omits behavioral context such as side effects, reversibility, and when to use this tool rather than related calendar operations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single parameter calendar_id is already fully documented in the schema. The description adds no additional meaning beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Unsubscribe from calendar'. It clearly conveys the action, though it does not explicitly differentiate this from sibling tools like delete_calendar or subscribe_calendar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, conditions, or the fact that it only removes a subscription rather than deleting the calendar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feishu_update_calendarC
更新飞书日历信息
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | 日历颜色 (Calendar color, hex format) | |
| summary | No | 日历名称 (Calendar name/title) | |
| calendar_id | Yes | 日历 ID (Calendar ID) | |
| description | No | 日历描述 (Calendar description) |
TDQS
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 mentions '更新' (update), which implies a mutation, but it doesn't describe what happens to existing fields, whether the operation is reversible, permission requirements, or the expected response. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the core action. It avoids unnecessary details, though it could be slightly more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool with four parameters, no annotations, and no output schema, the description is incomplete. It fails to mention required permissions, the scope of updates, or any behavioral aspects, leaving the agent under-informed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the input schema already documents all four parameters (color, summary, calendar_id, description) with clear descriptions. The tool description adds no additional meaning beyond what the schema provides, making the baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('更新' / update) and resource ('飞书日历' / Feishu calendar), making the purpose immediately clear. It is distinguishable from siblings like feishu_create_calendar or feishu_get_calendar by the update action, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as feishu_create_calendar or feishu_delete_calendar. It lacks any context about prerequisites (e.g., needing an existing calendar) or scenarios where it should be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
feishu_update_eventD
更新飞书日程
| Name | Required | Description | Default |
|---|---|---|---|
| summary | No | 日程标题 (Event title) | |
| end_time | No | 结束时间,Unix 时间戳,单位毫秒 (End time timestamp in ms) | |
| event_id | Yes | 日程 ID (Event ID) | |
| location | No | 地点 (Location) | |
| start_time | No | 开始时间,Unix 时间戳,单位毫秒 (Start time timestamp in ms) | |
| calendar_id | Yes | 日历 ID (Calendar ID) | |
| description | No | 日程描述 (Event description) |
TDQS
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, yet it says nothing about permissions required, whether updates are partial or full, what happens on missing events, or any response behavior. It is a mutation tool with zero behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and lacks structure, but this is under-specification rather than effective conciseness. It does not front-load any useful information beyond the bare operation name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the description is completely inadequate. It omits any discussion of usage, behavior, or parameter nuances, leaving an agent without sufficient context to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 7 parameters, so the schema already documents meanings. The description adds no additional parameter semantics, making the baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '更新飞书日程' is essentially a Chinese translation of the tool name 'feishu_update_event', making it a tautology that restates the name rather than elaborating on what the tool does. It gives a verb and resource but adds no specificity beyond the name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like feishu_create_event or feishu_update_calendar. The description merely states the operation without any context about prerequisites or appropriate scenarios.
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.
14 tool updates
v1.3.2- First observed
feishu_create_calendar - First observed
feishu_create_event - First observed
feishu_delete_calendar - First observed
feishu_delete_event - First observed
feishu_get_available_time - First observed
feishu_get_calendar - First observed
feishu_get_calendar_list - First observed
feishu_get_event - First observed
feishu_get_event_list - First observed
feishu_get_free_busy - First observed
feishu_subscribe_calendar - First observed
feishu_unsubscribe_calendar - First observed
feishu_update_calendar - First observed
feishu_update_event
TDQS
Scored across 14 tools
Most tools are clearly distinct (e.g., calendar vs event operations). However, feishu_get_available_time and feishu_get_free_busy may overlap in purpose, as both deal with user availability, though free_busy typically shows busy times while available_time suggests open slots. This mild overlap prevents a perfect score.
All tools follow a consistent pattern: 'feishu_' prefix followed by verb_noun (e.g., get_calendar_list, create_event). Naming is uniform and predictable throughout.
With 14 tools, the count is reasonable for a calendar service covering calendars and events, but slightly on the higher end. Each tool appears to have a distinct function, though some could potentially be merged.
The tool set provides comprehensive CRUD coverage for both calendars and events, plus subscription management and availability queries. This covers the core domain thoroughly with no obvious gaps.
Maintenance
Related MCP Connectors
MCP server for Cronofy — read calendars, events and free/busy, and create, update or delete events.
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
A MCP server that works with Google Calendar to manage event listing, reading, and updates.
Hosted MCP server with managed OAuth for 15+ toolkits: Google Workspace, Fitbit, Oura, Kalshi, etc.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceA read-only MCP server that exposes iCalendar feeds as queryable tools for LLM agents, enabling calendar event retrieval and filtering.MIT
- AlicenseNot gradedqualityFmaintenanceProvider-agnostic CalDAV calendar MCP server that connects any CalDAV calendar to AI assistants, enabling calendar operations like listing, creating, updating, and deleting events.AGPL 3.0
- AlicenseAqualityBmaintenanceMCP server for Apple Calendar and CalDAV providers. Enables listing, creating, updating, deleting events, and checking free/busy status with per-calendar write protection.6MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that enables AI agents to interact with Feishu (Lark) for calendar events, attendees, and user recent work via structured tools with graceful degradation and recovery hints.MIT