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。
  • 您可以使用 oneOfanyOf 等复杂逻辑。
  • 服务器必须限制 Schema 深度以避免错误。
  • 更新您的错误处理机制。资源缺失错误现在使用标准的 JSON-RPC 代码 -32602

如果您发现问题,请在规范仓库中提交 issue,或在 Discord 贡献者频道中提问。

Source: https://dev.to/bengreenberg/the-mcp-release-candidate-survival-guide-apps-auth-deprecations-and-tool-schemas-5da2

Optional learning community: https://t.me/GyaanSetuAi