Version Packages - #2
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
December 24, 2025 06:28
c4cef99 to
631250f
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
3 times, most recently
from
January 14, 2026 07:06
de5f0c3 to
38a94f4
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
4 times, most recently
from
January 23, 2026 08:40
f402e81 to
98aa891
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
3 times, most recently
from
January 29, 2026 08:08
3bdc3fd to
da3f07c
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
4 times, most recently
from
February 7, 2026 07:59
3ed5d14 to
d3065ed
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
4 times, most recently
from
February 18, 2026 09:15
c758c4c to
9ce9a06
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
3 times, most recently
from
February 25, 2026 09:07
307e9d3 to
c089c80
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
3 times, most recently
from
March 5, 2026 08:26
4036f55 to
c0ac63b
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
3 times, most recently
from
March 13, 2026 08:22
0c6e599 to
53f40a7
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
2 times, most recently
from
March 16, 2026 07:09
ce83af3 to
d349e69
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
5 times, most recently
from
March 28, 2026 09:34
f09a192 to
74bcc12
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
March 31, 2026 09:07
74bcc12 to
e7722ca
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
2 times, most recently
from
April 3, 2026 08:44
f1cf569 to
c4f04f6
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
3 times, most recently
from
May 23, 2026 09:58
d7efb65 to
960d68c
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
3 times, most recently
from
June 4, 2026 09:48
c80fcfa to
df8b6d4
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
4 times, most recently
from
June 17, 2026 09:55
ab65bba to
2c15b18
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
June 27, 2026 08:39
2c15b18 to
4b56324
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
3 times, most recently
from
July 8, 2026 08:40
9785eca to
0db7676
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
2 times, most recently
from
July 21, 2026 09:01
1ac49d1 to
fdc9492
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 17, 2026 04:57
fdc9492 to
c018b10
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 18, 2026 09:02
c018b10 to
01af9d7
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
03842cdThanks @pshah19! - Treat request id0as a real id. Two guards tested aRequestIdfor truthiness, so the legal JSON-RPC ids0and''were read as absent. Id0is 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 firstsampling/createMessage,elicitation/create, orroots/lista server sends.notifications/cancelledcarrying id0was ignored, and the in-flight handler ran to completion with itsAbortSignalnever fired.relatedRequestId: 0wrongly passed the debounce gate (for methods opted intodebouncedNotificationMethods). 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
3e90449Thanks @KKonstantinov! - Stop sendingnotifications/cancelledfor theinitializehandshake. The spec is explicit that a client MUST NOT attempt to cancel itsinitializerequest, but the outbound cancel path fired for any in-flight request: aborting theAbortSignalpassed toconnect(), 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/server@2.0.1
Patch Changes
#2654
03842cdThanks @pshah19! - Treat request id0as a real id. Two guards tested aRequestIdfor truthiness, so the legal JSON-RPC ids0and''were read as absent. Id0is 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 firstsampling/createMessage,elicitation/create, orroots/lista server sends.notifications/cancelledcarrying id0was ignored, and the in-flight handler ran to completion with itsAbortSignalnever fired.relatedRequestId: 0wrongly passed the debounce gate (for methods opted intodebouncedNotificationMethods). 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
3e90449Thanks @KKonstantinov! - Stop sendingnotifications/cancelledfor theinitializehandshake. The spec is explicit that a client MUST NOT attempt to cancel itsinitializerequest, but the outbound cancel path fired for any in-flight request: aborting theAbortSignalpassed toconnect(), 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
75dc7eaThanks @davidpavlovschi! - Reject a modern (2026-07-28) POST that omits the requiredMCP-Protocol-Versionheader.createMcpHandleraccepted a request whose body carried a valid per-request_metaenvelope but whose
MCP-Protocol-Versionheader was absent: the request was classifiedmodern, 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 forMcp-Nameon the methods that mirrorparams.name/params.uri) but not forMCP-Protocol-Version.Such a request is now refused with
400 Bad Requestand JSON-RPC-32020(
HeaderMismatch), matching the shape the sibling missing-header cells already emit andechoing the request id — per the Streamable HTTP spec, which requires the header on every
POST and lists a missing required standard header as a
HeaderMismatchfailure. Thespec's allowance to treat a header-less request as
2025-03-26is available only to aserver 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 isunconditional.
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 thatalready answers a missing
Mcp-Method. Legacy-era traffic is untouched, notificationsare unaffected, body-less
GET/DELETEsession operations are method-routed beforeany 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/server-legacy@2.0.1
Patch Changes
@modelcontextprotocol/codemod@2.0.1
@modelcontextprotocol/core@2.0.1
@modelcontextprotocol/core-internal@2.0.1
Patch Changes
#2654
03842cdThanks @pshah19! - Treat request id0as a real id. Two guards tested aRequestIdfor truthiness, so the legal JSON-RPC ids0and''were read as absent. Id0is 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 firstsampling/createMessage,elicitation/create, orroots/lista server sends.notifications/cancelledcarrying id0was ignored, and the in-flight handler ran to completion with itsAbortSignalnever fired.relatedRequestId: 0wrongly passed the debounce gate (for methods opted intodebouncedNotificationMethods). 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
3e90449Thanks @KKonstantinov! - Stop sendingnotifications/cancelledfor theinitializehandshake. The spec is explicit that a client MUST NOT attempt to cancel itsinitializerequest, but the outbound cancel path fired for any in-flight request: aborting theAbortSignalpassed toconnect(), 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
75dc7eaThanks @davidpavlovschi! - Reject a modern (2026-07-28) POST that omits the requiredMCP-Protocol-Versionheader.createMcpHandleraccepted a request whose body carried a valid per-request_metaenvelope but whose
MCP-Protocol-Versionheader was absent: the request was classifiedmodern, 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 forMcp-Nameon the methods that mirrorparams.name/params.uri) but not forMCP-Protocol-Version.Such a request is now refused with
400 Bad Requestand JSON-RPC-32020(
HeaderMismatch), matching the shape the sibling missing-header cells already emit andechoing the request id — per the Streamable HTTP spec, which requires the header on every
POST and lists a missing required standard header as a
HeaderMismatchfailure. Thespec's allowance to treat a header-less request as
2025-03-26is available only to aserver 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 isunconditional.
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 thatalready answers a missing
Mcp-Method. Legacy-era traffic is untouched, notificationsare unaffected, body-less
GET/DELETEsession operations are method-routed beforeany 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 []: