Repository navigation
chore(deps): upgrade the MCP TypeScript SDK to 2.4.0 - #2799
Merged
Merged
Conversation
Bump the four lockstep typescript-sdk packages (client, core, server, server-legacy) from 2.3.1 to 2.4.0 in the root manifest, where they are declared and pinned exactly. The lockfile change is confined to those four packages. 2.4.0's new entry points are additive ext/skills subpaths this repo does not import, so no bundler external list changes. None of its upgrade notes reach our code: no x-mcp-header on a number parameter (both test fixtures annotate strings), no reader of structuredContent.result, and no $id/$ref with an invalid URI scheme. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: cliffhall <cliff@futurescale.com>
4 tasks
There was a problem hiding this comment.
🟡 Changes recommended
The local header scanner must match SDK 2.4.0’s rejection of number annotations to preserve exclusion diagnostics and correct salvage filtering.
1 open issue
What changed in this PR
Upgrades the four lockstep MCP TypeScript SDK packages from 2.3.1 to 2.4.0 for Inspector, addressing #2784 without adopting new SDK features.
Changes:
- Updates all four exact version pins, preserving
server-legacyas a development dependency. - Refreshes the corresponding lockfile versions, download URLs, integrity hashes, and internal core references without unrelated dependency changes.
| File | Description |
|---|---|
package.json |
Pins all four MCP SDK packages to 2.4.0. |
package-lock.json |
Aligns resolved SDK packages and internal dependencies with 2.4.0. |
Review effort: Balanced
…2784) core/json/xMcpHeader.ts is a port of the SDK's scanXMcpHeaderDeclarations, kept so the Inspector can report which tools the SDK excluded from tools/list and why. SDK 2.4.0 stopped accepting `number` (the 2026-07-28 spec forbids it), so after the bump the port still treated those tools as valid: the SDK dropped them with no exclusion reason shown, and the salvage filter could readmit them. Drop `number` from the permitted types and mirror the SDK's reporting: a number-typed fault is recorded, the walk continues, and that fault is reported in preference to any later one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: cliffhall <cliff@futurescale.com>
Member
Author
|
Copilot round 1: 1 inline finding, nothing suppressed.
Requesting round 2. |
Member
Author
|
Copilot review loop closed. Round 2 was clean (no inline comments, nothing suppressed, approval recommended), so the loop stops on the first clean round. |
4 tasks
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.

Closes #2784
Bumps the four lockstep
typescript-sdkpackages —@modelcontextprotocol/client,core,serverandserver-legacy— from 2.3.1 → 2.4.0. They are declared only in the repo-rootpackage.jsonand pinned exactly, so they move together; no client manifest declares any of them.What changed
package.json: four exact pins moved to2.4.0.package-lock.json: only those four entries changed. Nothing new arrived transitively.Checklist from the issue
package.jsonbumped (all four together)npm installat the root, lockfile committedexternallists checked. 2.4.0's new entry points are the additiveext/skillssubpaths (client/ext/skills,server/ext/skills[/node],core/ext/skills), and nothing here imports them. Package root exports are unchanged, andverify:bundle-externalspasses in the gate.npm run format, thennpm run local:gate: greenUpstream upgrade notes, checked against this repo
x-mcp-headeron anumberparameter is now rejectedget_weatherand the invalid-header tool) annotatez.string()fieldsoutputSchemafromz.object().meta({ id })is no longer wrapped in{ result }on 2025-11-25structuredContent.result, and no fixture uses.meta({ id })$id/$refwith an invalid URI scheme$refs (in theunportable-schemas*configs) are validhttps:URIsThe new SDK features are not adopted in this PR. The Inspector already supports Skills (SEP-2640) through its own implementation (#2234, #2248); moving that onto the SDK's new
SkillsClientis #2804. The opt-inscopeForRefreshon token refresh is #2805.Gate note
The first
local:gaterun failed atsmoke:web:elicit("launcher exited before serving"). Another session was running a manual Inspector on ports 6275/6278, outside the gate lease. Run alone, the smoke passed on this branch, and a full re-run of the gate came back green.🤖 Generated with Claude Code