NPM MCP
Search and analyze npm packages, check security vulnerabilities, compare versions, validate compatibility, and get quality metrics from the npm registry.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@NPM MCPSecurity audit for express@4.18"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.

NPM MCP
Model Context Protocol server for npm registry
Search packages, check security, compare versions, and validate compatibility. Use it from Cursor AI or Claude Desktop.
Note: This is an unofficial, community-driven MCP server and is not affiliated with or endorsed by npm, Inc.
Features
Auto-Security — AI automatically checks packages before suggesting install (no user action!)
Capabilities Analysis — ESM/CJS, TypeScript, Platform support (Node/Browser/Deno), Build tools
Quick Start Generator — Ready-to-use code examples for any package
Package Comparison — Compare alternatives side-by-side (features, size, popularity)
Bundle Size Analysis — Minified/gzipped sizes, tree-shaking, impact on your bundle
Similar Packages — Find alternatives and similar packages
Search — Find packages with ranking and scores
Details — Versions, dependencies, download stats, deprecation status
Security — Vulnerability check and safe version tips
Compatibility — Peer dependency and version conflicts
Quality — Maintenance and community metrics
Version compare — Breaking changes and semver
NPX check — Validate npx commands before running
Related MCP server: NPM Sentinel MCP
Install & use
With npx (recommended)
No global install. Add to Cursor or Claude config:
Cursor — ~/.cursor/mcp.json:
{
"mcpServers": {
"npm-registry-mcp": {
"command": "npx",
"args": ["@alisaitteke/npm-mcp"]
}
}
}Claude Desktop — ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"npm-registry-mcp": {
"command": "npx",
"args": ["@alisaitteke/npm-mcp"]
}
}
}Global install (optional)
npm install -g @alisaitteke/npm-mcpThen use "command": "npm-mcp" (no args) in the config above.
What you can ask
Once the server is connected, you can ask things like:
“Search for React state management libraries”
“Security audit for express@4.18”
“Is lodash@4.17 compatible with my current deps?”
“Compare React 17 and 18”
“Quality check for date-fns”
“Is it safe to run npx create-next-app?”
License
MIT
Contributors
Thanks to everyone who helps improve this project!
Available Tools
12 toolsanalyze_bundle_sizeA
Analyze bundle size impact and answer "how big is this package?" or "will this slow down my app?" questions. Returns minified size, gzipped size, tree-shaking support analysis, and generates recommendations for lighter alternatives if package is large. Includes comparison with similar packages and actionable advice.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | Specific version (optional) | |
| packageName | Yes | Name of the package |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It does well by specifying what the tool returns (minified size, gzipped size, tree-shaking analysis), the conditional behavior (generates recommendations 'if package is large'), and that it includes comparison with similar packages. It lacks some details like whether network calls are made or how 'large' is determined, but still provides substantial transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that front-loads the purpose, then efficiently enumerates key outputs and the conditional recommendation behavior. Every clause adds value without redundancy or fluff. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is largely complete for an analysis tool: it covers purpose, outputs, and conditional behavior, and the schema covers parameter semantics. However, there is no output schema, so the description could have indicated units (e.g., bytes/kB) or how to interpret results. Minor gaps prevent a perfect score, but it is well above minimal viability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters (packageName, version) have basic descriptions in the schema. The tool description adds no additional parameter-level meaning beyond what the schema already supplies; it refers to the package generally but does not explain version syntax or required vs. optional. Baseline 3 is appropriate given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Analyze') with a clear resource ('bundle size') and states explicit question types it answers ('how big is this package?', 'will this slow down my app?'). It distinguishes itself from siblings by focusing on bundle size impact, including minified/gzipped sizes, tree-shaking support, and recommendations, which separates it from other analysis tools like analyze_quality or check_compatibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear use cases by framing the tool around common user questions, which implies when to choose it (bundle size concerns). However, it does not explicitly state when not to use it or mention alternatives like find_similar_packages or compare_packages, despite overlapping features (comparison with similar packages). This is clear context but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_capabilitiesA
Analyze package technical capabilities to answer "does this support ESM/TypeScript?" or "what platforms does this work on?" questions. Shows module system (ESM/CJS), TypeScript support, platform compatibility (Node/Browser/Deno), build tools, and engine requirements.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | Specific version (optional, defaults to latest) | |
| packageName | Yes | Name of the package to analyze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It lists what the tool shows (module system, TS support, platforms, etc.) but does not explicitly state that it is a read-only analysis, that it likely fetches external data, or any limitations. The verb 'Analyze' implies non-mutating behavior, but this is not stated outright.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first establishes intent and examples, the second lists specific outputs. It is front-loaded, free of redundant phrases, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter analysis tool with no output schema, the description gives a clear picture of what to expect (the listed capability dimensions) and when to use it. It lacks explicit output structure details, but the list of aspects is sufficient for an agent to select the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no extra parameter semantics beyond what the schema already provides. It does not mention any nuances such as version format or package name constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb 'Analyze' and resource 'package technical capabilities', then gives concrete example questions and an explicit list of output dimensions (module system, TypeScript support, platform compatibility, build tools, engine requirements). This clearly distinguishes it from sibling tools like analyze_bundle_size or check_compatibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear use context via example questions ('does this support ESM/TypeScript?', 'what platforms does this work on?'), establishing when the tool is appropriate. However, it does not explicitly mention alternatives or when-not-to-use, so it misses the full guidance needed for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_npx_commandB
Analyze and validate an npx command before execution (security check)
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | Command arguments (optional) | |
| command | Yes | Package to analyze (e.g., "create-react-app" or "typescript@5.0.0") | |
| timeout | No | Timeout in milliseconds (default: 30000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It only says 'security check,' which is a vague label and does not clarify whether the tool is read-only, whether it performs network requests, or what happens if a command is unsafe. No side effects or validation mechanics are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the security-sensitive nature and lack of output schema, the description is too minimal. It does not explain what validation entails, what actions might be taken on unsafe commands, or the format of results, leaving significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already documents command, args, and timeout. The description adds no additional parameter meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: analyze and validate an npx command, with a specific security-check purpose. The verb 'analyze' and 'validate' plus the resource 'npx command' make it distinct from sibling tools like audit_security or analyze_quality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'before execution' implies it should be used prior to running npx, but it does not explicitly mention when not to use it or contrast with sibling tools. No alternatives are named, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_qualityC
Evaluate package quality metrics including maintenance, popularity, and sustainability
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Name of the package to analyze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only evaluation but does not disclose output format, failure modes, network requirements, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasteful words. It front-loads the purpose and names three metrics, but its brevity omits useful behavioral context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema or annotations, the agent cannot infer what the tool returns or how it behaves beyond 'evaluate.' The three listed metrics give some hint, but the return value, performance, and edge cases remain undefined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter packageName is fully described in the schema ('Name of the package to analyze'), covering 100% of the parameter meaning. The description adds no further parameter detail, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Evaluate' with a clear resource 'package quality metrics' and lists three aspects (maintenance, popularity, sustainability). It distinguishes itself from sibling tools like audit_security or analyze_bundle_size, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus siblings like get_package_details or analyze_capabilities. It lacks context about prerequisites, suitable scenarios, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_securityB
Check package for known security vulnerabilities and get recommendations
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | Specific version to audit (optional) | |
| packageName | Yes | Name of the package to audit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the purpose but does not disclose whether the operation is read-only, whether it accesses external vulnerability databases, or what 'recommendations' entail. This is insufficient for an agent to anticipate side effects or required context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core action. It is efficient with no redundant wording, and every word contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple signature, but with no output schema and no annotations, the description fails to explain what 'recommendations' look like or any important context (e.g., network dependency, return format). While the core purpose is clear, the lack of detail about outputs makes it slightly incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, with clear descriptions for packageName and version. The tool description adds no additional semantic depth beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks a package for known security vulnerabilities and returns recommendations. The verb 'check' is specific, the resource is the package, and the security vulnerability focus distinguishes it from sibling tools like analyze_quality or check_compatibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus alternatives. The description implies it is for security auditing, but it does not mention exclusions, prerequisites, or contrast with sibling tools such as analyze_bundle_size or find_similar_packages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_compatibilityB
Analyze compatibility of a package with existing project dependencies
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | Version or version range | |
| packageName | Yes | Name of the package to check | |
| existingDependencies | Yes | Existing package.json dependencies |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It merely says 'Analyze compatibility,' which implies a read-only action, but it does not disclose whether this performs network calls, how results are returned (e.g., boolean, report, errors), or any side effects. This leaves critical behavioral traits unexplained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the tool's purpose without any fluff. Every word serves to communicate the core function, making it highly concise and appropriately structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has three parameters including a nested object, and no output schema. The description does not explain what the compatibility result looks like, what 'compatibility' means in this context, or how the version parameter affects the analysis. A more complete description should outline the output format and any assumptions about dependencies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage for all three parameters, including descriptions for packageName, existingDependencies, and version. The description adds no additional semantic meaning beyond what the schema already documents, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes compatibility of a package with existing project dependencies. The verb 'Analyze' combined with the specific resource 'compatibility of a package with existing project dependencies' distinguishes it from sibling tools like compare_versions or analyze_quality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool instead of alternatives. It does not mention exclusions, prerequisites, or context such as comparing two packages or checking security, leaving the agent without explicit usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_packagesA
Compare multiple npm packages side-by-side to answer "which is better?" or "what are the pros/cons?" questions. IMPORTANT: This tool generates detailed comparison analysis including: module system (ESM/CJS), TypeScript support, popularity metrics, maintenance status, bundle sizes, and provides a scored recommendation with reasoning. Output is a comprehensive comparison report with pros/cons for each package and a winner recommendation.
| Name | Required | Description | Default |
|---|---|---|---|
| packages | Yes | Array of package names to compare (2-5 packages) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool generates a detailed analysis including module system, TypeScript support, popularity, maintenance, bundle sizes, and provides a scored recommendation with pros/cons. This goes beyond the schema and makes behavioral expectations clear. It could add more on side effects or limitations, but for a read-only comparison tool, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, then details on what the analysis includes and the output format. Every sentence adds value. The 'IMPORTANT' marker draws attention to key details without excessive length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is simple (one param, no output schema), the description covers the purpose, the comparison dimensions, and the output type comprehensively. It could mention return format explicitly (e.g., JSON structure), but the description's 'comprehensive comparison report' is sufficient for an agent to understand what it returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the single parameter, describing it as an array of package names (2-5). The description adds context for why this parameter is used, but no additional syntactical or format detail beyond the schema. Baseline 3 is appropriate because the schema already does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: comparing multiple npm packages side-by-side to answer 'which is better?' or 'pros/cons' questions. It specifies the resource (npm packages) and the action (compare), and distinguishes itself from sibling tools like compare_versions, which is for version comparisons.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when to use the tool ('to answer which is better or pros/cons questions'), but it does not explicitly list when not to use it or name alternatives. A more explicit exclusion (e.g., 'not for comparing versions') would make it a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_versionsB
Compare different versions of a package and analyze breaking changes
| Name | Required | Description | Default |
|---|---|---|---|
| toVersion | Yes | Target version | |
| fromVersion | Yes | Starting version | |
| packageName | Yes | Name of the package |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool compares versions and analyzes breaking changes but does not clarify whether it is a read-only operation, what exactly constitutes 'breaking changes', whether external network/registry access is needed, or what the return format looks like. This lack of detail leaves significant behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the primary action and outcome. Every word contributes to the core purpose, with no redundancy or filler. It is efficient and appropriately sized for the tool's scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description should provide more context about return values, edge cases, or operational details. It does not mention what the tool returns after analysis, any performance implications, or how breaking changes are determined. For an analytical tool with three required parameters, this is a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with each parameter having a basic description ('Target version', 'Starting version', 'Name of the package'). The tool description adds the context of comparing versions but does not provide additional semantic meaning beyond what the schema already offers, such as version format expectations or constraints. Thus the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Compare'), the resource ('different versions of a package'), and the specific outcome ('analyze breaking changes'). This distinguishes it from sibling tools like compare_packages (which compares packages, not versions) and check_compatibility (which focuses on compatibility rather than breaking changes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when comparing versions of a single package, but it does not explicitly state when to use this tool over alternatives like compare_packages or check_compatibility, nor does it provide any exclusion criteria. There is no mention of prerequisites or common scenarios, leaving the agent to infer applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_similar_packagesA
Find alternative or similar packages based on keywords and functionality. Use this when users ask "what else is like X?" or "alternatives to Y?" or "other options besides Z?". Returns ranked list of similar packages with scores, descriptions, and download stats. Helps discover packages user might not know about.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results (default: 5, max: 10) | |
| packageName | Yes | Name of the package to find alternatives for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must explain behavior. It describes the return value as a ranked list with scores, descriptions, and download stats, and clarifies the basis as keywords/functionality. This is useful but lacks caveats about ranking methodology or potential gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then usage, then output. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the description covers purpose, usage, and return format. No output schema exists, but the description adequately describes results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters have schema descriptions, so baseline 3. The description doesn't add much beyond schema, though it implies ranking behavior via 'ranked list' which is relevant to limit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds alternative or similar packages based on keywords and functionality, with concrete examples of user queries. It distinguishes itself from siblings like search_packages by focusing on similarity rather than general search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage context with paraphrases like 'what else is like X?' and 'alternatives to Y?', making when-to-use clear. It doesn't mention when not to use or alternative tools, but the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_quick_startA
Generate ready-to-use code examples and installation instructions. Use this when users ask "how do I use X?" or "show me example code for Y" or want to quickly start using a package. Provides install commands, basic usage, and framework-specific examples.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | Specific version (optional) | |
| framework | No | Target framework (auto-detect if not specified) | |
| packageName | Yes | Name of the package |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the tool produces install commands, basic usage, and framework-specific examples, but does not disclose potential side effects, limitations, or return format beyond these broad outputs. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and each sentence serves a clear purpose: the first states what the tool does, the second provides usage guidance. There is no wasted wording, making it an exemplary model of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has three parameters, one with an enum, and no output schema. The description adequately explains what the tool returns at a high level ('install commands, basic usage, and framework-specific examples'), which is sufficient for an agent to select and invoke it correctly. It does not dive into output formatting, but that is not critical given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for all three parameters, providing full descriptions for packageName, framework, and version. The description's mention of 'framework-specific examples' loosely aligns with the framework parameter, but it adds no additional semantic value beyond what the schema already documents, justifying the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Generate ready-to-use code examples and installation instructions.' It uses a specific verb (Generate) and resource (code examples/installation instructions), and differentiates from siblings by targeting 'how do I use X?' queries, which is distinct from searching, comparing, or analyzing packages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use the tool ('Use this when users ask...') with concrete examples. It provides clear context for common user intents but does not explicitly mention when not to use it or name alternative tools, which would warrant a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_package_detailsA
Get detailed information about a specific npm package including versions, dependencies, and repository info
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | Specific version (optional, defaults to latest) | |
| packageName | Yes | Name of the package |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It does disclose the kind of information returned (versions, dependencies, repository info), but does not explicitly state read-only behavior, error handling, or prerequisites. For a simple get tool, the lack of explicit safety or behavioral caveats keeps this at a middle score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately identifies the action and subject. Every word adds value, and it is free of fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple tool with two parameters and no output schema, the description covers the key return categories (versions, dependencies, repository info) and the input requirements. While it could specify exact return format or behavior when the package does not exist, the essentials are present. The description is complete enough for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with descriptions for both 'packageName' and 'version'. The description adds no additional parameter-level meaning beyond listing the return content, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'Get detailed information' targeting a 'specific npm package' and enumerates the key contents (versions, dependencies, repository info). This clearly distinguishes it from sibling tools like search_packages (which finds packages) and compare_versions (which compares versions), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing details on a specific package, but does not explicitly mention alternatives or when not to use this tool. The sibling tools suggest contexts like searching or comparing, but no exclusions or alternative pointers are provided. Usage is inferred from the name and description rather than clearly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_packagesA
Search and discover npm packages. Use this to find libraries, compare options, see what's available for a specific task, or answer "what packages exist for X?" questions. Returns packages with popularity ranking, descriptions, download stats, and quality scores. Output includes package names, versions, descriptions, and can be used as input for compare_packages.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results (default: 10, max: 50) | |
| query | Yes | Search query (package name or keywords) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that it returns packages with popularity ranking, descriptions, download stats, and quality scores, and that output includes package names and versions. It doesn't explicitly state read-only behavior, but for a search tool this is implied and sufficiently transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each with a distinct purpose: definition, use cases, and output characteristics. No filler or redundant information, highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter search tool with no output schema, the description fully covers purpose, usage, and expected output, and even hints at compatibility with compare_packages. It is complete enough for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for query and limit parameters. The description adds context by framing query as a way to 'find libraries' or 'see what's available for a specific task,' but doesn't add new semantic detail beyond the schema descriptions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Search and discover npm packages' with specific use cases like 'find libraries, compare options, see what's available for a specific task, or answer "what packages exist for X?" questions.' It clearly distinguishes itself from siblings by noting its output can be used as input for compare_packages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this to find libraries, compare options, see what's available for a specific task, or answer "what packages exist for X?" questions.' It also mentions that output can be used as input for compare_packages, providing an alternative and integration guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
v0.0.3- First observed
analyze_bundle_size - First observed
analyze_capabilities - First observed
analyze_npx_command - First observed
analyze_quality - First observed
audit_security - First observed
check_compatibility - First observed
compare_packages - First observed
compare_versions - First observed
find_similar_packages - First observed
generate_quick_start - First observed
get_package_details - First observed
search_packages
TDQS
Scored across 12 tools
Each tool targets a distinct aspect of npm package interaction: searching, comparing, analyzing security, quality, capabilities, bundle size, and generating code. Though some tools are related, their descriptions clearly differentiate purposes (e.g., search_packages finds packages by keyword, find_similar_packages finds alternatives to a given package). No two tools appear to do the same thing.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., search_packages, analyze_quality, get_package_details). The verbs are descriptive and each noun is appropriate for the operation. This is a uniform, predictable naming convention.
With 12 tools, the server is well-scoped for its purpose of npm package analysis and discovery. Each tool covers a distinct need without bloat, fitting comfortably within the ideal 3-15 range. The count supports thorough functionality without overwhelming an agent.
The tool set covers the full spectrum of package evaluation: discovery, detailed inspection, version comparison, security audits, quality analysis, compatibility checking, bundle size analysis, and quick-start code generation. There are no obvious dead ends—after finding a package, an agent can analyze it in multiple ways and even get usage examples. The surface is complete for the intended domain.
Maintenance
Related MCP Connectors
npm MCP — wraps the npm Registry API (free, no auth)
A Model Context Protocol server for Wix AI tools
Dive into the world of npm with our NPM Package Info MCP. Access crucial metadata about any npm
MCP server for hex.pm and hexdocs.pm: search, inspect, compare, and audit Elixir packages
Related MCP Servers
- AlicenseDqualityDmaintenanceA Model Context Protocol server that allows AI models to fetch detailed information about npm packages and discover popular packages in the npm ecosystem.18 npm1ISC
- AlicenseAqualityAmaintenanceA Model Context Protocol server that enables AI-powered analysis of NPM packages through multiple tools for security vulnerability scanning, dependency analysis, package comparison, and quality assessment.19456 npm18TypeScriptMIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables language models to interact with npm services securely, providing tools for package management, project initialization, script execution, and security auditing.8 npmMIT
- AlicenseNot gradedqualityDmaintenanceModel Context Protocol server for the JSR (JavaScript Registry)4MIT