MCP server providing npm/Node.js package management tools for AI agents
Server has 5 well-named tools with complete input schemas and descriptions. All tools follow verb_noun naming (npm_search, npm_package_info, etc.). Descriptions are present and substantive (100-200 chars), meeting baseline expectations. However, output schemas are NOT documented, LLMs cannot predict response structure. Parameter descriptions are adequate but lack format constraints (e.g., 'limit' has no min/max bounds). Error handling is basic (try/catch with generic messages). No tool annotations (readOnlyHint, idempotentHint). Missing pagination guidance for list-returning tools. Overall solid foundation but lacks production-grade polish.
Estimate the bundle size of an npm package using the Bundlephobia API. Returns minified size, gzipped size, and dependency count.
Compare 2 or more npm packages side by side: weekly downloads, bundle size, dependency count, last update, GitHub stars, and license.
Analyze a package.json to find outdated dependencies (compare installed vs latest), deprecated packages, and known security vulnerabilities.
Get detailed information about an npm package: all versions, dependencies, maintainers, repository, license, size, npm score, and weekly downloads.
Search the npm registry for packages by keyword. Returns name, description, version, weekly downloads, and last publish date for each result.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting). Responses are JSON-stringified text blobs with no schema guidance.
Parameter 'limit' in npm_search lacks min/max bounds. Description says 'default: 10, max: 50' but no JSON Schema constraints (minimum, maximum). LLMs may pass invalid values.
npm_compare_packages requires 'min 2, max 10' packages but validation is runtime-only ('if (!packages || packages.length < 2)'). No JSON Schema minItems/maxItems constraints.
Error messages are generic ('Error: <message>'). No recovery guidance. E.g., 'Package not found' should suggest 'Try npm_search() to find the correct package name.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, idempotentHint). All tools are read-only and idempotent but this is not declared in the schema, forcing LLMs to infer safety.