Skip to content

fix(deps): sdk 1.30.0 unblocks @hono/node-server 2.x, clearing the last two runtime advisories - #68

Open
yakimoto wants to merge 2 commits into
mainfrom
fix/mcp-sdk-1.30-hono-node-server
Open

fix(deps): sdk 1.30.0 unblocks @hono/node-server 2.x, clearing the last two runtime advisories#68
yakimoto wants to merge 2 commits into
mainfrom
fix/mcp-sdk-1.30-hono-node-server

Conversation

@yakimoto

@yakimoto yakimoto commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Clears the last two runtime-scope advisories on this repo, lockfile only.

@modelcontextprotocol/sdk  1.29.0  → 1.30.0
@hono/node-server          1.19.14 → 2.0.12     (advisory: < 2.0.5, moderate)

The interesting part: why this needs no overrides

@hono/node-server is not a direct dependency. It's pinned by the MCP SDK:

$ npm why @hono/node-server
@hono/node-server@1.19.14
  @hono/node-server@"^1.19.9" from @modelcontextprotocol/sdk@1.29.0
    @modelcontextprotocol/sdk@"^1.0.0" from the root project

So the obvious remediation — force 2.0.5 with an overrides entry — would mean overriding a dependency's own declared range. That's exactly the failure documented in claude-workstation#554, where the "fix" broke the consumer while npm audit reported 0 vulnerabilities and 195/195 tests passed.

It isn't necessary. @modelcontextprotocol/sdk@1.30.0, published 2026-07-27, widened its range to ^1.19.9 || ^2.0.5. The root already declares ^1.0.0, so both moves come from npm update --package-lock-only with no manifest edit at all:

NODE_ENV=development npm update @modelcontextprotocol/sdk --package-lock-only
NODE_ENV=development npm update @hono/node-server   --package-lock-only
git status --short     # → " M package-lock.json"  (nothing else)

Eight lines of lockfile. The peer requirement @modelcontextprotocol/sdk@^1.29.0 from @anthropic-ai/claude-agent-sdk@0.3.168 is still satisfied.

Advisory delta

Dev scope included, against main @ a199245:

total high mod low
main 7 3 2 2
this PR 5 3 0 2

Both moderates clear together because @modelcontextprotocol/sdk was only ever flagged transitively — via: ["@hono/node-server"]. One root cause, two entries.

Verified against runtime, not just the build

