MCP TypeScript SDK 2.0.0 splits into nine scoped npm packages and fixes a connect failure against modern-only servers
The TypeScript SDK republished itself as a family of separately versioned scoped packages, moving schema sources into a shared core and separating client, server, and framework adapters. The same release corrected a wire-shape mismatch that had caused hard connect failures against servers implementing only the 2026-07-28 revision.
The MCP TypeScript SDK's 2.0.0 release, published July 27, replaces the
single @modelcontextprotocol/sdk package with nine separately
versioned scoped packages: @modelcontextprotocol/core,
@modelcontextprotocol/client, @modelcontextprotocol/server,
@modelcontextprotocol/server-legacy, @modelcontextprotocol/node,
@modelcontextprotocol/express, @modelcontextprotocol/fastify,
@modelcontextprotocol/hono, and @modelcontextprotocol/codemod. Spec
schemas, OAuth schemas, and protocol constants moved into core as a
runtime dependency shared by the rest of the family (PR #2477), and a
codemod package plus two migration guides ship alongside.
The release also corrected a wire-shape mismatch against the final
2026-07-28 revision. Per spec PR #3002, serverInfo
moves from the DiscoverResult body into the result _meta, and the
per-request envelope's clientInfo demotes from required to SHOULD.
Before the fix (PR #2513), the client hard-rejected a conforming
server's DiscoverResult, misclassified the server as legacy, and
attempted an initialize handshake, which the release notes describe
as a hard connect failure against a modern-only server such as go-sdk
v1.7.0-pre.3. A new public constant SERVER_INFO_META_KEY carries the
value io.modelcontextprotocol/serverInfo.
Compatibility work moved in both directions: PR #2456 restored v1 parse
tolerance so a legacy-era tools/call result without content
defaults to an empty array while 2026-era wire schemas stay strict, and
PR #2405 added CommonJS builds alongside ESM. The two type-level breaks
are the removed serverInfo property on DiscoverResult and
clientInfo becoming optional on RequestMetaEnvelope.
A separate legacy-line release, 1.30.0, was published hours before the 2.0.0 set with CI, test, Content-Type validation, and SSE keep-alive changes and no revision claim, so 1.x consumers have a maintained line that does not move to the new wire.
Related spec revisions
- MCP 2026-07-28 - current
How was this verified, and what are the sources?
Published · last verified · confidence 0.95.
- GitHub release page for @modelcontextprotocol/core@2.0.0 - body lists PRs #2477 (schemas into core), #2513 (2026-07-28 wire alignment per spec PR #3002), #2456 (v1 parse tolerance), and #2405 (CommonJS builds), the SERVER_INFO_META_KEY constant, the description of a hard connect failure against a modern-only server such as go-sdk v1.7.0-pre.3, and the two type-level breaks - accessed
- GitHub releases list for modelcontextprotocol/typescript-sdk - shows the nine 2.0.0 scoped-package tags published 2026-07-27 (core, client, server, server-legacy, node, express, fastify, hono, codemod) and the separate legacy-line 1.30.0 tag the same day - accessed