---
title: "MCP TypeScript SDK 2.0.0 — MCP compatibility"
description: "Any framework that delegates MCP to this SDK inherits its revision. Note that the default is still the 2025-era protocol even at 2.0.0 — the version number and the wire revision move independently."
canonicalUrl: "https://zuplo.com/learn/mcp/compatibility/clients/typescript-sdk"
pageType: "mcp-client"
kind: "Reference SDK, 2.x line"
verified: "2026-07-31"
---

# MCP TypeScript SDK 2.0.0

> Any framework that delegates MCP to this SDK inherits its revision. Note that the default is still the 2025-era protocol even at 2.0.0 — the version number and the wire revision move independently.

_Reference SDK, 2.x line. Protocol revision: `2025-11-25`._

## Support

- **stdio** — Yes
- **Streamable HTTP** — Yes
- **Legacy HTTP+SSE** — Yes
- **Protocol revision** — `2025-11-25`
- **Runs the OAuth flow** — Yes
- **Registration (RFC 7591)** — Yes
- **Metadata document** — Yes
- **Pre-registered client ID** — Yes
- **Sends resource (RFC 8707)** — Yes
- **Validates iss (RFC 9207)** — Unknown
- **Custom headers** — Yes

**Protocol revision.** `2025-11-25` by default, with `2026-07-28` opt-in through the client's version-negotiation option.

## Caveats and sources

Each one names the column it qualifies and cites the page it comes from, which is often not the page in the row's primary source.

### Protocol revision

The migration guide states that nothing in version 2 puts a `2026-07-28` byte on the wire by default, and a hand-constructed client or server keeps speaking the 2025-era protocol. Opt in with a negotiation mode that probes `server/discover`, or pin the modern revision outright.

[Source](https://github.com/modelcontextprotocol/typescript-sdk/blob/main/docs/migration/support-2026-07-28.md)

### Validates iss (RFC 9207)

Unknown rather than yes, and deliberately so. Issuer validation landed in the reference SDKs' 2.x line and is source-verified in the Python SDK's current auth module, but the equivalent TypeScript file wasn't checked, so this cell states missing evidence rather than borrowing the Python result.

[Source](https://github.com/modelcontextprotocol/typescript-sdk/blob/main/src/client/auth.ts)

### Tasks extension

Removed in version 2 and gated out of the modern era on both sides. The related metadata key survives as 2025-era wire vocabulary, importable for interoperability with no runtime behind it.

[Source](https://github.com/modelcontextprotocol/typescript-sdk/blob/main/packages/core/src/constants.ts)

[Primary source](https://github.com/modelcontextprotocol/typescript-sdk/blob/main/packages/core/src/constants.ts)

_This row was last verified 2026-07-31 against the 2026-07-28 revision._

- **Clients** — [every client in the matrix](/learn/mcp/compatibility/clients)
