Implements SEP-2575 for the MCP Spec 2026-07-28 release.
Tracked by umbrella #334.
Spec summary
Removes the mandatory initialize/initialized handshake. Protocol version and client info travel in _meta on every request; servers can use server/discover to fetch capabilities. Adds messages/listen RPC replacing the GET-SSE channel.
PHP SDK changes
src/Server/Handler/Request/InitializeHandler.php, src/Schema/Request/InitializeRequest.php, src/Schema/Result/InitializeResult.php — keep working for old clients but make optional; gate on protocol version.
src/Server/Protocol.php — drop hard requirement that initialize precedes other calls; route server/discover and messages/listen.
- Add
src/Server/Handler/Request/DiscoverHandler.php and MessagesListenHandler.php; corresponding schemas under src/Schema/Request|Result/.
src/Server/Transport/Http/Middleware/ProtocolVersionMiddleware.php — extend to also read _meta.protocolVersion from JSON-RPC payloads and emit UnsupportedVersionError.
src/Server/Transport/StreamableHttpTransport.php — route streaming through messages/listen POST; legacy GET-SSE deprecated.
src/Client/Protocol.php and src/Client/Builder.php — skip handshake when negotiating new version; emit per-request capabilities/version; handle UnsupportedVersionError retry.
Breaking change. Coordinate with deprecation policy (SEP-2596, umbrella #339).
Related SEPs
Implements SEP-2575 for the MCP Spec 2026-07-28 release.
Tracked by umbrella #334.
Spec summary
PHP SDK changes
src/Server/Handler/Request/InitializeHandler.php,src/Schema/Request/InitializeRequest.php,src/Schema/Result/InitializeResult.php— keep working for old clients but make optional; gate on protocol version.src/Server/Protocol.php— drop hard requirement that initialize precedes other calls; routeserver/discoverandmessages/listen.src/Server/Handler/Request/DiscoverHandler.phpandMessagesListenHandler.php; corresponding schemas undersrc/Schema/Request|Result/.src/Server/Transport/Http/Middleware/ProtocolVersionMiddleware.php— extend to also read_meta.protocolVersionfrom JSON-RPC payloads and emitUnsupportedVersionError.src/Server/Transport/StreamableHttpTransport.php— route streaming throughmessages/listenPOST; legacy GET-SSE deprecated.src/Client/Protocol.phpandsrc/Client/Builder.php— skip handshake when negotiating new version; emit per-request capabilities/version; handleUnsupportedVersionErrorretry.Breaking change. Coordinate with deprecation policy (SEP-2596, umbrella #339).
Related SEPs