Skip to content

R6: MCP revision 2026-07-28 on Restlet transports #1640

Open

Description

@jlouvel

Follow-up to #1558, whose R1/R2 scope is delivered (#1562, #1627). ext.mcp serves the SDK's stateless 2025-11-25 profile over HTTP and stdio.

R6 targets MCP revision 2026-07-28, the revision Ikanos speaks today, on the MCP Java SDK's modern stateless server (io.modelcontextprotocol.modern, mcp-core 2.2.0-M2, experimental while it is a milestone). The stateless 2025-11-25 server stays for legacy clients. No sessions: the revision drops them, with initialize, GET streams and resumption.

Gate 0 passed in #1662: the modern server behind a test-only Restlet transport mirroring the SDK's servlet transport. server/discover, tools/list, tools/call (plain and base64 Mcp-Name), a streaming reply over core SSE, header/version/method errors and legacy traffic all behave as the revision requires.

Delivery:

  1. A Restlet transport for the modern server over HTTP and stdio, within the R1 limits; streaming replies and subscriptions/listen over core SSE; cancellation when the client closes a stream.
  2. Both eras on one endpoint: 2026-07-28 _meta to the modern server, initialize and legacy traffic to the stateless 2025-11-25 server.
  3. Registration of modern tools, resources, prompts and completions through the SDK's feature repositories.
  4. A 2026-07-28 client transport adapted from Ikanos' McpStreamableHttpTransport, until the Java SDK has a modern client.
  5. Conformance tests taken from Ikanos' wire tests, corrected where they differ from the revision; interop with Ikanos.

Ikanos side: its client must send client capabilities in _meta, and notifications must get 202, before it interoperates with SDK-based peers (tracked in Ikanos).

Out of scope: sessions; the Tasks extension until the SDK supports it; elicitation and sampling beyond the revision's input_required flow.

Superseded: the first R6 plan targeted the 2025-11-25 Streamable HTTP profile with sessions (listening GET streams, replay, stdio push). Its gate 0 passed in #1659, which stays as evidence should sessions come back.

Related: gRPC R6 (#1561), Smithy R6 (#1559).

Activity

  1. self-assigned this
    on Nov 5, 2026
  2. changed the title [-]R6: MCP sessions, streamed replies and push on Restlet transports[/-] [+]R6: MCP revision 2026-07-28 on Restlet transports[/+] on Nov 7, 2026
  3. jlouvel commented on Nov 7, 2026

    @jlouvel
    CollaboratorAuthor

    Retargeted, see the updated description: MCP R6 now targets revision 2026-07-28, as Ikanos does, on the SDK's modern stateless server (mcp-core 2.2.0-M2, experimental while it is a milestone), with no sessions. Gate 0 passed in #1662. The sessionful plan and its spike (#1659) are kept as superseded. Recorded as decision M8 in the design doc.

  4. jlouvel commented on Nov 13, 2026

    @jlouvel
    CollaboratorAuthor

    Item 2 (both eras on one endpoint) is now refined by #1671: the modern server becomes the core for registration and policy, and legacy traffic is translated at a deletable edge in internal.legacy that exposes nothing 2026-07-28 deprecates or removes. The client side is #1670.

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions