The 2026-07-28 Specification · David Soria Parra and Den Delimarsky, lead maintainers · Model Context Protocol, July 28, 2026
MCP goes stateless, and starts a twelve-month clock on Roots, Sampling and Logging
The largest revision since launch retires the initialize and initialized exchange
along with the Mcp-Session-Id header, so any request can land on any server instance
behind an ordinary load balancer. Server-initiated elicitation/create,
sampling/createMessage and roots/list, which needed a held-open stream, are replaced
by Multi Round-Trip Requests: the server returns resultType: "input_required" and the
client retries with answers attached. Streamable HTTP requests must now carry
Mcp-Method and Mcp-Name headers. Roots, Sampling, Logging, Dynamic Client
Registration and the legacy HTTP+SSE transport are all deprecated, with a stated minimum
of twelve months before removal. All four Tier 1 SDKs ship the new version.
Why it matters: The migration cost falls on session identifiers, and the maintainers' guidance is to stop hiding state in the transport: "mint an explicit handle from a tool and have the model pass it back as an argument." If you depend on Sampling or Logging you now have a clock rather than a surprise.