工具设计三件套:JSON Schema、OpenAPI 与 MCP 在 Agent 时代的取舍

导语

Agent 调用工具时,背后其实是三套规范在协作:JSON Schema 定义参数形状、OpenAPI 描述 HTTP 服务、MCP 提供握手与能力协商。三者并非替代关系,而是在协议栈不同层级承担职责。

核心事件

2026 年 Anthropic 把 MCP(Model Context Protocol)从「私有协议」升级为开放标准后,社区开始重新审视工具描述的边界:是继续用 OpenAPI 一统天下,还是切到 MCP 原生工具?还是把 JSON Schema 当作底层事实源,三者共存?LangGraph、Claude Desktop、Cline 等客户端的快速接入,让 MCP 成为新事实标准。

技术解析

工具设计的本质是契约——Agent(调用方)需要知道「我能传什么参数、会拿到什么结果」。三套规范从不同维度回答这个问题:

mermaid diagram

  • JSON Schema 是参数级的「最小公分母」。它只规定字段类型与约束,不关心服务在哪儿、用什么协议。OpenAI function calling、Anthropic tool use、MCP 工具描述底层都用 JSON Schema
  • OpenAPI 是 HTTP 服务级的「完整身份证」。它把 JSON Schema 嵌进 endpoint 描述里,加上 base URL、鉴权、错误码,一份 YAML 就能生成 SDK。但它默认面向同步 HTTP 调用,流式与长连接支持较弱。
  • MCP 是协议级的「握手规范」。它不重新发明 Schema,而是把 JSON Schema 作为 tool definition 的载体,外加 initialize 握手、capability 协商、resources / prompts / tools 三类原语。一次 MCP 连接可以暴露多个工具,并支持双向流。

为什么三者不是替代而是分工:JSON Schema 是「原子」,OpenAPI 是「HTTP 服务的包装盒」,MCP 是「Agent 与工具宿主之间的协议」。把 OpenAPI 文档自动转成 MCP server,已经有多个开源项目在做;反过来,用 MCP 直接描述 HTTP 服务也是可行的。

mermaid diagram

关键点

  • 契约最小化:能 JSON Schema 描述的,不要加 HTTP 包装;不要让 Agent 在简单工具调用上扛 RESTful 路由判断。Atom 工具(如「计算两个数字之和」)用纯 function call 即可,加 OpenAPI 反而引入 base URL 与鉴权噪声
  • MCP 不是 OpenAPI 杀手:OpenAPI 仍是 REST 服务的事实标准,MCP 解决的是「Agent 怎么发现和调用」的协议问题,不是「服务怎么实现」。社区已有多个开源项目能把存量 OpenAPI 服务快速暴露成 MCP server
  • 能力协商是 MCP 的关键差异initialize 握手时客户端声明支持什么(sampling / roots / elicitation 等),服务端声明暴露什么(tools / resources / prompts),双方按交集能力调用。这种「双方各自声明 + 取交集」的模式比「Server 把所有能力塞进 OpenAPI yaml」更稳健
  • JSON Schema 选 Draft 2020-12:支持 if/then/else、nullable、$ref 解析,老版本(Draft 7)在嵌套校验时容易出坑。OpenAI / Anthropic 的工具描述对 Draft 2020-12 关键字($defsprefixItems)兼容度最高
  • 工具描述字段宜精不宜多:description 字段决定 LLM 是否会用对工具。OpenAI 官方建议 100-200 token 内讲清楚功能、参数语义、返回结构,例:「get_weather:查询指定城市的当前天气。参数:city (string, 必填, 城市英文名)。返回:temperature_celsius (number) / humidity (number) / description (string)。失败时返回 error 字段含原因」
  • 错误模式统一:工具返回结构里必须有 erroris_error 字段,否则 Agent 无法区分「调用成功但无数据」与「调用失败」。MCP 把这点写进规范,OpenAPI 只能靠约定

行业影响

未来 12 个月值得观察的方向:MCP registry 生态成熟度、企业内部 OpenAPI → MCP server 的自动转换流水线、多模态工具(图像 / 视频 / 音频)在 MCP 原语下的统一描述,以及 Anthropic 把 MCP 升级为开放标准后其他厂商(OpenAI、Google DeepMind)的接入节奏。从工程团队视角,建议先把内部高频工具(数据库查询、文档检索、CI/CD 触发)用 MCP 暴露给 Agent,再考虑把外部 OpenAPI 服务桥接进来。

结语

工具设计的复杂度不在「描述」,而在「让 Agent 在错误使用前就知道怎么正确用」。JSON Schema、OpenAPI、MCP 各管一摊,搭配得当比单押一个更稳。对刚起步的团队,建议先从 MCP + JSON Schema 起步,工具数量超过 20 个再考虑接入 OpenAPI gateway 做统一管理。

参考资料

官方文档

开源项目

行业报道

社区讨论

对比基准


本文由 AI 生成。内容基于公开资料整理,可能存在事实偏差,引用链接请以原始来源为准。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注