> ## Documentation Index
> Fetch the complete documentation index at: https://mcp.zhcndoc.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 版本控制

模型上下文协议使用基于字符串的版本标识符，遵循 `YYYY-MM-DD` 的格式，
用于表示最后一次进行向后不兼容更改的日期。

<Info>
  只要协议更新时的更改保持向后兼容，协议版本就 *不会* 递增。这允许
  在保持互操作性的同时进行渐进式改进。
</Info>

## 修订

修订可能被标记为：

* **草案**：进行中的规范，尚未准备好供使用。
* **当前**：当前的协议版本，已准备好使用，并且可能继续
  接收向后兼容的更改。
* **最终**：过去的、完整的规范，不会再更改。

**当前**协议版本是 [**2026-07-28**](/specification/2026-07-28/)。

## 特性状态

规范中的单个特性还可以根据
[特性生命周期和弃用政策](/community/feature-lifecycle)被标记为
**已弃用**：该特性仍然是规范的一部分，但计划被移除。
已弃用的特性会记录迁移路径（或说明不需要迁移路径）
，并且在符合政策的
[加速移除例外](/community/feature-lifecycle#expedited-removal)之前，
会至少保留在规范中十二个月，或至少九十天，
在此之后才有资格被移除，之后它们可能会在未来的修订中被**移除**。

当前已弃用的特性列在
[已弃用特性注册表](/specification/draft/deprecated)中。

## 协商

每个请求都会通过其 `io.modelcontextprotocol/protocolVersion` 键在其 [`_meta`](/specification/draft/basic/index#meta) 字段中声明它正在使用的协议版本，而服务器会独立地接受或拒绝每个请求。在 Streamable HTTP 上，同样的值也会携带在 [`MCP-Protocol-Version` 头部](/specification/draft/basic/transports/streamable-http#protocol-version-header) 中。客户端和服务器**可以**同时支持多个协议版本。

如果服务器不支持所请求的版本，它会返回一个 [`UnsupportedProtocolVersionError`](/specification/draft/basic/versioning#protocol-version-negotiation)，并列出它支持的版本。然后客户端可以使用双方都支持的版本重试请求；如果不存在这样的版本，则向用户显示错误。

希望预先选择版本的客户端可以调用 [`server/discover`](/specification/draft/server/discover)，这是一个必需的 RPC，它会在一次请求中返回服务器支持的协议版本、能力和身份。调用它是可选的：客户端完全可以直接发送任何请求，并在返回版本错误时进行处理。

为了与实现了基于握手的协议修订版（`2025-11-25` 及更早版本）的服务器和客户端实现互操作，请参见 [向后兼容性](/specification/draft/basic/versioning#backward-compatibility-with-initialization-based-versions)。
