Skip to main content
The Model Context Protocol uses string-based version identifiers following the format YYYY-MM-DD, to indicate the last date backwards incompatible changes were made.
The protocol version will not be incremented when the protocol is updated, as long as the changes maintain backwards compatibility. This allows for incremental improvements while preserving interoperability.

Revisions

Revisions may be marked as:
  • Draft: in-progress specifications, not yet ready for consumption.
  • Current: the current protocol version, which is ready for use and may continue to receive backwards compatible changes.
  • Final: past, complete specifications that will not be changed.
The current protocol version is 2025-11-25.

Feature States

Individual features of the specification may additionally be marked as Deprecated under the feature lifecycle and deprecation policy: the feature remains part of the specification, but is scheduled for removal. Deprecated features document a migration path (or state that none is required) and remain in the specification for at least twelve months, or at least ninety days under the policy’s expedited-removal exception, before they become eligible for removal, after which they may be Removed in a future revision. Features that are currently Deprecated are listed in the deprecated features registry.

Negotiation

Every request declares the protocol version it is using via the io.modelcontextprotocol/protocolVersion key in its _meta field, and the server accepts or rejects each request independently. On Streamable HTTP, the same value is also carried in the MCP-Protocol-Version header. Clients and servers MAY support multiple protocol versions simultaneously. If the server does not support the requested version, it responds with an UnsupportedProtocolVersionError listing the versions it does support. The client can then retry the request with a mutually supported version, or surface an error to the user if none exists. Clients that want to select a version up front can call server/discover, a mandatory RPC that returns the server’s supported protocol versions, capabilities, and identity in a single request. Calling it is optional: a client is free to send any request directly and handle a version error if one comes back. For interoperability with servers and clients that implement the handshake-based protocol revisions (2025-11-25 and earlier), see Backward Compatibility.