版本管理
社区译文;来源: MCP 80041ab0
模型上下文协议使用 YYYY-MM-DD 格式的字符串版本标识符,表示最后一次引入向后不兼容变更的日期。
只要变更保持向后兼容,协议更新就_不会_递增协议版本。这样既能逐步改进协议,也能保持互操作性。
版本修订
修订可能会标记为:
- 草案:仍在编写、尚未准备好投入使用的规范。
- 当前:已可使用的当前协议版本,后续仍可能接收向后兼容的变更。
- 最终版:已经定稿且不再变更的历史规范。
当前协议版本为 2026-07-28。
功能状态
根据功能生命周期和弃用政策,规范中的单项功能还可以标记为已弃用:该功能仍属于规范的一部分,但已计划移除。已弃用功能必须说明迁移路径(或明确无需迁移),并在规范中保留至少十二个月;若适用政策中的加速移除例外,则至少保留九十天。满足期限后,该功能才有资格在后续修订中标记为已移除。
当前已弃用的功能列在已弃用功能注册表中。
协商
每个请求都通过其 _meta 字段中的 io.modelcontextprotocol/protocolVersion 键声明所使用的协议版本,服务器则独立接受或拒绝每个请求。使用 Streamable HTTP 时,同一值还会通过 MCP-Protocol-Version 标头传递。客户端和服务器**可以(MAY)**同时支持多个协议版本。
如果服务器不支持请求的版本,它会返回 UnsupportedProtocolVersionError,其中列出服务器支持的版本。客户端随后可以使用双方共同支持的版本重试;如果不存在共同版本,则向用户显示错误。
希望预先选择版本的客户端可以调用 server/discover。这是服务器必须实现的 RPC,可在单个请求中返回服务器支持的协议版本、能力和身份信息。客户端不必先调用它,也可以直接发送任意请求,并在服务器返回版本错误时进行处理。
要与实现基于握手的协议修订版(2025-11-25 及更早版本)的服务器和客户端互操作,请参阅向后兼容性。