ArrayKit

MCP 工具 Schema 构建器

定义一个工具并得到 JSON Schema,严格模式的要求会一并落实。

MCP 工具 Schema 构建器

定义一个工具并得到 JSON Schema,严格模式的要求会一并落实。

工具定义描述着你们的内部系统。一切都在浏览器里生成,不会上传。

检查一份你已有的定义

关于 MCP 工具模式构建器

一份工具定义有两件差事,只有一件是 JSON。schema 说明参数是什么形状;描述说明这个工具是干什么的、每个参数意味着什么。一份 schema 可以完全合法,却仍然造出一个在错误时机、带着看似合理的胡话被调用的工具,因为 JSON 里没有任何地方解释这些东西是什么。这个构建器写出 schema,并把两半都查一遍:结构,以及到底有没有把东西说清楚。严格模式也被正确对待:它要求每个属性都列为必填并禁止额外属性,这一点容易让人栽跟头,因为 schema 其余部分看上去毫无变化。

功能特性

  • 带类型、描述和可选枚举值的参数
  • 当场落实严格模式的"全部必填"规则,而不是事后才发现
  • 严格模式开启时正确设置 additionalProperties
  • 数组自动补上 items schema
  • 参数没有描述时发出警告
  • 识别重复的参数名
  • 只有一个取值的枚举会被指出是常量
  • 输出完整的工具定义,而不只是 schema

如何使用 MCP 工具模式构建器

  1. 给工具命名,并写清何时该用它
  2. 逐个添加参数,附上类型和描述
  3. 勾选哪些是必填,或直接开启严格模式
  4. 把定义复制进你的 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 与智能体工具 · 全部工具