Skip to content

[Server][Protocol] SEP-2260: Scope server-to-client requests to in-flight client requests #343

@chr-hertel

Description

@chr-hertel

Implements SEP-2260 for the MCP Spec 2026-07-28 release.

Tracked by umbrella #334.

Spec summary

Servers can only send requests to clients (sampling, elicitation, roots/list) as a child of an in-flight client request. Unsolicited server-to-client requests are removed in preparation for stateless transports.

PHP SDK changes

  • src/Server/Protocol.php — Fiber-based server-initiated requests must validate they are running inside a client request's Fiber context. Block/error on unsolicited dispatch.
  • src/Schema/Request/CreateSamplingMessageRequest.php, ElicitRequest.php, ListRootsRequest.php — require/encode the originating client request ID in _meta (verify final spec field name).
  • src/Client/Protocol.php — client must reject server-initiated requests with no associated client request ID.
  • Update Fiber suspension docs in CLAUDE.md and docs/server-client-communication.md.

Notifications remain unaffected (this is requests-only).

Breaking change. Touches public Fiber suspension behavior used by tool authors.

Related

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 componentP0Broken core functionality, security issues, critical missing featureServerIssues & 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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions