Skip to content

Version Packages - #2

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
changeset-release/main
Open

Version Packages#2
github-actions[bot] wants to merge 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented Dec 22, 2025

Copy link
Copy Markdown

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or setup this action to publish automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@modelcontextprotocol/client@2.0.1

Patch Changes

  • #2654 03842cd Thanks @pshah19! - Treat request id 0 as a real id. Two guards tested a RequestId for truthiness, so the legal JSON-RPC ids 0 and '' were read as absent. Id 0 is not a corner case: the outbound request counter is zero-based, so it is the first id every peer assigns, which on the server→client leg is the first sampling/createMessage, elicitation/create, or roots/list a server sends.

    • notifications/cancelled carrying id 0 was ignored, and the in-flight handler ran to completion with its AbortSignal never fired.
    • A notification sent with relatedRequestId: 0 wrongly passed the debounce gate (for methods opted into debouncedNotificationMethods). Because the pending set is keyed by method alone, a second such notification in the same tick was silently dropped rather than sent.

    Absent is now the only value that means "no id".

  • #2668 3e90449 Thanks @KKonstantinov! - Stop sending notifications/cancelled for the initialize handshake. The spec is explicit that a client MUST NOT attempt to cancel its initialize request, but the outbound cancel path fired for any in-flight request: aborting the AbortSignal passed to connect(), or letting the handshake hit its timeout, put a forbidden cancellation on the wire naming the initialize request id.

    The local behaviour is unchanged — the caller's promise still rejects with the same abort/timeout error, and connect() still tears the connection down. Only the wire notification is suppressed. Every other method keeps the existing cancellation path.

  • Updated dependencies []:

    • @modelcontextprotocol/core@2.0.1

@modelcontextprotocol/server@2.0.1

Patch Changes

  • #2654 03842cd Thanks @pshah19! - Treat request id 0 as a real id. Two guards tested a RequestId for truthiness, so the legal JSON-RPC ids 0 and '' were read as absent. Id 0 is not a corner case: the outbound request counter is zero-based, so it is the first id every peer assigns, which on the server→client leg is the first sampling/createMessage, elicitation/create, or roots/list a server sends.

    • notifications/cancelled carrying id 0 was ignored, and the in-flight handler ran to completion with its AbortSignal never fired.
    • A notification sent with relatedRequestId: 0 wrongly passed the debounce gate (for methods opted into debouncedNotificationMethods). Because the pending set is keyed by method alone, a second such notification in the same tick was silently dropped rather than sent.

    Absent is now the only value that means "no id".

  • #2668 3e90449 Thanks @KKonstantinov! - Stop sending notifications/cancelled for the initialize handshake. The spec is explicit that a client MUST NOT attempt to cancel its initialize request, but the outbound cancel path fired for any in-flight request: aborting the AbortSignal passed to connect(), or letting the handshake hit its timeout, put a forbidden cancellation on the wire naming the initialize request id.

    The local behaviour is unchanged — the caller's promise still rejects with the same abort/timeout error, and connect() still tears the connection down. Only the wire notification is suppressed. Every other method keeps the existing cancellation path.

  • #2590 75dc7ea Thanks @davidpavlovschi! - Reject a modern (2026-07-28) POST that omits the required MCP-Protocol-Version header.

    createMcpHandler accepted a request whose body carried a valid per-request _meta
    envelope but whose MCP-Protocol-Version header was absent: the request was classified
    modern, dispatched, and answered 200 — tool handlers ran. Only the mismatch case
    (header present, disagreeing with the body) was rejected, so of the standard headers
    SEP-2243 requires on a modern POST, presence was enforced for Mcp-Method (and for
    Mcp-Name on the methods that mirror params.name / params.uri) but not for
    MCP-Protocol-Version.

    Such a request is now refused with 400 Bad Request and JSON-RPC -32020
    (HeaderMismatch), matching the shape the sibling missing-header cells already emit and
    echoing the request id — per the Streamable HTTP spec, which requires the header on every
    POST and lists a missing required standard header as a HeaderMismatch failure. The
    spec's allowance to treat a header-less request as 2025-03-26 is available only to a
    server that also serves pre-2025-06-18 clients, and permits routing it to legacy
    handling — never serving it as 2026-07-28; under legacy: 'reject' the requirement is
    unconditional.

    Era classification is deliberately unchanged and stays body-primary: a proxy that strips
    the header still must not change the era, so such a request is still classified modern
    and is refused one rung later, at standard-header-validation — the same rung that
    already answers a missing Mcp-Method. Legacy-era traffic is untouched, notifications
    are unaffected, body-less GET / DELETE session operations are method-routed before
    any header validation, and stdio serving (which has no HTTP headers) is not involved.

    Clients built with this SDK always send the header, so no first-party client is affected;
    hand-rolled clients that omitted it must add it.

  • Updated dependencies []:

    • @modelcontextprotocol/core@2.0.1

@modelcontextprotocol/server-legacy@2.0.1

Patch Changes

  • Updated dependencies []:
    • @modelcontextprotocol/core@2.0.1

@modelcontextprotocol/codemod@2.0.1

@modelcontextprotocol/core@2.0.1

@modelcontextprotocol/core-internal@2.0.1

