NPMScan
by @salemalem · io.github.salemalem/npmscan
Detect malicious or vulnerable npm packages: registry search, OSV.dev and GitHub advisory lookups
- 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/mcpClaude, ChatGPT, Cursor and other apps
Add it as a custom connector with this URL (Streamable HTTP):
https://npmscan.com/api/mcpCursor, 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 answget_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 byquery_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 direcbatch_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 inventorget_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 GitHget_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`, nonanalyze_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 npanalyze_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 severacheck_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. Thrcheck_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 didcheck_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 eacheck_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 licensediff_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 coprioritize_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, cvesimulate_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) tsuggest_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 (deprecationcompare_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_packaudit_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 (orget_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) agenerate_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 SPDenrich_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
Markdown (GitHub README)
[](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 allAlgolia ProductivityVerified maker
@algoliaConnect LLM tools to your Algolia account with user-scoped access for internal workflows.
GitHubVerified maker
@githubConnect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP devkit serverVerified maker
@mapboxProvides AI assistants with direct access to Mapbox developer APIs and documentation.
GitLabVerified maker
gitlab.comOfficial GitLab MCP Server
Perplexity API PlatformVerified maker
perplexity.aiReal-time web search, reasoning, and research through Perplexity's API
Valuein — SEC EDGAR Fundamentals & Smart-Money Data
@valueinPoint-in-time, survivorship-free SEC EDGAR fundamentals + smart-money signals for AI agents.