Skip to content

[2026-07-28] Stateless Core overhaul #334

Closed
4 of 4 issues completed
Closed

Description

@chr-hertel

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

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.

Activity

  1. added
    ServerIssues & PRs related to the Server component
    ClientIssues & PRs related to the Client component
    SchemaIssues & PRs related to the Schema component
    breaking changeBreaking the Backwards Compatibility Promise
    P0Broken core functionality, security issues, critical missing feature
    improves spec complianceImproves consistency with other SDKs such as TyepScript
    enhancementRequest for a new feature that's not currently supported
    on May 26, 2026
  2. changed the title [-][Tracking] MCP Spec 2026-07-28 — Milestone A: Stateless Core overhaul[/-] [+][2026-07-28] Stateless Core overhaul[/+] on May 26, 2026
  3. added
    2026-07-28All issues and PRs related to the spec release 2026-07-28
    on May 26, 2026
  4. DevkumarPatel commented on Jul 7, 2026

    @DevkumarPatel
    Contributor

    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 management MAY). Touches only Builder.php + Protocol::resolveSession() (skip setSessionId() on initialize; skip the !$sessionId/!exists() rejections; ephemeral per-request session). This ships value immediately, exercises the "no Mcp-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/list from session state, audit handlers reading $session->get(...), downgrade Mcp-Session-Id to optional-legacy.

    Phase 2 — #340 (SEP-2575): make the initialize/initialized handshake optional behind protocol-version gating; add DiscoverHandler + MessagesListenHandler; route streaming through messages/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:

    1. Are you open to an external contributor driving this, or would you prefer to own the breaking core and take focused PRs from me (e.g. Phase 0 + [Server] SEP-2567: Remove session dependency for list endpoints; deprecate Mcp-Session-Id #341)?
    2. Shared feature branch, or PRs straight to main behind version gates?
    3. Any design constraints on the deprecation shims I should know up front?

    Happy to start with Phase 0 as a standalone PR to establish the pattern while we align on the rest.

  5. removed
    P0Broken core functionality, security issues, critical missing feature
    on Aug 19, 2026
  6. chr-hertel commented on Aug 19, 2026

    @chr-hertel
    MemberAuthor

    All four sub-issues are closed — #340, #341, #342, #343 landed via PRs #443, #444, #446, #447, #448, #449, #455, #456, #457.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    2026-07-28All issues and PRs related to the spec release 2026-07-28ClientIssues & PRs related to the Client componentSchemaIssues & PRs related to the Schema componentServerIssues & PRs related to the Server componentbreaking changeBreaking the Backwards Compatibility PromiseenhancementRequest for a new feature that's not currently supportedimproves spec complianceImproves consistency with other SDKs such as TyepScript

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions