Skip to main content
模型上下文协议使用基于字符串的版本标识符,遵循 YYYY-MM-DD 的格式, 用于表示最后一次进行向后不兼容更改的日期。
只要协议更新时的更改保持向后兼容,协议版本就 不会 递增。这允许 在保持互操作性的同时进行渐进式改进。

修订

修订可能被标记为:
  • 草案:进行中的规范,尚未准备好供使用。
  • 当前:当前的协议版本,已准备好使用,并且可能继续 接收向后兼容的更改。
  • 最终:过去的、完整的规范,不会再更改。
当前协议版本是 2026-07-28

特性状态

规范中的单个特性还可以根据 特性生命周期和弃用政策被标记为 已弃用:该特性仍然是规范的一部分,但计划被移除。 已弃用的特性会记录迁移路径(或说明不需要迁移路径) ,并且在符合政策的 加速移除例外之前, 会至少保留在规范中十二个月,或至少九十天, 在此之后才有资格被移除,之后它们可能会在未来的修订中被移除 当前已弃用的特性列在 已弃用特性注册表中。

协商

每个请求都会通过其 io.modelcontextprotocol/protocolVersion 键在其 _meta 字段中声明它正在使用的协议版本,而服务器会独立地接受或拒绝每个请求。在 Streamable HTTP 上,同样的值也会携带在 MCP-Protocol-Version 头部 中。客户端和服务器可以同时支持多个协议版本。 如果服务器不支持所请求的版本,它会返回一个 UnsupportedProtocolVersionError,并列出它支持的版本。然后客户端可以使用双方都支持的版本重试请求;如果不存在这样的版本,则向用户显示错误。 希望预先选择版本的客户端可以调用 server/discover,这是一个必需的 RPC,它会在一次请求中返回服务器支持的协议版本、能力和身份。调用它是可选的:客户端完全可以直接发送任何请求,并在返回版本错误时进行处理。 为了与实现了基于握手的协议修订版(2025-11-25 及更早版本)的服务器和客户端实现互操作,请参见 向后兼容性