Skip to content

Review production dependency audit findings #355

Description

@BigCactusLabs

Summary

While setting up hevy-mcp@1.25.3 from a fresh local install, npm audit --omit=dev reports production-scope vulnerabilities. This does not necessarily mean the stdio MCP server is directly exploitable in normal local use, but it does make the published runtime dependency surface look broader than expected for a stdio-only MCP server.

The main concern is that generator/tooling-oriented packages appear in the production dependency tree, which pulls in transitive packages currently flagged by npm audit.

Environment

  • hevy-mcp: 1.25.3
  • Node.js: v26.3.0
  • npm: 11.16.0
  • Command run: npm audit --omit=dev --json

Audit result

npm audit --omit=dev reports:

  • 10 total production-scope vulnerabilities
  • 9 moderate
  • 1 high
  • 0 critical

Notable dependency paths:

hevy-mcp
└─ @kubb/plugin-client@4.38.0
   ├─ @kubb/react-fabric@0.14.0
   │  ├─ ws@8.18.0
   │  └─ react-devtools-core@6.1.5
   │     └─ ws@7.5.10
   └─ @kubb/core / @kubb/oas / @kubb/plugin-* packages

hevy-mcp
└─ @modelcontextprotocol/sdk@1.29.0
   └─ express-rate-limit@8.3.2
      └─ ip-address@10.1.0

The high-severity audit item comes through ws:

ws  7.0.0 - 7.5.10 || 8.0.0 - 8.20.1
Severity: high
ws: Memory exhaustion DoS from tiny fragments and data chunks

The moderate item through the MCP SDK path is:

ip-address <=10.1.0
Severity: moderate
ip-address has XSS in Address6 HTML-emitting methods

Why this may be worth reviewing

hevy-mcp is stdio-only as of recent releases, so the practical exposure of websocket/http-related transitive dependencies may be limited for normal local MCP usage. Still, consumers installing the package see these as production-scope dependencies.

The runtime dependency list currently includes:

{
  "@kubb/plugin-client": "^4.38.0",
  "@modelcontextprotocol/sdk": "^1.29.0",
  "@sentry/node": "^10.58.0",
  "axios": "^1.18.0",
  "zod": "^4.4.3"
}

The part that stands out is @kubb/plugin-client in dependencies. It appears to bring in Kubb generation/plugin infrastructure and React/devtools-adjacent transitive dependencies even though the published package only needs to run the MCP server.

Suggested direction

Would it be possible to review whether:

  1. @kubb/plugin-client needs to remain in production dependencies, or whether the generated axios client can be shipped without the broader Kubb plugin tree.
  2. Kubb codegen/plugin packages can move to devDependencies if they are only needed for generation/build.
  3. The MCP SDK/transitive dependency path can be refreshed once patched versions are available.

I did not run npm audit fix --force. npm reports that the forced Kubb fix would install older/breaking Kubb versions, so this probably needs an intentional dependency review rather than an automatic audit fix.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions