Skip to content

Implement MCP 2026-07-28#2286

Merged
felixweinberger merged 66 commits into
mainfrom
v2-2026-07-28
Jun 26, 2026
Merged

Implement MCP 2026-07-28#2286
felixweinberger merged 66 commits into
mainfrom
v2-2026-07-28

Conversation

@felixweinberger

@felixweinberger felixweinberger commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Full implementation of the MCP 2026-07-28 specification revision on SDK v2. See the spec changelog for the protocol changes and the RC announcement for context.

This PR collects ~65 reviewed chunk PRs from the v2-2026-07-28 integration branch (#2281 through #2374). Each was reviewed and CI-gated individually before landing on the integration branch.

SEPs implemented

Stateless protocol

  • SEP-2575 / SEP-2567: no initialize handshake, no Mcp-Session-Id; protocol version, client identity and capabilities carried in _meta on every request; server/discover for up-front version selection; ping, logging/setLevel, SSE resumability removed
  • SEP-1865: subscriptions/listen long-lived stream replaces the GET endpoint and resources/subscribe/unsubscribe
  • SEP-2577 / SEP-2596 / SEP-991: @deprecated sweep on the roots/sampling/logging runtime APIs and type surface

Multi-round-trip requests

  • SEP-2322: InputRequiredResult (resultType: "input_required") replaces server-initiated roots/list/sampling/createMessage/elicitation/create; all results carry resultType

Transport

  • SEP-2243: Mcp-Method/Mcp-Name standard request headers on Streamable HTTP POSTs; x-mcp-header parameter mirroring
  • SEP-2549: ttlMs/cacheScope on list/read results; client-side response cache
  • SEP-414: OpenTelemetry trace-context _meta keys (traceparent/tracestate/baggage)

Schema

  • SEP-1613 / SEP-2106: JSON Schema 2020-12 posture; inputSchema/outputSchema accept any 2020-12 keywords; structuredContent accepts any JSON value; default validator is Ajv2020

Authorization

  • SEP-2468: RFC 9207 iss validation in finishAuth()
  • SEP-837 / SEP-2207: DCR application_type and registration metadata defaults
  • SEP-2352: per-authorization-server credential isolation (issuer-stamped tokens/client info)
  • SEP-835: resolved scope applied consistently to DCR and the authorization URL
  • SEP-2350: scope step-up on 403 insufficient_scope (union with challenged scopes)

Removed

  • SEP-2663: experimental tasks removed from core (now an official extension; SDK extension support tracked separately)

Backward compatibility

The SDK continues to interoperate with 2025-era peers. versionNegotiation controls which era the client speaks; createMcpHandler serves both eras from one server.

Migration

Breaking Changes

This is a major-version release (v1 → v2). See the migration guide; every change carries a changeset.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

@changeset-bot

changeset-bot Bot commented Jun 12, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: f4c3ff0

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 9 packages
Name Type
@modelcontextprotocol/client Major
@modelcontextprotocol/server Major
@modelcontextprotocol/core-internal Major
@modelcontextprotocol/server-legacy Minor
@modelcontextprotocol/codemod Patch
@modelcontextprotocol/node Major
@modelcontextprotocol/express Major
@modelcontextprotocol/fastify Major
@modelcontextprotocol/hono Major

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@pkg-pr-new

pkg-pr-new Bot commented Jun 12, 2026

Copy link
Copy Markdown

Open in StackBlitz

@modelcontextprotocol/client

npm i https://pkg.pr.new/@modelcontextprotocol/client@2286

@modelcontextprotocol/codemod

npm i https://pkg.pr.new/@modelcontextprotocol/codemod@2286

@modelcontextprotocol/core

npm i https://pkg.pr.new/@modelcontextprotocol/core@2286

@modelcontextprotocol/server

npm i https://pkg.pr.new/@modelcontextprotocol/server@2286

@modelcontextprotocol/server-legacy

npm i https://pkg.pr.new/@modelcontextprotocol/server-legacy@2286

@modelcontextprotocol/express

npm i https://pkg.pr.new/@modelcontextprotocol/express@2286

@modelcontextprotocol/fastify

npm i https://pkg.pr.new/@modelcontextprotocol/fastify@2286

@modelcontextprotocol/hono

npm i https://pkg.pr.new/@modelcontextprotocol/hono@2286

@modelcontextprotocol/node

npm i https://pkg.pr.new/@modelcontextprotocol/node@2286

commit: f4c3ff0

@felixweinberger felixweinberger changed the title [draft tally] v2-2026-07-28 integration branch vs main [draft tally] Implement stateless in v2-2026-07-28 integration branch - Running Tally Jun 12, 2026
@felixweinberger felixweinberger changed the title [draft tally] Implement stateless in v2-2026-07-28 integration branch - Running Tally [draft tally] Implement stateless Jun 12, 2026
Comment thread test/conformance/src/everythingServer.ts Dismissed
Comment thread .github/workflows/examples.yml Fixed
Comment thread examples/bearer-auth/server.ts Fixed
Comment thread examples/oauth-client-credentials/server.ts Fixed
Comment thread examples/oauth/server.ts Fixed
Comment thread examples/legacy-routing/server.ts Dismissed
Comment thread examples/oauth/server.ts Dismissed
@felixweinberger felixweinberger changed the title [draft tally] Implement stateless [draft tally] Implement 2026-07-28 Jun 22, 2026
@felixweinberger felixweinberger changed the title [draft tally] Implement 2026-07-28 [draft tally] Implement MCP 2026-07-28 Jun 22, 2026
Comment thread examples/bearer-auth/server.ts Fixed
Comment thread examples/oauth-client-credentials/server.ts Fixed
Comment thread examples/oauth/server.ts Fixed
Comment thread examples/scoped-tools/server.ts Dismissed
felixweinberger and others added 18 commits June 24, 2026 13:28
Mirrors the v1.x-2026-07-28 arrangement: pull_request triggers are
unfiltered (PRs targeting the branch already get CI); this adds the
branch to the push filters so post-merge state runs CI too.
Comment thread examples/bearer-auth/server.ts Dismissed
Comment thread examples/oauth-client-credentials/server.ts Dismissed
Comment thread examples/oauth/server.ts Dismissed
felixweinberger and others added 6 commits June 25, 2026 11:48
Co-authored-by: Matt <77928207+mattzcarey@users.noreply.github.com>
Co-authored-by: Konstantin Konstantinov <KKonstantinov@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@felixweinberger felixweinberger marked this pull request as ready for review June 26, 2026 12:44
@felixweinberger felixweinberger requested a review from a team as a code owner June 26, 2026 12:44
@felixweinberger felixweinberger changed the title [draft tally] Implement MCP 2026-07-28 Implement MCP 2026-07-28 Jun 26, 2026
Comment thread packages/client/src/client/authErrors.ts
Comment thread packages/client/src/client/auth.ts
Comment thread packages/client/src/client/auth.ts
@felixweinberger felixweinberger merged commit 1823aae into main Jun 26, 2026
36 checks passed
@felixweinberger felixweinberger deleted the v2-2026-07-28 branch June 26, 2026 13:01
@claude claude Bot mentioned this pull request Jun 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants