主题
版本管理
Model Context Protocol 使用基于字符串的版本标识符,格式为 YYYY-MM-DD,用于表示最后一次做出向后不兼容变更的日期。
INFO
只要变更保持向后兼容,协议更新时协议版本不会递增。这样可以在保持互操作性的同时进行增量改进。
修订版
修订版可能被标记为:
- Draft:进行中的规范,尚不可供使用。
- Current:当前协议版本,已可供使用,并可能继续接收向后兼容的变更。
- Final:过去的、完整的规范,将不再变更。
当前协议版本为 2026-07-28。
功能状态
规范中的单个功能还可能根据 功能生命周期与弃用政策被标记为 Deprecated:该功能仍是规范的一部分,但已被安排移除。 已弃用的功能会记录迁移路径(或说明无需迁移), 并在其具备移除资格之前至少在规范中保留十二个月,或在政策的 加速移除例外下至少保留 九十天,之后它们可能在未来的修订版中被 Removed。
当前已弃用的功能列在 已弃用功能注册表中。
协商
每个请求都通过其 _meta 字段中的 io.modelcontextprotocol/protocolVersion 键声明所使用的协议版本,服务端会 独立地接受或拒绝每个请求。在 Streamable HTTP 上,相同的值也携带在 MCP-Protocol-Version 头中。 客户端与服务端 MAY(可以)同时支持多个协议版本。
如果服务端不支持所请求的版本,它会响应一个 UnsupportedProtocolVersionError, 列出其确实支持的版本。客户端随后可以用双方都支持的版本重试该请求,或者如果不存在这样的版本,则向用户呈现错误。
希望预先选择版本的客户端可以调用 server/discover,这是一个强制性的 RPC, 在单个请求中返回服务端支持的协议版本、能力与身份。调用它是可选的:客户端可以自由地直接发送任何请求, 并在收到版本错误时进行处理。
关于与实现基于握手的协议修订版(2025-11-25 及更早版本)的服务端和客户端的互操作性,请参见 向后兼容性。