题目
如何处理 MCP 的能力发现、协议版本兼容和工具列表变化?
答案
先确认双方支持的协议版本,再发现能力并读取工具列表,不能仅因为 HTTP 连通就认为可以正常调用。
版本需要明确区分:2025-11-25 及更早版本使用 `initialize` 握手;2026-07-28 版本采用逐请求元数据,并提供 `server/discover` 发现接口。兼容旧服务时,应遵循 SDK 和对应传输规范的降级规则,不要把两套流程混用。
工具通过 `tools/list` 获取,注意分页。列表发生变化时,按当前协议的通知机制或缓存有效期刷新,并重新检查 Schema、权限和同名冲突。
任务运行期间保留实际使用的工具版本和定义摘要。若参数或含义变化,先重新校验;不能用旧 Schema 生成的参数直接调用新版工具。版本不兼容时要给出明确错误,避免无限重连。
参考:[MCP 版本与兼容性](https://modelcontextprotocol.io/specification/2026-07-28/basic/versioning)、[工具发现](https://modelcontextprotocol.io/specification/2026-07-28/server/tools)。
