You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
环境
b150a551)@deepseek-ai/dsh-mcp-client0.1.1-rc.2,@modelcontextprotocol/sdk锁定 1.29.0现象
接入上述服务器后,该服务器的全部
mcp__<server>__*工具都不出现;日志显示连接管理器按指数退避重试 10 次后放弃并注销该服务器所有工具。同机的其他普通 MCP 服务器({type:'object'}形状的 schema)一切正常。根因链
{ $schema, oneOf, $defs },没有根层"type": "object"。这在 MCP 规范 2026-07-28 版(SEP-2106)是合法形状;但 TS SDK 1.x 客户端协商的协议版本是 2025-11-25,该版本要求根层 object。dsh-mcp-client的tools/list直接使用 SDK 的ListToolsResultSchema校验响应,其中Tool.outputSchema是z.object({ type: z.literal('object'), … }).catchall(z.unknown())—— 对每个工具严格校验根type。supportedOutputSchema()会把不支持的 schema 词汇降级为 JsonValue 直通(丢 structuredContent、保留文本投影),但校验在更早的 fetch 阶段就抛错了,这条路径永远走不到。tools/list_changed通知触发的 re-sync 失败时已经会保留旧一代工具表(catch 后仅记日志),说明"逐次降级"在代码里已有先例——只有初始同步路径把 schema 校验错误当成了连接错误。建议
把信任边界上的响应校验收缩到插件实际消费的字段(
name/title/description/inputSchema/execution.taskSupport/_meta),outputSchema以z.unknown().optional()放行,交给既有的assertSupportedJsonSchema子集检查逐工具降级。这样任何第三方对端单个字段不规范时,爆炸半径最多是该工具的 structuredContent 降级,而不是整台服务器消失。我本地按此思路改了一版验证过:宽松 schema 后 windbg-mcp 的 51 个工具全部正常注册、可调用。是否采纳请维护者定夺,谢谢。
All reactions