Skip to content

R1/R2: Implement SDK-backed MCP extension on Restlet transports #1558

Closed

Description

@jlouvel

Follow-up to R0 draft PR #1556. MCP SDK 2.1.0 stateless HTTP/2, Streamable initialization/POST SSE, bounded GET notifications/replay and official STDIO round-trip are demonstrated. R0 does not authorize Ikanos migration: direct revision/session compatibility fails; the tools fixture matches 19/20 corpus responses, with one Jackson diagnostic difference and an explicit null-ID SDK restriction.

Acceptance: independent org.restlet.ext.mcp APIs; SDK-owned codecs/dispatch; explicit owned/borrowed connector lifecycle and finite byte/queue limits; supported module-path seams; strict revision/profile validation; R1 generic STDIO mechanics before R2 framing helpers; bounded Reactor bridges and cancellation; preserve no-session notifications/error semantics. Recheck complete profile, identity/capability checks and parser diagnostics before any migration. Production SSE/reconnect conformance remains R6. No common RPC API, duplicate dispatcher or SDK-owned HTTP engine. No Ikanos source-copy/header decision is needed for the R0 fixtures; agree attribution before any later copying.

Activity

  1. jlouvel commented on Nov 5, 2026

    @jlouvel
    CollaboratorAuthor

    R1 (#1562) and R2 (#1627) are merged into 3.0, covering this issue's acceptance:

    • org.restlet.ext.mcp uses SDK-owned codecs and dispatch: McpServerAdapter, McpClientAdapter, McpInterceptor and McpRequestContext, with no common RPC API and no duplicate dispatcher.
    • Connectors are borrowed or owned explicitly, with finite byte, queue and STDIO limits (2e98229).
    • It is a named module, exporting only org.restlet.ext.mcp.
    • Only the SDK's 2025-11-25 stateless profile is supported; sessions, listening GET streams, replay and server-initiated requests are deliberately not advertised.
    • Generic STDIO mechanics come from R1's StreamTransport, with the framing helpers (StdioServerHelper, StdioClientHelper) in R2.

    The remaining production SSE and reconnect conformance belongs to R6, which will be tracked separately: sessionful Streamable HTTP behind a spike of the SDK's McpStreamableServerTransportProvider, streamed replies, listening streams and bounded stdio push. Re-checking the profile and attribution before any Ikanos migration stay with Ikanos.

    🤖 Generated with Claude Code

  2. jlouvel commented on Nov 5, 2026

    @jlouvel
    CollaboratorAuthor

    The remaining R6 work is tracked in #1640.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions