MCP Release Candidate Survival Guide
MCP 发行候选版是该协议推出以来最大的更新。对于所有构建客户端、服务器和工具的开发者来说,这是一次考验。最终版本将于 2026 年 7 月 28 日发布。请利用这段时间寻找迁移问题。
最大的变化是 MCP 现在是无状态的。
如果您的实现使用了 session IDs 或初始化步骤,则必须修改代码。现在每个请求都会在 metadata 中携带版本和 capability 数据。
这一变化有助于基础设施建设。负载均衡器可以将请求发送到任何服务器实例,而无需与特定服务器保持长连接。
如何处理状态:
- 不要将状态隐藏在连接中。
- 将状态转移到应用程序句柄中。
- 让工具返回一个类似
basket_id的 ID。 - 模型可以在下一次调用时将此 ID 传回。
服务器发起的请求也有所变化。服务器只能在处理客户端调用时发起请求。如果服务器需要更多信息,它会返回一个 InputRequiredResult。随后客户端将使用新数据重试该调用。
MCP Apps 来了。服务器现在可以提供 HTML 界面。Hosts 会在沙箱化的 iframes 中渲染这些界面。这提升了用户体验,但也需要严格的安全保障。
授权机制现在更加严格。
- 使用 OAuth 2.0 和 OpenID Connect。
- 客户端必须验证
issuer参数。 - 授权服务器现在必须发送
issuer参数。
需要注意的弃用项:
- Roots、Sampling 和 Logging 已被弃用。
- 目前它们仍可工作,但请勿在新建项目中使用它们。
- 将 roots 迁移到工具参数中。
- 将 sampling 迁移到直接的模型提供商 API 中。
- 将 logging 迁移到 OpenTelemetry 或 stderr。
Schema 更新:
- 工具 Schema 现在使用完整的 JSON Schema 2020-12。
- 您可以使用
oneOf或anyOf等复杂逻辑。 - 服务器必须限制 Schema 深度以避免错误。
- 更新您的错误处理机制。资源缺失错误现在使用标准的 JSON-RPC 代码
-32602。
如果您发现问题,请在规范仓库中提交 issue,或在 Discord 贡献者频道中提问。
Optional learning community: https://t.me/GyaanSetuAi
