快速结论:这个报错通常发生在把 n8n 自托管的 MCP Server 端点(/mcp-server/http)接入 2026 年 8 月中旬更新后的 Claude Desktop / Claude Code 时。由于 n8n 在 2.34.x 中给每个工具的 outputSchema(以及 inputSchema)打上了 draft-07 的 $schema 标记,而受影响的客户端只支持 JSON Schema 2020-12,导致所有工具被静默拒绝、聊天里看不到任何工具。优先排查 n8n 版本与客户端内置校验器版本。
适用环境:n8n 2.34.x(含 2.34.0、2.34.1、2.34.3、2.34.5、2.34.6),自托管于 Windows,通过 Node.js 运行;客户端为 Claude Desktop 1.30096.1(Windows);连接方式为 npx mcp-remote http://localhost:5678/mcp-server/http。Issue 中提到的客户端校验器来自 @modelcontextprotocol/server 的 2.0.0-alpha.4 至 2.0.0-beta.5 构建。
最快修复方案:Issue 中暂无确认的一步修复方案。已确认的两条路线是:一是把 n8n 升级到 2.35.0 及以上(该版本在 tool-schema.util.ts 中执行了 delete jsonSchema.$schema,但 Issue 关闭时 2.35.x 尚未进入 stable,仅在 beta 通道);二是客户端侧升级到 @modelcontextprotocol/server 稳定版 2.0.0,该版本已能识别 draft-07 方言。若两者都暂时无法落地,可使用 Issue 中已验证的本地 stdio 代理,删除 $schema 字段。
注意事项:删除 $schema 会把文档重新解释为 2020-12,而 draft-07 与 2020-12 在少数关键字上语义不同(例如 draft-07 的 items: [A, B] 是位置元组校验,2020-12 需要 prefixItems;draft-07 忽略 $ref 的兄弟关键字,2020-12 会应用)。Issue 中对全部 34 个工具扫描后未发现这类结构,但该结论仅在 2.34.6 实例上验证过。代理只应删除 $schema,不要删除 outputSchema,否则会丢掉输出校验。2.35.x 上的行为尚未被实际运行验证。
问题场景
用户在 n8n 2.34.x 自托管实例上启用实例级 MCP Server 端点,并通过 npx mcp-remote 将其连接到更新后的 Claude Desktop 或 Claude Code 后,调用工具列表(tools/list)时所有工具被拒绝。MCP 连接器在 Claude 的本地 MCP 设置里显示为“running”,但聊天中一个工具都看不到,也没有可见错误提示,用户感知上属于静默失效。
报错原文
Tool 'X' has an invalid outputSchema: JSON Schema declares an unsupported dialect ("$schema": "http://json-schema.org/draft-07/schema#")
The default validator supports JSON Schema 2020-12 only
原因分析
n8n 实例级 MCP 端点 /mcp-server/http 在返回工具定义时,为每个工具的 outputSchema 声明了 "$schema": "http://json-schema.org/draft-07/schema#"。受影响客户端的校验器只接受 JSON Schema 2020-12,因此拒绝该方言声明,进而拒绝整个工具。
Issue 中已定位到校验器所在位置为 @modelcontextprotocol/server。其 2.0.0-alpha.4 至 2.0.0-beta.5 的报错文案为“只支持 2020-12”;而稳定版 2.0.0 的文案已扩展为支持 2020-12、2019-09、draft-07 和 draft-06,并在解析时去掉尾部 # 后判断 URI 是否属于 draft-07 集合。n8n 发出的正是 http://json-schema.org/draft-07/schema#,去掉 # 后正好命中该集合,因此稳定版客户端可以原样编译 n8n 的 schema。据此推断,受影响客户端运行的是 2.0.0-beta.x 构建。
此外,Issue 中还修正了原报告的一点:inputSchema 同样带有该 $schema 标记。在线上 2.34.6 实例中,34 个工具的 34 个 inputSchema 和 34 个 outputSchema 全都带标记;当前客户端在输入路径接受它、在输出路径失败,所以只有输出路径表现出症状。
环境排查
- 确认 n8n 版本:
2.34.0、2.34.1、2.34.3、2.34.5、2.34.6均不含修复;2.35.0、2.35.3含修复。Issue 关闭时(2026-08-16 前后)dist-tag 为stable = 2.34.6、beta = 2.35.3。 - 确认客户端校验器版本:查你的 MCP 客户端所依赖的
@modelcontextprotocol/server是否为2.0.0-beta.x;稳定版2.0.0已能接受 draft-07。 - 确认 Claude Desktop 版本:Issue 中为
1.30096.1(Windows)。 - 确认连接方式与鉴权头是否正确(
Authorization: Bearer),以确保请求确实到达 n8n MCP 端点。 - 用下方复现命令数一下端点返回中 draft-07 出现的次数,判断服务端是否仍在打标。
解决步骤
- 先用 Issue 提供的命令确认服务端确实在输出 draft-07 标记:
curl -s -X POST "$N8N_URL/mcp-server/http" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \ | sed -n 's/^data: //p' | grep -o 'json-schema.org/draft-07' | wc -l在 2.34.6 上输出为 68(34 个
inputSchema+ 34 个outputSchema);如果按源码推断正确,在 2.35.x 上应为 0。Issue 作者未实际在 2.35.x 上运行验证。 - 如果服务端仍在打标,选择下列任一方向(Issue 将其描述为用户在“升级”和“本地绕过”之间的取舍):
- 服务端路线:升级到 n8n 2.35.x。修复来自
packages/cli/src/modules/mcp/tool-schema.util.ts,由 #35467 引入,核心改动为delete jsonSchema.$schema;;在 tag 2.35.0 中mcp.service.ts:347-348会让inputSchema与outputSchema都经过该函数。2.35.0 还包含 #35610。 - 客户端路线:让客户端厂商把
@modelcontextprotocol/server升级到稳定版 2.0.0,该版本已支持 draft-07 方言解析。
- 服务端路线:升级到 n8n 2.35.x。修复来自
- 如果两条路线都无法立即落地,Issue 中已验证的临时方案是部署一个本地 stdio 代理,在转发 MCP 消息时删除
$schema字段。Issue 明确给出可用提示词,可直接粘贴到 Claude Code、Cursor 等编码代理中生成一个无依赖的单文件.mjs代理。其要点:- 只删除
$schema,保留outputSchema本体,这样输出校验仍然生效,行为与 2.35.0 保持一致。 - 代理需要处理 MCP stdio 的按行分隔 JSON-RPC 帧,并从
tools/list响应中剥离标记。 - 该代理在线上 2.34.6 实例上验证过:34 个被剥离 schema 的输出在 Ajv 2020-12 下全部可编译,8 个只读工具返回的真实
structuredContent也能通过剥离后的 schema 校验。
- 只删除
- 升级或代理落地后,建议对全部工具做一次扫描,确认没有依赖 draft-07 专有语义的结构(如
items数组形式的元组校验、$ref旁挂兄弟关键字)。Issue 指出其扫描的 34 个工具中未出现这类构造,但若你的工具集包含它们,删除$schema会改变校验语义。
验证方法
重跑上面的 tools/list 命令,确认输出中 json-schema.org/draft-07 的计数为 0。然后在 Claude Desktop / Claude Code 中重新连接该 MCP 连接器,确认聊天中可以列出并使用工具,而非连接器仍显示 running 却无任何工具;对只读工具执行一次调用,确认返回内容与 structuredContent 正常,并且没有再出现 has an invalid outputSchema 报错。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug]: Kimi-K3-NVFP4 on 8xB300 produces degenerate, incoherent output in the reasoning channel on v0.27.0](https://www.chat-gpts.plus/wp-content/uploads/2026/09/51798-e8ba3af0-768x403.jpg)

