Releases Index
Model Context Protocol

Model Context Protocol

$npx @buildinternet/releases get modelcontextprotocol
Recently Shipped9 releases · updated Oct 24, 2026

Recently shipped TypeScript SDK 2.4.0 and Python SDK 2.3.0, tightening x-mcp-header validation to the 2026-07-28 spec.

Tool header annotations are now enforced on both SDKs.

  • TypeScript rejects x-mcp-header on a number parameter: the client drops the tool from its listing, and the server answers calls to it with -32020. Use z.int() instead.
  • Python raises InvalidSignature at registration for anything but a plain str, int, or bool parameter — including str | None, float, lists, and enums — where previously the server started and clients silently omitted the tool.
  • Header names must be valid tokens and unique case-insensitively.

OAuth credentials are bound to the server that issued them.

  • Machine-to-machine providers now want expectedIssuer; constructing them without it is deprecated and logs a warning.
  • expectedResource on requireBearerAuth accepts only tokens issued for this server, and fetchToken() throws AuthorizationServerMismatchError before sending anything when client information belongs elsewhere.
  • Stored tokens and client information gained an issuer field — storage that rejects unknown fields must allow it.

Stateless servers and stricter transport defaults. Server.connect() now rejects while already connected, and a stateless Streamable HTTP transport handles one request, so build the server inside the handler. List calls return the whole list. HTTP transports follow redirects only within the same origin unless redirectPolicy: 'follow' is set.

Schema output and validation changed shape. On a 2025-11-25 connection, outputSchema from z.object(...).meta({ id }) is no longer wrapped: read structuredContent, not structuredContent.result. The bundled Ajv validator (fast-uri 3.1.8) rejects $id or $ref values with invalid URI schemes such as my_tool:output.

New opt-in limits. maxToolInputElements caps array elements and object members in tool arguments, and Python's max_sse_event_size ships alongside a raised floor of httpx2>=2.10.0.

The 1.x line still receives backports — same-origin redirect handling, expectedIssuer, and late registration of declared capabilities — with its README now pointing at v2.

Empty _meta no longer sent; invalid x-mcp-header fails at registration

BreakingThis release4 featuresNew capabilities5 enhancementsImprovements to existing features5 fixesBug fixesAI-tallied from the release notes
Python SDK · v2.3.0

Outbound requests on 2025-11-25 and earlier connections no longer carry an empty "_meta" or empty "params", and tools with invalid x-mcp-header annotations now raise InvalidSignature at registration instead of being silently dropped by clients. Also adds a max_sse_event_size option and requires httpx2>=2.10.0.

Read more ↗

FastMCP import warning backported to 2.0.x

This release1 enhancementImprovements to existing featuresAI-tallied from the release notes
Python SDK · v2.0.1

Imports of mcp.server.fastmcp on 2.0.x now point at the migration guide, backported as a one-off because many users were hitting the error. Users should either pin mcp<2 or upgrade to 2.

Read more ↗

The new roadmap, developed by Core Maintainers with community working groups, organizes protocol work into five priority areas: agentic messaging primitives, HTTP-native transport unification and hardening, agent identity and enterprise-ready security, improved primitives, and improved SDK developer experience. It follows the 2026-07-28 specification release, which removed protocol-level sessions and the initialization handshake, reworked Tasks into an official extension, and added authorization improvements including CIMD and stable Enterprise-Managed Authorization.

Read more ↗