Patch Changes

  • #2654 03842cd Thanks @pshah19! - Treat request id 0 as a real id. Two guards tested a RequestId for truthiness, so the legal JSON-RPC ids 0 and '' were read as absent. Id 0 is not a corner case: the outbound request counter is zero-based, so it is the first id every peer assigns, which on the server→client leg is the first sampling/createMessage, elicitation/create, or roots/list a server sends.

    • notifications/cancelled carrying id 0 was ignored, and the in-flight handler ran to completion with its AbortSignal never fired.
    • A notification sent with relatedRequestId: 0 wrongly passed the debounce gate (for methods opted into debouncedNotificationMethods). Because the pending set is keyed by method alone, a second such notification in the same tick was silently dropped rather than sent.

    Absent is now the only value that means "no id".

  • #2668 3e90449 Thanks @KKonstantinov! - Stop sending notifications/cancelled for the initialize handshake. The spec is explicit that a client MUST NOT attempt to cancel its initialize request, but the outbound cancel path fired for any in-flight request: aborting the AbortSignal passed to connect(), or letting the handshake hit its timeout, put a forbidden cancellation on the wire naming the initialize request id.

    The local behaviour is unchanged — the caller's promise still rejects with the same abort/timeout error, and connect() still tears the connection down. Only the wire notification is suppressed. Every other method keeps the existing cancellation path.

  • #2590 75dc7ea Thanks @davidpavlovschi! - Reject a modern (2026-07-28) POST that omits the required MCP-Protocol-Version header.

    createMcpHandler accepted a request whose body carried a valid per-request _meta
    envelope but whose MCP-Protocol-Version header was absent: the request was classified
    modern, dispatched, and answered 200 — tool handlers ran. Only the mismatch case
    (header present, disagreeing with the body) was rejected, so of the standard headers
    SEP-2243 requires on a modern POST, presence was enforced for Mcp-Method (and for
    Mcp-Name on the methods that mirror params.name / params.uri) but not for
    MCP-Protocol-Version.

    Such a request is now refused with 400 Bad Request and JSON-RPC -32020
    (HeaderMismatch), matching the shape the sibling missing-header cells already emit and
    echoing the request id — per the Streamable HTTP spec, which requires the header on every
    POST and lists a missing required standard header as a HeaderMismatch failure. The
    spec's allowance to treat a header-less request as 2025-03-26 is available only to a
    server that also serves pre-2025-06-18 clients, and permits routing it to legacy
    handling — never serving it as 2026-07-28; under legacy: 'reject' the requirement is
    unconditional.

    Era classification is deliberately unchanged and stays body-primary: a proxy that strips
    the header still must not change the era, so such a request is still classified modern
    and is refused one rung later, at standard-header-validation — the same rung that
    already answers a missing Mcp-Method. Legacy-era traffic is untouched, notifications
    are unaffected, body-less GET / DELETE session operations are method-routed before
    any header validation, and stdio serving (which has no HTTP headers) is not involved.

    Clients built with this SDK always send the header, so no first-party client is affected;
    hand-rolled clients that omitted it must add it.

  • Updated dependencies []:

    • @modelcontextprotocol/core@2.0.1

@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 2ea0c13 to 86e2281 Compare December 23, 2025 21:04
@github-actions
github-actions Bot force-pushed the changeset-release/main branch 3 times, most recently from f04d699 to 1429955 Compare January 14, 2026 15:14
@github-actions
github-actions Bot force-pushed the changeset-release/main branch 3 times, most recently from 9e80eca to 40e9271 Compare January 24, 2026 01:37
@github-actions
github-actions Bot force-pushed the changeset-release/main branch 4 times, most recently from 7b7d20a to 1dcc8fb Compare February 3, 2026 10:50
@github-actions
github-actions Bot force-pushed the changeset-release/main branch 3 times, most recently from b630790 to edea2cc Compare February 8, 2026 18:45
@github-actions
github-actions Bot force-pushed the changeset-release/main branch 2 times, most recently from 5dda228 to 65cfe6a Compare February 22, 2026 11:00
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 65cfe6a to 8dd2d9b Compare February 25, 2026 19:00
@github-actions
github-actions Bot force-pushed the changeset-release/main branch 2 times, most recently from 36fc020 to efa1254 Compare March 8, 2026 23:11
@github-actions
github-actions Bot force-pushed the changeset-release/main branch 2 times, most recently from 0992122 to 9b73337 Compare March 18, 2026 23:10
@github-actions github-actions Bot changed the title Version Packages Version Packages (alpha) Apr 15, 2026
@github-actions
github-actions Bot force-pushed the changeset-release/main branch 3 times, most recently from 98f1871 to 04169a4 Compare April 21, 2026 08:05
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 04169a4 to b3f25de Compare April 23, 2026 10:54
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from b3f25de to 741f44e Compare May 6, 2026 05:48
@github-actions
github-actions Bot force-pushed the changeset-release/main branch 2 times, most recently from 28c2003 to 6b8cff5 Compare June 7, 2026 01:23
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 6b8cff5 to e81846a Compare June 11, 2026 22:16
@github-actions
github-actions Bot force-pushed the changeset-release/main branch 2 times, most recently from ab48884 to b850d48 Compare June 20, 2026 01:15
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from b850d48 to 5ad25fa Compare June 24, 2026 20:11
@github-actions github-actions Bot changed the title Version Packages (alpha) Version Packages Aug 16, 2026
@github-actions
github-actions Bot force-pushed the changeset-release/main branch 2 times, most recently from 3fb9289 to 1ca65eb Compare August 17, 2026 12:25
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 1ca65eb to d64372c Compare August 18, 2026 18:22
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.

0 participants