MCP 工具 Schema 构建器
定义一个工具并得到 JSON Schema,严格模式的要求会一并落实。
工具定义描述着你们的内部系统。一切都在浏览器里生成,不会上传。
检查一份你已有的定义
关于 MCP 工具模式构建器
一份工具定义有两件差事,只有一件是 JSON。schema 说明参数是什么形状;描述说明这个工具是干什么的、每个参数意味着什么。一份 schema 可以完全合法,却仍然造出一个在错误时机、带着看似合理的胡话被调用的工具,因为 JSON 里没有任何地方解释这些东西是什么。这个构建器写出 schema,并把两半都查一遍:结构,以及到底有没有把东西说清楚。严格模式也被正确对待:它要求每个属性都列为必填并禁止额外属性,这一点容易让人栽跟头,因为 schema 其余部分看上去毫无变化。
功能特性
- 带类型、描述和可选枚举值的参数
- 当场落实严格模式的"全部必填"规则,而不是事后才发现
- 严格模式开启时正确设置 additionalProperties
- 数组自动补上 items schema
- 参数没有描述时发出警告
- 识别重复的参数名
- 只有一个取值的枚举会被指出是常量
- 输出完整的工具定义,而不只是 schema
如何使用 MCP 工具模式构建器
- 给工具命名,并写清何时该用它
- 逐个添加参数,附上类型和描述
- 勾选哪些是必填,或直接开启严格模式
- 把定义复制进你的 tools 数组
示例
输入
"strict": true
输出
Error: strict mode requires every property to be listed as required
严格模式里没有可选属性:改用允许 null。
常见错误与故障排除
- 严格模式被拒绝。 — 它要求所有属性都必填,且 additionalProperties 为 false。把可选的标为必填并允许 null,或者关掉严格模式。
- 工具被传了错误的参数。 — 多半是参数没有描述。只有名字就得靠猜含义,而 "id" 可以是任何东西。
- 工具在错误的时机被调用。 — 那是工具描述的问题,不是 schema。要写清何时使用、返回什么,而不只是做什么。
- 数组参数被拒绝。 — 数组需要 items schema 说明里面装什么。这里会自动补上。
常见问题
- 严格模式到底改变了什么?
- 它保证参数会与 schema 完全对得上。代价是每个属性都必须列为必填,且不允许额外属性,所以真正可选的参数得建模成"必填但可为 null"。
- 参数描述要写多细?
- 细到只读 schema 的人也知道该填什么:格式、单位、这个值从哪来。"下单时使用的客户邮箱"远比"邮箱"值钱。
- 什么时候该用枚举?
- 当合法取值的集合确实封闭且不长时。它一次性排除一整类错误答案。只有一个取值的枚举会被标出,因为那是常量而不是参数。
- 这对 MCP 工具和 API 工具都适用吗?
- 两种情形下的 schema 都是同一个 JSON Schema 子集。外层包装略有不同,但最容易出错的输入 schema 是完全一样的。
- 什么样的工具描述才算好?
- 两句话说清三件事:做什么、何时用、返回什么。最后一项最常被省略,也最有用,因为它告诉调用方一次调用够不够。
相关工具
更多AI 与智能体工具
查看全部AI 与智能体工具 · 全部工具