MCP migration · TypeScript SDK v2 · 2026-07-28

Still seeing initialize after upgrading MCP v2?

The v2 SDK supports the new stateless MCP protocol, but a manually constructed client uses the legacy handshake by default. Identify your path before changing code.

No signupInteractive checklistPrimary sources linked
Quick answer

SDK version ≠ negotiated protocol era

Upgrading to the TypeScript SDK v2 alone does not turn on MCP revision 2026-07-28. A v2 Client normally starts with the legacy initialize exchange. To probe the modern era and fall back to legacy where supported, set versionNegotiation: { mode: 'auto' }. Official SDK migration guidance ↗

Evidence: official documentation Independently reproduced by Wize: No. This article is a curated diagnostic, not a claim that Wize has run your code or verified your environment.

Free interactive diagnostic

Choose what you are seeing

This runs entirely in your browser and sends no configuration or code to us.

Which description fits?
Likely next step — documentation-backed

Enable era auto-negotiation

What changed?

Three protocol shifts to understand

Handshake removed

Modern 2026 requests do not use the legacy initialize / initialized exchange.

Discovery added

server/discover can advertise server capabilities before a request. SDK auto mode probes it.

Per-request metadata

The modern request carries protocol identity and capabilities in its _meta envelope. No protocol-level session ID is required.

The SDK may serve both protocol eras. Seeing a legacy request does not necessarily indicate a broken installation. MCP official release notes ↗

Avoid false fixes

Check the protocol era before modifying your server

Expected in legacy mode

initialize then notifications/initialized, potentially using a session depending on transport and server implementation.

Expected in modern mode

Optional server/discover probe, then calls with the 2026 metadata envelope; no protocol-level Mcp-Session-Id.

Important: In auto mode, not every probe failure should fall back to legacy. Authentication errors (401/403), server errors (5xx), and some HTTP timeouts are handled as failures in the official SDK guidance. Do not bypass security checks to force a connection.
Reference table

Where behavior differs

ConfigurationStarting behaviorWhat to verify
v1 SDKLegacy protocolConsult the v1 → v2 upgrade guide before copying v2 examples
v2 client, no versionNegotiationLegacy initializeThis is a documented default, not necessarily a bug
v2 client, mode: 'auto'Probes with server/discover; may fall backCheck getProtocolEra() after connection
v2 client, modern pinModern onlyOlder servers may reject negotiation
v2 server, manually constructed McpServerCan remain legacyUse documented modern-serving entry points for the relevant transport
Evidence ledger · Updated 20 October 2026

Sources and confidence

Every actionable statement above is linked to official primary documentation. SDK behavior may change; always confirm the version of the packages installed in your project.

  1. Official MCP TypeScript SDK — supporting revision 2026-07-28. Documents the default legacy behavior, mode: 'auto', modern-only pinning, and server entry points.
  2. Official MCP TypeScript SDK — protocol versions. Describes eras and negotiation.
  3. Official MCP blog — 2026-07-28 specification release. Defines the change to a stateless core.
  4. Official MCP TypeScript SDK — upgrade to v2. For users still on v1.

Evidence categories: protocol facts = primary-source confirmed · proposed decision steps = reasoned guidance from those docs · run in Wize test environment = not yet · customer outcomes = not yet.

Next experiment

What AgentFix Ledger is testing

This page is our first experimental diagnostic asset. We are testing whether version-specific troubleshooting information can be found without outreach and used by visitors. It is free. There is no paid product offered here today.

No visitors, signups, conversion numbers, independent reproductions, or savings are claimed. Such evidence must be collected after actual publication and suitable analytics configuration.

Open machine-readable evidence record ↗
Independent experimental publication by Wize. Not affiliated with or endorsed by the Model Context Protocol project. Code snippets are illustrative and should be reviewed in your own environment.