Repository navigation
[2026-07-28] Stateless Core overhaul #334
Copy link
Copy link
Closed
4 / 44 of 4 issues completedLabels
2026-07-28All issues and PRs related to the spec release 2026-07-28All issues and PRs related to the spec release 2026-07-28ClientIssues & PRs related to the Client componentIssues & PRs related to the Client componentSchemaIssues & PRs related to the Schema componentIssues & PRs related to the Schema componentServerIssues & PRs related to the Server componentIssues & PRs related to the Server componentbreaking changeBreaking the Backwards Compatibility PromiseBreaking the Backwards Compatibility PromiseenhancementRequest for a new feature that's not currently supportedRequest for a new feature that's not currently supportedimproves spec complianceImproves consistency with other SDKs such as TyepScriptImproves consistency with other SDKs such as TyepScript
Description
Tracking issue for the MCP Spec 2026-07-28 release — Stateless Core overhaul milestone.
These four SEPs are tightly coupled and should land together to avoid inconsistent intermediate states. They constitute the biggest design impact of the 2026-07-28 release for the PHP SDK: the initialize/initialized handshake disappears, sessions stop being protocol-level, and Fiber-based server→client requests must be scoped per client request.
SEPs covered
| SEP | Title | Spec PR |
|---|---|---|
| SEP-2575 | Make MCP Stateless | #2575 |
| SEP-2567 | Sessionless MCP via Explicit State Handles | #2567 |
| SEP-2322 | Multi Round-Trip Requests | #2322 |
| SEP-2260 | Server requests scoped to client request | #2260 |
Sub-issues
- [Server][Client] SEP-2575: Stateless protocol (per-request version, server/discover, messages/listen) #340 — SEP-2575: Stateless protocol (per-request version,
server/discover,messages/listen) - [Server] SEP-2567: Remove session dependency for list endpoints; deprecate Mcp-Session-Id #341 — SEP-2567: Remove session dependency for list endpoints; deprecate
Mcp-Session-Id - [Server][Transport] SEP-2322: Multi Round-Trip Requests on Streamable HTTP #342 — SEP-2322: Multi Round-Trip Requests on Streamable HTTP
- [Server][Protocol] SEP-2260: Scope server-to-client requests to in-flight client requests #343 — SEP-2260: Scope server→client requests to in-flight client requests
Notes
- All four SEPs are merged into the spec repo as of this filing.
- Breaking changes — coordinate with deprecation policy (SEP-2596, see Milestone F umbrella [2026-07-28] Governance: deprecations, lifecycle, conformance, SDK tier #339).
- Touches:
src/Server/Protocol.php,src/Server/Session/*,src/Server/Transport/StreamableHttpTransport.php,src/Client/Protocol.php,src/Schema/Request/InitializeRequest.php.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
2026-07-28All issues and PRs related to the spec release 2026-07-28All issues and PRs related to the spec release 2026-07-28ClientIssues & PRs related to the Client componentIssues & PRs related to the Client componentSchemaIssues & PRs related to the Schema componentIssues & PRs related to the Schema componentServerIssues & PRs related to the Server componentIssues & PRs related to the Server componentbreaking changeBreaking the Backwards Compatibility PromiseBreaking the Backwards Compatibility PromiseenhancementRequest for a new feature that's not currently supportedRequest for a new feature that's not currently supportedimproves spec complianceImproves consistency with other SDKs such as TyepScriptImproves consistency with other SDKs such as TyepScript
Type
Projects
- StatusShow more project fieldsDone
Activity
[-][Tracking] MCP Spec 2026-07-28 — Milestone A: Stateless Core overhaul[/-][+][2026-07-28] Stateless Core overhaul[/+]DevkumarPatel commentedon Jul 7, 2026
Offering to drive the Stateless Core overhaul — proposed sequencing + a non-breaking on-ramp
I'd like to help land this epic and can commit real time to it. Before writing code I want to align on approach, since these four SEPs are breaking and coupled. Proposed plan:
Phase 0 — non-breaking on-ramp (independent, mergeable now). An opt-in
Server::builder()->stateless()under the current 2025-11-25 spec (transports makes session managementMAY). Touches onlyBuilder.php+Protocol::resolveSession()(skipsetSessionId()on initialize; skip the!$sessionId/!exists()rejections; ephemeral per-request session). This ships value immediately, exercises the "noMcp-Session-Id" path, and de-risks the bigger work — while defaulting to today's stateful behaviour. Guard: reject/no-op server→client request paths (Fiber suspend, sampling, subscriptions) that can't work without a durable session, with a clear error.Phase 1 — #341 (SEP-2567): decouple
tools/list/resources/list/prompts/listfrom session state, audit handlers reading$session->get(...), downgradeMcp-Session-Idto optional-legacy.Phase 2 — #340 (SEP-2575): make the
initialize/initializedhandshake optional behind protocol-version gating; addDiscoverHandler+MessagesListenHandler; route streaming throughmessages/listen.Phase 3 — #342 (SEP-2322) + #343 (SEP-2260): multi round-trip requests and per-client-request scoping of server→client requests (the Fiber path in
Protocol::handleRequest).Each phase as its own PR against a shared integration branch, coordinated with the SEP-2596 deprecation policy (#339).
Questions before I start:
mainbehind version gates?Happy to start with Phase 0 as a standalone PR to establish the pattern while we align on the rest.
chr-hertel commentedon Aug 19, 2026
All four sub-issues are closed — #340, #341, #342, #343 landed via PRs #443, #444, #446, #447, #448, #449, #455, #456, #457.