
Npm Advisor Mcp
io.github.YashviGupta15Published by GitHub account YashviGupta15v0.1.3Updated Oct 25, 2026
MCP server to search, compare, and recommend npm packages by size, popularity, and maintenance.
Overview
A local MCP server that lets an assistant search, compare, audit and recommend npm packages by size, popularity, maintenance and TypeScript support.
- What you can do
- Search npm packages by feature or keyword and get ranked results with size, download and quality scores. Compare 2–5 packages side by side and get weighted recommendations for browser, Node, React or CLI use cases. Read deep package details, answer technical questions, find alternatives and check deprecation status. Audit packages for known CVEs and generate install commands for npm, yarn, pnpm and bun. Fetch changelogs from GitHub, GitLab or Bitbucket, and diagnose which registry and auth a package resolves to.
- When to use it
- Useful when choosing a JavaScript library and you want evidence-based comparisons of bundle size, adoption, maintenance and security rather than guesswork. Also handy for migrating off deprecated packages or checking whether a dependency has known vulnerabilities.
- Requirements
- Runs locally over stdio as an npm package; needs Node.js 18+ and npm 9+. No API keys are required, but network access to the npm registry, npm downloads, npm audit, npms.io, Bundlephobia and GitHub/GitLab/Bitbucket is needed. Behind a TLS-intercepting proxy, a corporate CA path via NODE_EXTRA_CA_CERTS may be needed.
Installation
In SourceWeft
- Open Npm Advisor Mcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
npm-advisor-mcp
A Model Context Protocol (MCP) server that acts as an intelligent npm package advisor. Describe the feature you need, and it will search the registry, compare candidates, audit for vulnerabilities, and recommend the best library based on bundle size, popularity, maintenance, TypeScript support, and more.
Features
- Search by feature — describe what you need (e.g., "date manipulation", "PDF generation") and get ranked results
- Side-by-side comparison — compare 2–5 packages on key metrics in a clean table format
- Deep package details — full breakdown of a single package: README, dependencies, scores, links
- Weighted recommendations — algorithm-driven pick with dynamic weights per use case (browser, Node.js, React, CLI)
- Security audit — check for known CVEs with severity breakdown and patch availability
- Deprecation check — detect deprecated, abandoned, or unmaintained packages with a clear verdict
- Find alternatives — discover competing packages when migrating away from a deprecated library
- Install command generator — copy-paste commands for npm, yarn, pnpm, and bun with peer deps included
- Changelog viewer — fetch recent release notes from GitHub, GitLab (cloud + self-hosted), or Bitbucket
- Technical Q&A — ask specific questions about a package and get contextual answers from its metadata
- In-memory caching — all API responses are cached with TTL to eliminate redundant network calls
Architecture
Prerequisites
- Node.js 18+ (uses native
fetch) - npm 9+
No API keys required — all data sources are public and free.
Installation
Configuration (Kiro MCP)
Add this to your ~/.kiro/settings/mcp.json inside the "mcpServers" object:
After saving, the server will appear in the Kiro MCP panel and reconnect automatically.
Tools Reference
1. search_packages
Search npm for packages matching a feature or keyword.
Example prompt:
"Search for packages that handle PDF generation in Node.js"
Returns: Ranked list with description, weekly downloads, gzip size, quality/maintenance/popularity scores, and tree-shaking support.
2. compare_packages
Compare 2–5 packages side-by-side on all key metrics.
Example prompt:
"Compare dayjs, date-fns, and moment for date manipulation"
Returns: Markdown table with version, gzip size, minified size, downloads/week, TypeScript support, tree-shaking, dependency count, maintenance score, quality score, last publish date, and license.
3. get_package_details
Deep dive into a single package with full metadata.
Example prompt:
"Get details about the zod package"
Returns: Version, description, quick stats table (downloads, sizes, deps, TS support, license, publish date), quality scores, dependency list, peer dependencies, links, keywords, and a README excerpt.
4. recommend_package
Get a weighted recommendation from a list of candidates. Scoring weights automatically adjust based on your target environment.
Example prompt:
"Recommend a date library from dayjs, date-fns, moment, and luxon for a browser app — must be under 10KB gzipped"
Returns: Winner with rationale, runner-up alternatives, a detailed score breakdown table, and a license compatibility column.
Default Scoring Weights (general)
Use Case Weight Adjustments
5. resolve_technical_doubt
Answer a specific technical question about a package.
Example prompts:
"Does dayjs support timezone conversion out of the box?" "Is lodash tree-shakeable?" "What are the peer dependencies of @angular/material?" "Is chalk still actively maintained?"
Returns: Contextual answer pulling from metadata, bundle analysis, dependency tree, scores, and README content. Automatically detects question category (size, TypeScript, dependencies, maintenance, tree-shaking) and surfaces relevant data.
6. audit_package
Check a package for known security vulnerabilities.
Example prompt:
"Are there any known vulnerabilities in lodash?"
Returns: Total vulnerability count, severity breakdown (critical/high/moderate/low), per-CVE details with affected version ranges, patch availability, advisory links, and a deprecation warning if applicable.
7. find_alternatives
Find similar or competing packages as alternatives to a given one.
Example prompts:
"Find alternatives to moment.js" "What can I use instead of request?"
Returns: Ranked list of alternatives with descriptions, weekly downloads, bundle sizes, quality scores, and tree-shaking support. Flags if the original package is deprecated.
8. check_deprecation
Detect if a package is deprecated, unmaintained, or potentially abandoned.
Example prompts:
"Is request still maintained?" "Is moment.js deprecated?"
Returns: npm deprecation flag, days since last publish, maintenance score, weekly downloads, and a clear verdict — actively maintained / moderately stale / potentially abandoned / officially deprecated.
9. generate_install_command
Generate ready-to-paste install commands across all major package managers.
Example prompts:
"Give me the install command for @tanstack/react-query" "How do I install eslint as a dev dependency with pnpm?"
Returns: Install commands for npm, yarn, pnpm, and bun. Automatically appends peer dependencies and adds a separate @types/ install block if the package lacks built-in TypeScript types.
10. get_changelog
Fetch recent release notes for a package from its git repository. Supports GitHub, GitLab (cloud and self-hosted), and Bitbucket.
Example prompts:
"What changed in the last few versions of zod?" "Show me the recent releases for vite" "What's new in @ATLAS/info-panel?"
Returns: Release history with version tags, publish dates, and formatted release notes (truncated at 800 chars per release).
Git host detection
The tool reads the repository field from the package's package.json and auto-detects the host:
Note for private/internal packages: The tool reads the
repositoryfield from the package metadata fetched from your registry. If your internalpackage.jsondoesn't include arepositoryfield, or uses an SSH URL likegit@internal-git:atlas/info-panelwithout a recognisable hostname, the tool won't be able to detect the host. Add a full HTTPS URL to fix this:
11. check_registry (diagnostic)
Shows which registry URL and auth credentials the server resolves for a given package name, based on ~/.npmrc. Run this first when debugging private registry access.
Example prompt:
"Check registry for @ATLAS/info-panel"
Returns: Resolved registry URL, whether an auth token was found, and guidance if it's resolving to the public registry unexpectedly.
Data Sources
All requests include timeouts (10–15s) and graceful fallbacks — if one API is slow or unavailable, the tool still returns partial results rather than failing. Responses are cached in-memory to avoid redundant calls within a session.
Private Registry Support (.npmrc)
The server reads ~/.npmrc directly to resolve the registry URL and auth token for each package. No shell subprocess is involved — it parses the file the same way npm does, so it works regardless of how the MCP server process was spawned.
This means scoped private packages like @your-company/some-lib work out of the box as long as your .npmrc is configured correctly — for example:
Scope names in .npmrc are matched case-insensitively — @ATLAS, @atlas, and @Atlas all match the same entry.
Registry resolution logic
For every package fetch, the server:
- Reads
~/.npmrcand looks for a scoped registry override matching the package scope (e.g.@ATLAS:registry=...) - If found, uses that registry URL with the corresponding auth token
- If not found, uses the default
registryvalue from.npmrc(orregistry.npmjs.orgif not set) - If the resolved registry fails and it wasn't already the public registry, automatically retries against
registry.npmjs.org— so public packages always work even if a custom default registry is configured
Use the check_registry tool to verify what registry and auth the server resolves for any package before running other tools.
Public vs private package support
For private packages, tools that depend on bundlephobia or npms.io (search_packages, find_alternatives, bundle size in comparisons) will show N/A for those fields but will still return all registry metadata correctly.
Caching
All API responses are cached in-memory with tiered TTLs:
The cache is process-scoped — it resets when the MCP server restarts.
Development
Project Scripts
Tech Stack
Zero runtime dependencies beyond the MCP SDK and zod. No database, no external auth.
How It Works
- User asks a question in Kiro (e.g., "find me a library for CSV parsing")
- Kiro routes to the appropriate tool based on the prompt
- The tool checks the in-memory cache — returns instantly if data is fresh
- On cache miss, fetches live data from npm registry, npms.io, bundlephobia, and GitHub in parallel
- Results are scored, formatted, and returned as structured markdown
- Kiro presents the answer in the chat with tables, scores, and actionable recommendations
The server runs as a stdio process — Kiro spawns it on demand and communicates via JSON-RPC over stdin/stdout.
Extending
To add a new tool:
- Create
src/tools/your-tool.tswith a handler function - Register it in
src/index.tsusingserver.tool(name, description, zodSchema, handler) - Add the tool name to
autoApproveinmcp-config.json - Rebuild:
npm run build
To add a new data source:
- Create
src/services/your-source.tswith fetch functions - Wrap responses with
cache.set/cache.getfromservices/cache.ts - Import and use it in the relevant tool handlers
- Add timeout + graceful fallback for resilience
Troubleshooting
If running behind a corporate proxy that intercepts HTTPS (e.g., Zscaler), add your corporate CA certificate to the MCP config:
This is the recommended fix. Node's native fetch does not respect NODE_TLS_REJECT_UNAUTHORIZED=0 in all cases, and disabling TLS verification entirely is a security risk. Using NODE_EXTRA_CA_CERTS adds your corporate CA to Node's trust store without disabling verification for everything else.
To find your corporate CA cert path, check with your IT team or look in your system certificate store. On Windows it is typically exported from certmgr.msc → Trusted Root Certification Authorities.
If you also need an explicit proxy:
License
ISC
Source: npm-advisor-mcp/README.md at commit d6f033d
Tools
0Version history
1- v0.1.3LatestSep 16, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.