July 28, 2026
The protocol
goes stateless.
The specification published on 2025-11-25 is being replaced. The release candidate locked on May 21. The final publishes on July 28. The spec calls it a breaking change in those words, and every line below links to the pull request that made it.
- removed SEP-2575
initialize, notifications/initialized Every request now carries its own protocol version and client capabilities in _meta.
- removed SEP-2567
Mcp-Session-Id, protocol level sessionsCross call state becomes server minted handles, passed back as ordinary tool arguments.
- removed SEP-2575
Last-Event-ID, SSE resumabilityA broken response stream loses the in flight request. Clients re-issue it as a new one.
- removed SEP-2575
ping, logging/setLevel, notifications/ roots/ list_changed Log level moves per request into _meta.
- added SEP-2575
server/discover Servers MUST implement it, to advertise supported versions, capabilities and identity.
- added SEP-2322
resultType on every resultEither complete, or input_required for a multi round trip interim result.
- added SEP-2322
Multi Round-Trip RequestsReplaces every server initiated request: roots/
list, sampling/ createMessage, elicitation/ create. - added SEP-2243
Mcp-Method, Mcp-NameNow required headers on Streamable HTTP POST requests.
- added SEP-2549
ttlMs, cacheScopeNow required on every list and resource read result, so clients can cache and stop polling.
- deprecated SEP-2577
Roots, Sampling, LoggingStill fully functional, but new implementations should not adopt them.
- deprecated PR #2858
Dynamic Client RegistrationIn favor of Client ID Metadata Documents. Kept for servers that do not support CIMD yet.
- moved SEP-2663
TasksOut of the core protocol and into an official extension, io.modelcontextprotocol/
tasks.
The previous pattern of server-initiated requests is no longer supported. This is a breaking change.
And yet nothing breaks that day.
The same release adopts a feature lifecycle policy with a minimum twelve month deprecation window, so a server written against the old spec keeps working for a year while you move. Hosts are cutting definition cost from their side too. This is not an emergency, and a tool that measures things for a living should be the last one to tell you it is.
It is simply the date on which does mine still comply stops
being a matter of opinion. That is what efaimo check --mcp
is for, and the commands page shows it run against the official
reference server.