This repo has no test suite (#64), so build + type-check green is precisely the evidence #554 proved worthless. So I spawned the actual built binary over stdio and completed a real MCP handshake:

main (SDK 1.29.0 / node-server 1.19.14) this PR (1.30.0 / 2.0.12)
initialize OK — wave-mcp-server, protocol 2025-06-18 OK — identical
tools/list 18 tools 18 tools

Byte-identical behaviour on the exercised surface. Plus npm run build → success, tsc --noEmit → clean, eslint --max-warnings 0 → clean.

Reachability note that lowers the risk further: src/server.ts imports only StdioServerTransport. This repo never constructs an HTTP transport, so @hono/node-server is present in the tree but sits off the code path entirely — the major bump has no exercised surface here at all.

Measurement caveat

npm audit in this environment inherits omit=dev from NODE_ENV=production, silently reporting 5 advisories instead of 7 and hiding the dev-scope entries. Every figure above was taken with NODE_ENV=development set explicitly.

What's left after this

With #59 (hono), #58 (fast-uri), #55 (body-parser), #67 (brace-expansion) and this one, the repo goes from 14 open Dependabot alerts to 1: esbuild 0.27.3 - 0.28.0, low, dev-only. Same class as the dev-only tail on wave-av/sdks#48.

Supersedes the need for a mcp-server equivalent of wave-av/sdks#49, which described this bump as needing a breaking-change assessment — that was true against SDK 1.29.0 and stopped being true when 1.30.0 shipped.

CI cannot run — Actions are refusing every job org-wide on an account-level billing lock (plan=free, locked=yes, confirmed live this morning on adk and dispatch-edge). All verification above is local.


View with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is enabled.


Note

Low Risk
Lockfile-only semver updates with no source changes; HTTP/node-server stack is not used by this package’s stdio server.

Overview
Lockfile-only dependency refresh that bumps @modelcontextprotocol/sdk to 1.30.0 and transitively resolves @hono/node-server to 2.0.12, clearing the last two runtime npm advisories tied to node-server < 2.0.5. Root package.json is unchanged (@modelcontextprotocol/sdk stays ^1.0.0).

SDK 1.30.0 widens its @hono/node-server range to ^1.19.9 || ^2.0.5, so the major bump lands without overrides or application code edits. This server uses stdio MCP transport only, so @hono/node-server remains off the exercised path here.

Reviewed by Cursor Bugbot for commit 794b0b0. Configure here.


Summary by cubic

Updates @modelcontextprotocol/sdk to 1.30.0, which lets @hono/node-server resolve to 2.x and clears the last two runtime advisories via a lockfile-only update. No overrides or code changes; runtime behavior unchanged (stdio transport only).

  • Dependencies
    • @modelcontextprotocol/sdk 1.29.0 → 1.30.0 (widens @hono/node-server to ^1.19.9 || ^2.0.5)
    • @hono/node-server 1.19.14 → 2.0.12 (Node >=20)

Written for commit bda11b6. Summary will update on new commits.

Review in cubic

…st two runtime advisories

@hono/node-server is not a direct dependency. it is pinned by
@modelcontextprotocol/sdk, which declared ^1.19.9 through 1.29.0, so
forcing 2.x onto the old sdk would mean overriding a dependency own
declared range. that is the shape claude-workstation#554 documents,
where a patched version broke its consumer while npm audit reported
zero vulnerabilities and 195 of 195 tests passed.

sdk 1.30.0, published 2026-07-27, widened the range to ^1.19.9 || ^2.0.5.
the root already declares ^1.0.0, so both moves are reachable with
npm update --package-lock-only and no manifest edit. the peer
@modelcontextprotocol/sdk ^1.29.0 from @anthropic-ai/claude-agent-sdk is
still satisfied.

  @modelcontextprotocol/sdk  1.29.0  -> 1.30.0
  @hono/node-server          1.19.14 -> 2.0.12

audit, dev scope included: main 7 (3 high, 2 mod), here 5 (3 high, 0 mod).
both moderates clear, since the sdk was only ever flagged transitively
via @hono/node-server.

this repo has no test suite (#64), so a green build proves nothing about
runtime. spawned the built binary over stdio and completed a real MCP
handshake: initialize returns wave-mcp-server protocol 2025-06-18 and
tools/list still enumerates all 18 tools. src/server.ts imports only
StdioServerTransport, so node-server sits off this code path entirely.

build, tsc --noEmit and eslint all clean. CI cannot run.
@changeset-bot

changeset-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: bda11b6

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 55e21776-0407-42b1-a913-32a9cd4d3c52

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/mcp-sdk-1.30-hono-node-server
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch fix/mcp-sdk-1.30-hono-node-server

Comment @coderabbitai help to get the list of available commands.

@socket-security

socket-security Bot commented Jul 28, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updated@​modelcontextprotocol/​sdk@​1.29.0 ⏵ 1.30.099 +110010096 +1100

View full report

@cursor

cursor Bot commented Jul 28, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_b916bc9e-2d4d-46e3-bef4-71ffb3ea7f30)

@yakimoto

Copy link
Copy Markdown
Contributor Author

Companion PR opened on the other repo carrying the same two-package move: wave-av/sdks#50 (closes wave-av/sdks#49).

One deliberate difference, flagged so it doesn't read as an oversight. sdks#50 also narrows a manifest range, "@modelcontextprotocol/sdk": "^1.0.0""^1.30.0"; this PR leaves the range alone and changes only the lockfile.

The reason is that a declared range only protects downstream consumers of a published package, and these two repos differ on that point. sdk-typescript/packages/mcp-server in sdks publishes to npm, so under ^1.0.0 a consumer could resolve SDK 1.29.x and pull the vulnerable @hono/node-server back in regardless of our lockfile — the narrowing is load-bearing there. This repo does not publish @wave-av/mcp-server; the 0.1.8 on npm was built elsewhere (gitHead e8ae959 is not an object in this repo), which is the whole premise of #65/#66 removing the ungated publish workflow. With nothing consuming this repo's declared range, narrowing it would be churn without a beneficiary.

If #66 lands and this repo later becomes the genuine publisher, the range should be narrowed here too.

@yakimoto yakimoto closed this Aug 1, 2026
@yakimoto yakimoto reopened this Aug 1, 2026
@cursor

cursor Bot commented Aug 1, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_3d8de40f-0968-46a1-9971-0b76d861aa4f)

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.

1 participant