Skip to content

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

Merged
yakimoto merged 3 commits into
mainfrom
fix/mcp-sdk-1.30-hono-node-server
Aug 13, 2026
Merged

fix(deps): sdk 1.30.0 unblocks @hono/node-server 2.x, clearing the last two runtime advisories#68
yakimoto merged 3 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 transitive bump with no source changes; @hono/node-server is unused because the server only uses stdio transport.

Overview
Lockfile-only dependency update that clears the last two runtime-scope advisories—no package.json or source changes.

Bumps @modelcontextprotocol/sdk 1.29.0 → 1.30.0, which widens its @hono/node-server range to ^1.19.9 || ^2.0.5, allowing the transitive package to resolve to 2.0.12 (from 1.19.14) without overrides.

@hono/node-server remains unused on this repo's code path (StdioServerTransport only), so the major bump has no exercised surface here.

Reviewed by Cursor Bugbot for commit 4c25f01. Configure here.


Summary by cubic

Lockfile-only bump to @modelcontextprotocol/sdk 1.30.0 so @hono/node-server resolves to 2.x, clearing the last two runtime advisories. Verified by running the built stdio server and completing an MCP handshake; no workers/routes changed and no billing impact.

  • 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 4c25f01. Summary will update on new commits.

Review in cubic


Open in Devin Review

Note

Upgrade SDK to 1.30.0 to unblock @hono/node-server 2.x and clear runtime advisories

Updates package-lock.json to reflect the SDK 1.30.0 dependency bump, which resolves compatibility with @hono/node-server 2.x and clears the remaining two runtime security advisories.

Macroscope summarized 4c25f01.

…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: 71ef199f-980b-4b8c-b930-19864021287a

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 +110010095100

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)

@greptile-apps

greptile-apps Bot commented Aug 11, 2026

Copy link
Copy Markdown

No reviewable files after applying ignore patterns.

@cursor

cursor Bot commented Aug 11, 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_2e95c509-63ec-4275-a331-3ae2592412bd)

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

⚠️ 1 issue in files not directly in the diff

⚠️ Package still claims to support Node 18 while a newly pulled-in dependency requires Node 20 (package-lock.json:773-779)

The dependency tree now resolves to a library that requires Node 20 or newer (@hono/node-server 2.0.12 with "node": ">=20" at package-lock.json:772-780) while the project keeps advertising support for Node 18 ("node": ">=18.0.0" in package.json), so anyone installing or running it on Node 18 gets engine warnings and possibly a broken runtime.
Impact: Users on Node 18, which the project still says it supports, may see install warnings or failures at runtime.

How the transitive engine requirement is introduced

The lockfile bumps @modelcontextprotocol/sdk to 1.30.0, whose dependency range for @hono/node-server becomes ^1.19.9 || ^2.0.5 (package-lock.json:895). npm resolves the highest satisfying version, 2.0.12, which declares engines.node >= 20. The MCP SDK dependency is not optional, so it is installed for every consumer of @wave-av/mcp-server. Meanwhile package.json still declares engines: { node: ">=18.0.0" }. With engine-strict enabled (or in CI images pinned to Node 18) installation fails; otherwise it warns with EBADENGINE and any Node 20+ API used by node-server 2 will fail at runtime. Either bump the declared minimum Node version to 20 (and note it in CHANGELOG.md) or pin the transitive dependency to the 1.x line.

Open in Devin Review

@macroscopeapp

macroscopeapp Bot commented Aug 11, 2026

Copy link
Copy Markdown

Approvability

Verdict: Approved 4c25f01

Lockfile-only dependency update to clear security advisories. Changes are limited to package-lock.json version bumps with no application code modifications, and the author owns this file.

You can customize Macroscope's approvability policy. Learn more.

@yakimoto
yakimoto merged commit 3aea8d7 into main Aug 13, 2026
18 checks passed
@yakimoto
yakimoto deleted the fix/mcp-sdk-1.30-hono-node-server branch August 13, 2026 01:15
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