YYYY-MM-DD 格式,用于标示最近一次做出向后不兼容变更的日期。
只要变更保持向后兼容,协议在更新时就不会递增协议版本。这样既能进行增量改进,又能保持互操作性。
修订状态(Revisions)
修订可以被标记为:- 草案(Draft):进行中的规范,尚未准备好供使用。
- 当前(Current):当前的协议版本,已可供使用,并且可能继续收到向后兼容的变更。
- 最终(Final):过去的、已完成的规范,不会再被更改。
特性状态(Feature States)
规范中的各个特性还可以根据特性生命周期与弃用策略被额外标记为 已弃用(Deprecated):该特性仍属于规范的一部分,但已计划被移除。已弃用的特性会记录迁移路径(或声明无需迁移),并且在符合移除条件之前会在规范中至少保留十二个月,或在该策略的加速移除例外下至少保留九十天;此后,它们可能在未来的某个修订中被 移除(Removed)。 当前处于已弃用状态的特性列在已弃用特性登记表中。协商(Negotiation)
每个请求都会通过其_meta 字段中的 io.modelcontextprotocol/protocolVersion 键声明它所使用的协议版本,服务器会独立地接受或拒绝每个请求。在 Streamable HTTP 上,同一个值还会通过 MCP-Protocol-Version header 携带。客户端和服务器可以同时支持多个协议版本。
如果服务器不支持所请求的版本,它会以一个 UnsupportedProtocolVersionError 响应,其中列出它所支持的版本。客户端随后可以使用双方都支持的版本重试该请求,或者在不存在这样的版本时向用户呈现一个错误。
想要预先选择版本的客户端可以调用 server/discover,这是一个强制性的 RPC,它在单个请求中返回服务器所支持的协议版本、能力和身份标识。调用它是可选的:客户端完全可以直接发送任意请求,并在收到版本错误时进行处理。
若需与实现基于握手的协议修订(2025-11-25 及更早版本)的服务器和客户端进行互操作,请参阅向后兼容。