Repository navigation
fix(deps): update the SDK's transitive dependencies to clear npm audit - #96
Conversation
npm audit --omit=dev reported 8 advisories (1 critical, 3 high) in what ships in the npm package and the .mcpb bundle, all pulled in by @modelcontextprotocol/sdk: express and its body-parser, qs, proxy-addr, express-rate-limit/ip-address, hono and @hono/node-server, and ajv's fast-uri. Most of that is the SDK's HTTP server transport stack, which this server doesn't use, since it only speaks stdio. Scanners still flag the release. This is npm audit fix --omit=dev: lockfile only, no package.json change. Every new version stays within the ranges its parent declares. @hono/node-server moves to 2.x, which the SDK allows (^1.19.9 || ^2.0.5). The weekly version updates never touch these, since they bump only direct dependencies, and Dependabot security updates were off. Dev-only advisories are left alone: mcpb's node-forge and tmp have no fix yet, and vite/vitest move with the vitest 5 PR.
|
Claude finished @dangrondahl's task in 2m 3s —— View job Review: lockfile-only transitive dependency bump
No blocking findings. The diff touches only What I verifiedEvery new version satisfies the range its parent declares, including the one that isn't obvious:
Two notes, neither blockingThe PR says the advisories are fixed "both in the npm package and in the Nothing in Nicely scoped PR: the description's claims each turned out to be checkable and correct, which made this quick to verify. |
Release prep for **0.6.0**. A draft for now: it gets rebased once #97 (CodeQL) merges, then marked ready. `npm version minor --no-git-tag-version` moves `package.json`, `package-lock.json` and the generated `src/version.ts` together. `manifest.json` gets the version at pack time. Nothing else changes. ## What's in 0.6.0 (since 0.5.0) ###⚠️ Changes that affect existing setups - **No configured org (#65).** `KOSLI_ORG` and the Desktop extension's *Organization* setting are removed. Every org-scoped call names its org through the execute tools' `org` input, so no request lands in an org the caller didn't name. An existing config that still sets `KOSLI_ORG` starts fine and logs that the value is ignored, but calls that relied on the default are now refused until an org is given. - **Node ≥ 22 (#38).** It was ≥ 20. ### Fixes - **Evidence downloads work again (#88, fixes #86).** Since 16 Oct, every `get_attestation_evidence` call failed: our token was forwarded to the pre-signed S3 URL. Text files come back as text, and binary files return a clear error. - **The `.mcpb` bundle starts on Node 22.0 – 22.6 (#87).** It didn't before. - **No known vulnerabilities in the bundled dependencies (#96).** `npm audit --omit=dev` is clean. ### Features - **`org` input on the execute tools (#65).** - **`User-Agent` carries the version (#41):** `kosli-mcp-server/<version>`. ### Dependencies - **Runtime:** `@modelcontextprotocol/sdk` 1.29.0 → 1.32.1 (#29, #71, #79). - **Dev:** TypeScript 7 (#45), with emitted output byte-identical to 5.9. vitest 5 (#93). - **Catalog:** regenerated from the OpenAPI spec (#50, #53, #60, #69, #78). ### Release confidence (CI only) Typecheck of tests and scripts, a stdio smoke test against `dist/` and the unzipped bundle (including Node 22.0.0), `mcpb validate`, and `release.yml` publishing only after every check (#87). There's also a phased Claude review (#90), Dependabot grouping with a 7-day cooldown, and CodeQL (#97). ## Checked locally on this branch - Build, typecheck, 122 tests. - The smoke test reports `server advertises version 0.6.0`, both from `dist/` and from the unzipped bundle. - `kosli-mcp-server-0.6.0.mcpb`: the manifest says 0.6.0 and `mcpb validate` passes. ## Before tagging (after merge) - [ ] Rebase onto `main` once #97 merges, then mark ready. - [ ] Install the 0.6.0 `.mcpb` in Claude Desktop, including an upgrade over 0.5.0 with an org configured. - [ ] Run `KOSLI_API_TOKEN=… KOSLI_SMOKE_ORG=<org> npm run smoke` on `main`. - [ ] Download one piece of evidence via `get_attestation_evidence`. - [ ] `git tag -a v0.6.0 -m "v0.6.0" <merge commit> && git push origin v0.6.0`. `release.yml` does the rest.
Why
npm audit --omit=devreports 8 advisories (1 critical, 3 high) in the locked runtime dependencies. This lockfile is what the.mcpbbundle installs from (pack-mcpb.shcopies it beforenpm install --omit=dev), so that's where users get them, along with CI and any scan of the repo. The npm package doesn't ship a lockfile, sonpxusers already resolve current versions within the SDK's ranges. All of them come in indirectly through@modelcontextprotocol/sdk:proxy-addr(critical)hono@hono/node-server^1.19.9 || ^2.0.5)fast-uriip-address,express-rate-limitqs,body-parserMost of these belong to the SDK's HTTP server transports, which this server doesn't use, since it only speaks stdio. Scanners still flag them in the release.
Nothing would have fixed them otherwise. The weekly Dependabot version updates bump only direct dependencies, and Dependabot security updates were off. The repo also showed 0 Dependabot alerts, because the dependency graph was off. Both are being switched on in the repo settings.
What
npm audit fix --omit=dev. Onlypackage-lock.jsonchanges, andpackage.jsonis untouched. Every new version stays within the range its parent declares. The other lockfile changes (content-type,type-is,iconv-lite,hasown,side-channel,es-object-atoms) are patch or minor bumps that npm needed to resolve the fixed versions.Checked
npm audit --omit=dev: 0 vulnerabilities, down from 8.npm install --package-lock-onlyleaves the lockfile unchanged, so it's consistent withpackage.json.dist/. Before the rebase onto chore: bump @modelcontextprotocol/sdk from 1.30.1 to 1.32.1 #79's merge commit I also ran it against the unzipped.mcpb(manifest validated). The bundle ships@hono/node-server2.1.5. CI repeats all of this, plus the bundle on Node 22.0.0.Not in this PR
@anthropic-ai/mcpb'snode-forgeandtmphave no fix yet. Thevite/vitestones should move with chore: bump vitest from 4.1.11 to 5.0.5 #93 (vitest 5).zoddirectly: chore: declare zod as a direct dependency #95.