# NPMScan [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/salemalem/npmscan-mcp-plugin  
**GitHub Stars:** 0  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/npmscan-2

## Description
Detect malicious or vulnerable npm packages: registry search, OSV.dev and GitHub advisory lookups

## Tools
Capabilities this server exposes over MCP:

- **search_packages** — Search the npm registry by name or keywords. Each result includes weekly/monthly download counts, dependent-package counts, and rank among npmscan's own top-100k-by-downloads snapshot, so you can tell an established package from an abandoned or squatted one that merely matches the query text — flag…
- **get_package** — Latest version, install scripts (`preinstall`/`install`/`postinstall`/`prepare`), maintainers, license, recent version history, weekly downloads, GitHub stars, TypeScript support, days since last publish, ecosystem-wide download rank, a 3-month download trend, and an `isLatestVersionVulnerable`/`hi…
- **get_package_version** — Metadata for one exact version plus an OSV.dev check scoped to that version — `isVulnerable`/`highestSeverity` as a direct safe/not-safe answer, with each finding's severity, summary, fixed version and `isMalware`. For checking a version pinned in a lockfile. A version npm has removed but OSV still…
- **get_maintainer_profile** — Packages an npm username currently maintains via npm's own `maintainer:<username>` search index, plus precomputed download/dependent totals across all of them. Lists the most-downloaded `limit` packages (default 50, max 250); totals still cover every package found. A plain info lookup, not a securi…
- **query_vulnerabilities** — OSV.dev lookup for known vulnerabilities affecting a package, optionally scoped to a version, with `isVulnerable`/`highestSeverity` as a direct verdict and each finding's severity, summary, fixed version and `isMalware`. For npm it also cross-checks the name/version against the registry: a name or…
- **batch_query_vulnerabilities** — OSV.dev lookup across a whole dependency inventory at once — pass a flat `packages` list, or paste raw `package.json`/lockfile/CycloneDX JSON/SPDX JSON content via `content` and it parses that for you. Chunks large inventories internally, with severity, summary, CVE aliases, fixed version and `isMa…
- **get_latest_advisories** — Recently published npm advisories from one of three sources (one per call): `type: "reviewed"` (default) is GitHub's curated, mostly CVE-backed set, filterable by severity, vulnerability category, affected package name, or an exact GHSA/CVE ID; `type: "malware"` is GitHub's own malicious-package ad…
- **get_cve** — NIST NVD lookup for one exact CVE ID (authoritative CVSS score/vector, CWEs, references), or a keyword/severity/CWE/date-range search. Enriched with CISA KEV status (actively exploited in the wild?) and FIRST.org EPSS (30-day exploitation probability). Falls back to the raw MITRE CVE record when NV…
- **analyze_install_script** — Fetches a package's published tarball and statically scans its `preinstall`/`install`/`postinstall`/`prepare` lifecycle scripts — and the files they reference, pulled from the tarball itself — against npmscan's red-flags rubric (`child_process` use, network calls, sensitive-path/env access, obfusca…
- **analyze_transitive_dependencies** — Recursively resolves 1-15 direct/root packages' dependency graphs to a configurable depth (default 2, max 3) and batch-checks every resolved package against OSV.dev — surfaces vulnerabilities buried several levels deep that a flat `batch_query_vulnerabilities` call would miss, with `vulnerablePaths…
- **check_package_provenance** — Checks a version's npm/Sigstore publish provenance against reality: flags a non-GitHub-hosted builder or an attested source repo that doesn't match `package.json`'s own `repository` field; flags a package missing provenance while its npm-scope/maintainer peers consistently have it (skipped for vers…
- **check_maintainer_changes** — Reconstructs a package's maintainer-add/remove history from the npm packument and flags account-takeover patterns — a new maintainer who published shortly after being added, a sudden full maintainer-list replacement, a long-standing maintainer quietly dropped, or a maintainer change not yet tied to…
- **check_maintainer_blast_radius** — Given an npm username, finds the packages that account currently maintains and flags a tight cluster of packages published within a short rolling window of each other — the compromised-account pattern behind incidents like the 2025 chalk/debug ("qix") compromise and the 2026 keyv/cacheable ("Shai-H…
- **get_remediation_playbook** — Maps a finding's `rule` value from `analyze_install_script`/`check_maintainer_changes`/`check_package_provenance` (or an `id` slug guessed from a plain-language description) to a human-authored incident-response playbook — concrete steps, severity, real-incident references, and prevention tips, not…
- **check_license_compliance** — Given a package list and an optional allow/deny license policy, classifies each declared SPDX license (permissive/weak-copyleft/copyleft/network-copyleft/proprietary/public-domain/unknown), understands simple SPDX expressions (`OR`/`AND`/`WITH`), and reports a compliance verdict per package. With n…
- **diff_dependencies** — Compares two raw snapshots of a `package.json`, `package-lock.json`, `yarn.lock`, or `pnpm-lock.yaml` — e.g. before/after a PR — and reports added/removed/version-bumped packages. For every added or bumped package: a newly introduced `preinstall`/`install`/`postinstall` script (`installScriptIntrod…
- **prioritize_remediation** — Given a batch of already-flagged vulnerability findings, ranks them by what to actually fix first, into a `remove-now`/`patch-now`/`patch-soon`/`scheduled`/`monitor` tier per finding. Confirmed malware (a `MAL-` id, or an advisory whose OSV record is a malware advisory — looked up automatically) is…
- **simulate_dependency_upgrade** — Classifies a specific version jump (e.g. a suggested `fixedVersion`) as safe/low-risk/review-recommended/breaking-change-likely/unknown/do-not-upgrade by semver bump, a newly-deprecated target, a newly-introduced `preinstall`/`install`/`postinstall` script, a tightened Node engine requirement, and…
- **suggest_alternative** — Suggests better-maintained replacements for a deprecated, vulnerable, abandoned, or suspicious package by combining maintainer-provided deprecation hints, a hand-checked list of known successors for well-known packages (e.g. `request` → got/undici/ky, `colors` → @colors/colors), and deterministic n…
- **compare_packages** — Given 2-5 candidate packages for the same job (e.g. "axios vs got vs node-fetch"), fans the same registry/popularity/maintenance/vulnerability enrichment `get_package` computes out across every candidate in parallel, adds a lightweight install-script risk signal (a `prepare`-only candidate isn't pe…
- **audit_github_repository** — Given a GitHub repo URL, fetches its `package.json`/lockfile from the default branch (auto-detecting monorepos via workspace globs) and checks every lockfile entry for known vulnerabilities, then gives up to 100 packages — vulnerable ones first — the license-compliance, install-script and, for up t…
- **generate_sbom** — Generates a spec-valid CycloneDX or SPDX SBOM from the same `packages`/`content` inputs `batch_query_vulnerabilities` accepts, with npmscan's own vulnerability and license findings embedded in each format's native fields (CycloneDX's top-level `vulnerabilities[]`, SPDX's `externalRefs[]`). Every fi…
- **enrich_npm_audit** — Ingests raw `npm audit --json` output directly (npm 7+ or legacy npm 6 format) and ranks it with the same CISA KEV + FIRST.org EPSS + severity scoring as `prioritize_remediation`, resolving each finding's GHSA advisory to a CVE alias first (npm audit JSON almost never carries a CVE id on its own).…

## Claude Desktop Quick Installation
No confirmed install details yet, so no config is published. Follow the setup steps in the repository above.

## Documentation

## What NPMScan MCP server does

NPMScan MCP server gives an MCP client read-only access to npm package and security analysis. It can search the npm registry, inspect package metadata and version history, check OSV.dev vulnerability records, retrieve recent advisory feeds, and look up CVEs through NIST NVD with CISA KEV and FIRST EPSS enrichment.

The analysis extends beyond known advisories. Tools inspect lifecycle scripts and referenced files in published tarballs, reconstruct maintainer changes, check npm and Sigstore provenance, evaluate license policies, identify possible typosquats, and examine a maintainer’s package blast radius. Dependency-oriented tools accept package lists, manifests, lockfiles, CycloneDX or SPDX content, raw npm audit JSON, and GitHub repository URLs.

## How it works

The public MCP service is available at `https://npmscan.com/api/mcp`. Tool calls query npm, OSV.dev, GitHub advisory data, NIST NVD, and related sources as appropriate to the operation. Version-specific checks can distinguish a package that is absent from the registry from one that exists but has findings, including versions removed from npm for malicious activity.

For larger reviews, batch vulnerability checks parse dependency inventories and process them in chunks. Transitive analysis resolves dependency graphs to a configurable depth, while comparison, upgrade simulation, remediation, alternative-selection, and prioritization tools combine several signals into decision-oriented results. Every tool result includes an `npmscanUrl` pointing to the corresponding npmscan.com write-up.

Claude Code users can also use the supplied skills for dependency audits, package trust checks, new-dependency evaluation, incident response, and CI or pull-request gating. These skills sequence the underlying tools for specific workflows rather than adding a separate data source.

## Setup and configuration

NPMScan MCP server requires no API key or authentication. Configure an MCP-compatible client with the public endpoint, using the client’s normal setup process; the repository also provides a Claude Code plugin and setup guidance for other clients. No environment variables are required by the public service based on the provided material.

The service is stateless and rate-limited to 30 requests per minute per IP. It returns the same public data available through the npmscan.com service, so applications should account for request limits when auditing large inventories.

## Tools and capabilities

Available operations include:

- Search packages and compare candidates using downloads, dependents, rank, maintenance, popularity, and typosquat signals.
- Inspect latest or exact package versions, including scripts, maintainers, licenses, trends, stars, TypeScript support, and vulnerability status.
- Query individual or batch dependencies through OSV.dev, including parsed manifests, lockfiles, SBOMs, and unresolved-package signals.
- Analyze install scripts, transitive dependencies, provenance, maintainer history, maintainer blast radius, and license compliance.
- Audit GitHub repositories, generate CycloneDX or SPDX SBOMs, enrich npm audit output, and compare dependency snapshots.
- Retrieve remediation playbooks, suggest alternatives, simulate upgrades, prioritize findings, and inspect CVEs or recent advisories.

## Limitations and notes

NPMScan MCP server performs read-only lookups; it does not modify packages, repositories, or dependency files. Install-script analysis is a heuristic static scan and is not proof that a package is malicious. Advisory feeds are recent-source feeds rather than complete package histories, so package-specific malware checks should use the vulnerability query tools.

A clean result should not be inferred from an unresolved npm name or version: the tools report existence information separately. Provenance and maintainer checks are signals for investigation, and upgrade simulation can classify a change as unknown when the available metadata does not support a stronger conclusion.

_Full upstream README: https://allmcps.com/mcp/npmscan-2/readme_

