NPMScan

by @salemalem · io.github.salemalem/npmscan

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

OnlineRemote
Category
Developer tools
Connection
Remote (HTTP)
Tools
23 reported
Status
Online

Connect it to your AI

Claude Code

claude mcp add --transport http npmscan https://npmscan.com/api/mcp

Claude, ChatGPT, Cursor and other apps

Add it as a custom connector with this URL (Streamable HTTP):

https://npmscan.com/api/mcp

Cursor, VS Code and other apps (mcp.json)

{
  "mcpServers": {
    "npmscan": {
      "url": "https://npmscan.com/api/mcp"
    }
  }
}

Tools it offers

23 tools, as the server itself reported during our check on Oct 31, 2026.

  • search_packagesSearch the npm registry by name or keywords. Each result includes its current weekly/monthly download counts, dependentsCount (how many other npm packages depend on it), topPackagesRank (position among npmscan's own top-
  • get_packageFetch npm registry metadata for a package: latest version, install scripts (preinstall/postinstall are a key risk signal), maintainers, license, recent version history, weekly downloads, GitHub stars, TypeScript support,
  • get_package_versionFetch registry metadata for one exact version of a package (dependencies, install scripts, tarball) AND check that exact version against OSV.dev for known vulnerabilities — isVulnerable/highestSeverity give a direct answ
  • get_maintainer_profileGiven an npm username, returns every package npm's own maintainer:<username> search index currently returns for that account (registry.npmjs.org's /-/v1/search — the public registry API has no dedicated 'list packages by
  • query_vulnerabilitiesQuery OSV.dev for known vulnerabilities affecting an npm package, optionally scoped to one exact version (e.g. to check whether a version pinned in a lockfile is safe). Returns isVulnerable and highestSeverity as a direc
  • batch_query_vulnerabilitiesCheck a whole npm dependency inventory against OSV.dev in one call: pass `packages: [{name, version?}]`, or raw package.json / package-lock / yarn.lock / pnpm-lock / CycloneDX / SPDX content via `content`. Large inventor
  • get_latest_advisoriesBrowse recently published npm security advisories and known-malicious-package findings. Three disjoint sources, selected via type: "reviewed" (default) is GitHub's curated, mostly CVE-backed advisories; "malware" is GitH
  • get_cveLook up authoritative NIST NVD data for one exact CVE ID (e.g. "CVE-2026-2950"), or browse/search NVD by keyword, CVSS severity, CWE, or a publication-date range. Every result is enriched with CISA KEV status (`kev`, non
  • analyze_install_scriptStatically scans a package's preinstall/install/postinstall/prepare lifecycle scripts AND the file(s) they reference — fetched directly from the published tarball, not just the command string in package.json — against np
  • analyze_transitive_dependenciesWalk one or more root packages' dependency trees (e.g. a package.json "dependencies" section) up to `maxDepth` levels (default 2, max 3) and check every resolved package@version against OSV.dev, so vulnerabilities severa
  • check_package_provenanceChecks whether a package version was published with npm's own Sigstore-backed publish provenance (`npm publish --provenance`), and cross-checks that provenance against reality rather than just reporting its presence. Thr
  • check_maintainer_changesReconstruct who has controlled an npm package and when, straight from the packument (each version records the maintainer list at publish time and who ran `npm publish`). Use it for the 'who controls this package, and did
  • check_maintainer_blast_radiusGiven an npm username, lists the packages npm's maintainer:<username> search index returns for that account and looks for a tight cluster of packages whose latest version was published within a short rolling window of ea
  • check_license_complianceGiven a list of packages (name + optional exact version or semver range — e.g. straight from a package.json "dependencies" object) and an optional allow/deny license policy, resolves each package's declared SPDX license
  • diff_dependenciesCompare two snapshots of a package.json, package-lock.json (v1-v3), yarn.lock (classic or Berry) or pnpm-lock.yaml (e.g. before/after a PR; formats can differ) and report added, removed and changed packages. Lockfiles co
  • prioritize_remediationRank vulnerability findings other tools already returned (batch_query_vulnerabilities, query_vulnerabilities, analyze_transitive_dependencies, diff_dependencies...) by what to fix first. Pass up to 200 `{packageName, cve
  • simulate_dependency_upgradeBefore running npm install, check whether upgrading a package from a current to a target version is safe. Pass `packageName` + `currentVersion` + `targetVersion` (omit target for "latest"), or `packages: [...]` (1-100) t
  • suggest_alternativeGiven a package that looks deprecated, vulnerable, abandoned, or suspicious, suggest better-maintained alternatives in the same category. This tool first checks the source package's own latest-version health (deprecation
  • compare_packagesCompare 2-5 candidate packages for the same job (e.g. "axios vs got vs node-fetch") side by side and get a deterministic pick. More than 5 names is rejected, never truncated; duplicate names are rejected. Use search_pack
  • audit_github_repositoryAudit a GitHub repository's npm dependencies from its URL — no pasted files needed. Fetches package.json plus the first lockfile found (pnpm-lock.yaml, then package-lock.json, then yarn.lock) from the default branch (or
  • get_remediation_playbookMaps a finding's `rule` value from analyze_install_script, check_maintainer_changes, or check_package_provenance to the matching human-authored incident-response playbook (the same content published at /docs/playbooks) a
  • generate_sbomGiven the same inputs batch_query_vulnerabilities accepts — either a flat {packages:[...]} list, or raw package.json / lockfile / CycloneDX JSON / SPDX JSON content via `content` — emits a spec-valid CycloneDX 1.6 or SPD
  • enrich_npm_auditGiven the raw output of `npm audit --json` (npm 7+'s `{vulnerabilities: {...}}` format, or legacy npm 6's `{advisories: {...}}`), parses it directly — no need to re-paste package.json/lockfile content — and runs it throu

Questions

What is the NPMScan MCP server?

Detect malicious or vulnerable npm packages: registry search, OSV.dev and GitHub advisory lookups. It is made by @salemalem and listed in the official MCP Registry as io.github.salemalem/npmscan. MCP (Model Context Protocol) is the open standard that lets AI apps like Claude, ChatGPT and Cursor use outside tools.

How do I add NPMScan to Claude?

In the Claude app or claude.ai, open Settings, then Connectors, choose "Add custom connector" and paste https://npmscan.com/api/mcp. In Claude Code, run: claude mcp add --transport http npmscan https://npmscan.com/api/mcp

How do I add NPMScan to ChatGPT?

ChatGPT can use remote MCP servers as connectors. In ChatGPT settings, under Apps and Connectors, turn on developer mode if asked, create a new connector and paste https://npmscan.com/api/mcp.

How do I add NPMScan to Cursor?

Open Cursor settings, go to MCP, choose "Add new MCP server" (or edit ~/.cursor/mcp.json) and add: { "mcpServers": { "npmscan": { "url": "https://npmscan.com/api/mcp" } } }

Does NPMScan work right now?

Yes. It responded when we last checked on 31 Oct 2026. We check remote MCP servers every day.

What can NPMScan do?

It gives your AI 23 tools, including search_packages, get_package, get_package_version, get_maintainer_profile, query_vulnerabilities. The full list is on this page.

Is this your server? Get the badge for your README
chen.media/mcp badge

Markdown (GitHub README)

[![Listed on chen.media/mcp](https://chen.media/mcp/badge/github-salemalem-npmscan.svg)](https://chen.media/mcp/github-salemalem-npmscan)

HTML (switches to dark mode on its own)

<a href="https://chen.media/mcp/github-salemalem-npmscan"><picture><source media="(prefers-color-scheme: dark)" srcset="https://chen.media/mcp/badge/github-salemalem-npmscan.svg?theme=dark"><img src="https://chen.media/mcp/badge/github-salemalem-npmscan.svg" alt="Listed on chen.media/mcp" height="40"></picture></a>

More in Developer tools

See all