Skip to content

Track migration to MCP spec 2026-07-28 (stateless, MRTR, deprecated Sampling) #130

Open

Description

@mattpodwysocki

Summary

The MCP spec released a new revision on 2026-07-28 (announced at https://blog.modelcontextprotocol.io/posts/2026-07-28/) that moves from the stateful bidirectional protocol to a stateless request/response model. Key changes relevant to us:

  • The initialize/initialized handshake and session IDs are eliminated; each request is self-describing.
  • Server-initiated elicitation is replaced by "Multi Round-Trip Requests" (MRTR).
  • Sampling is deprecated.
  • Roots and Logging are also deprecated.
  • Header-based routing, cacheable list results, tasks moved to an official extensions framework.
  • Security: RFC 9207 issuer validation required, shift from Dynamic Client Registration toward Client ID Metadata Documents (CIMD).
  • Deprecations get a 12-month minimum window; legacy HTTP+SSE transport gets a year-long offramp. No fire drill, but not indefinite either.

As of this issue, @modelcontextprotocol/sdk on npm is still on the 1.x line (1.30.0 latest) — there is no separate 2.0.0 package. The new spec appears to be supported via 1.x releases, not a major SDK version bump.

Why this needs a dedicated pass, not an incidental bump

This repo is actively building on the mechanisms this spec revision replaces/deprecates — most concretely, the in-progress add-preview-token-elicitation work (PR #57) depends on server-initiated elicitation, the exact thing MRTR replaces. Migrating means redesigning against whatever MRTR's actual API surface turns out to be, not just bumping a dependency version.

What to check before starting

  • Confirm real client support for MRTR (Claude Desktop, Claude Code, VS Code Copilot) — no point redesigning against a mechanism clients can't use yet.
  • Read the SDK's actual migration guide/changelog for the TypeScript SDK version(s) that implement 2026-07-28 support.
  • Audit this repo for every current use of elicitInput/Sampling beyond the in-progress PR [security] Add MCP elicitation for secure preview token handling #57 work.

Non-goals for now

  • No urgency given the 12-month deprecation window.
  • The routine SDK dependency bump (1.29.0 → 1.30.0) is handled separately and does not itself adopt the new spec — see the corresponding PR.

See also mapbox/mcp-server#245 for the equivalent tracking issue there.

Activity

  1. mattpodwysocki commented on Aug 5, 2026

    @mattpodwysocki
    ContributorAuthor

    Correction/clarification: the "2.0" isn't a future release of `@modelcontextprotocol/sdk` — that package is being retired entirely. Per https://blog.modelcontextprotocol.io/posts/sdk-betas-2026-07-28/, TypeScript v2 splits it into separate focused packages (`@modelcontextprotocol/server`, `@modelcontextprotocol/client`), currently beta-only (`npm install @modelcontextprotocol/server@beta`), no stable release yet, with a dedicated codemod (`npx @modelcontextprotocol/codemod@beta v1-to-v2 .`) to help migrate.

    So this migration is two layers, not one:

    1. The spec revision itself (stateless model, MRTR, deprecated Sampling) — already covered above, and directly relevant given the in-progress `add-preview-token-elicitation` work (PR [security] Add MCP elicitation for secure preview token handling #57).
    2. A full package rewrite: every `@modelcontextprotocol/sdk` import in this repo would need to move to the new package(s), likely with API surface changes beyond just import paths, plus whatever `@modelcontextprotocol/ext-apps` needs on its end.

    Given it's beta with no stable release and a provided codemod (a strong signal the API surface actually changed meaningfully, not just moved), this reinforces: no urgency, worth revisiting once v2 stabilizes.

  2. SovRock commented on Oct 21, 2026

    @SovRock

    Readiness update (2026-10-22)

    The August clarification is now out of date: the TypeScript v2 packages are stable, not beta-only. npm reports @modelcontextprotocol/server and @modelcontextprotocol/client at 2.3.1 (published Oct 5), and @modelcontextprotocol/ext-apps at 2.0.3 (published Sep 25). The current ext-apps package peers on @modelcontextprotocol/core, @modelcontextprotocol/client, and @modelcontextprotocol/server ^2.0.0, so package-level v2 compatibility is now available. The official v1→v2 guide and 2026-07-28 protocol guide describe separate migration steps and an official codemod:

    Client support remains unconfirmed. The current public Claude Code MCP guide and VS Code MCP guide establish general MCP support but do not document explicit support for the 2026-07-28 revision or MRTR. The VS Code guide also notes interactive-input limitations for Copilot harness sessions. I found no version-specific MRTR confirmation for Claude Desktop in the public docs reviewed. These are gaps in public evidence, not proof that the clients do not support MRTR; test current client releases directly before relying on it.

    Repository audit: the current tree still depends on @modelcontextprotocol/sdk ^1.30.0 and @modelcontextprotocol/ext-apps ^1.1.1. The server uses StdioServerTransport, the legacy initialize/oninitialized handshake, client-capability inspection, and Logging notifications. No active Sampling, Roots, or elicitInput API calls were found under src/ or test/; ELICITATION_TOOLS is currently an empty scaffold. SDK imports are widespread and the UI resources use ext-apps. The open #57 adds elicitation-based preview token handling and will need to be revisited for MRTR before it is merged into a migrated server.

    Suggested trigger: proceed with the v2/package migration when client testing confirms MRTR works in the target clients, or when this server explicitly accepts an interim legacy-only experience. Keep the v1→v2 package migration and the wire-protocol opt-in as separate, reviewable steps; for stdio, the official guide calls for the v2 serveStdio entry point to serve the new revision. No dependency or code changes were made in this readiness pass.

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