Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

NPMScan

by salemalemversion 3.1.2i★ –iRuns in the cloud
Registry nameio.github.salemalem/npmscan

Install

Overview

Description from the maker (original English)

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

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs in the cloud
  • Transport: Streamable HTTP
  • Category: Developer tools

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on the maker’s server: what you ask it goes through their server.
  • The registry lists no key to fill in.

You need

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Works in Claude on the web, desktop and mobile:

  1. Open Settings → Connectors
  2. Press Add custom connector
  3. Paste the address below and press Add
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Add2https://…3
https://npmscan.com/api/mcp

Run this in your terminal

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

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

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

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "npmscan": {
      "type": "http",
      "url": "https://npmscan.com/api/mcp"
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

ChatGPT connects only to servers on the internet:

  1. Open ChatGPT on the web → Settings → Connectors (Apps)
  2. Press Create or Add (some plans need Developer mode under Advanced first)
  3. Paste the address below, give it a name and save
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Create2https://…3
https://npmscan.com/api/mcp

Menu names can differ slightly by plan and over time.

Your choice stays on this device in a cookie; no account needed.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

We have not read this server’s tool list yet; we check endpoints in rotation.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account salemalem, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • … Not checked yet

    Endpoint responds

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    Sign-in with OAuth

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    No hidden instructions in tool descriptions

    Not checked yet; we read the tool list when we check the endpoint

Compared with others in Developer toolsi

  • More stars than 0% of the other 4906 servers in this category
  • Published to the registry more recently than 59% of the other 4906 servers in this category
  • Basic checks equal to or better than 100% of the other 4906 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is NPMScan safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.

Is it still maintained?

The GitHub repo last changed –, and the latest version (3.1.2) reached the registry 28 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: GitHub, Desktop Commander, Cloudflare MCP

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

GitHub

by github

GitHub’s official server lets AI read and manage code, issues and pull requests in your account. Use GitHub’s hosted version or run it locally with Docker.

Computer or cloud★ 34,245MITUpdated 4 days ago
Install

Desktop Commander

by wonderwhy-er

MCP server for terminal commands, file operations, and process management

Runs on your computer★ 10,225MITUpdated 16 days ago
Install

Cloudflare MCP

by cloudflare

Cloudflare MCP servers

Runs in the cloud★ 4,446Apache-2.0Updated 14 months ago
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

NPMScan plugin for Claude Code

A Claude Code plugin that gives Claude read-only npm package and vulnerability lookups, backed by npmscan.com's free, unauthenticated MCP server.

NPMScan is also officially listed for both ChatGPT and Claude on npmscan.com's MCP page, so users can verify that this plugin points at the same public service.

Official listings

Pending:

  • Grok Build (xAI's official plugin marketplace): submitted in xai-org/plugin-marketplace#1506, awaiting xAI review. See Using it with Grok Build.
  • GitHub Copilot (Awesome Copilot marketplace): submitted in github/awesome-copilot#5142.
  • Gemini CLI (extension gallery): indexed automatically from this repo. See Using it with Gemini CLI.

What it adds

  • MCP server (npmscan, https://npmscan.com/api/mcp) with twenty-three tools — see Tools below. Every tool result includes an npmscanUrl linking back to the full write-up on npmscan.com. No API key or auth required — same public data as the website. The server is stateless and rate-limited to 30 requests/minute per IP. Every vulnerability finding carries isMalware, so a confirmed-malicious package is reported as malware to remove, never as an ordinary bug.
  • `/npmscan:dependency-audit` skill — chains batch_query_vulnerabilities → get_package/get_package_version → analyze_transitive_dependencies → the maintainer/provenance/license/remediation/alternative tools into one dependency-audit report, instead of leaving that tool sequencing to Claude each time. Also handles PR-style before/after diffs via diff_dependencies, raw npm audit --json output via enrich_npm_audit, and a bare GitHub repo URL via audit_github_repository. Triggers automatically when you paste a package.json/lockfile/SBOM, give a GitHub repo URL, or ask to check/audit your dependencies, or invoke it directly. See skills/dependency-audit/SKILL.md.
  • `/npmscan:package-trust-check` skill — a deep, single-package investigation for "is X safe / was X compromised" questions: a malware check (including versions npm has since removed for being malicious), maintainer add/remove history (account-takeover patterns), publish-provenance cross-checks, and install-script scanning, in one report. Triggers automatically on a trust question about one named package; not for auditing a whole dependency list (that's dependency-audit). See skills/package-trust-check/SKILL.md.
  • `/npmscan:new-dependency-evaluation` skill — for a forward-looking choice about what to *add*, not what's already installed: comparing 2-5 named candidates ("axios vs got vs node-fetch"), evaluating one candidate against its real peers, or shortlisting candidates from a described need. Orchestrates compare_packages/suggest_alternative/search_packages into a structured side-by-side with a deterministic pick. See skills/new-dependency-evaluation/SKILL.md.
  • `/npmscan:incident-response` skill — turns an existing finding, or just a vague symptom description ("npm install did something weird"), into concrete get_remediation_playbook steps: real incident references, severity, and prevention tips, not improvised advice. See skills/incident-response/SKILL.md.
  • `/npmscan:ci-pr-gate` skill — turns a dependency change (a before/after snapshot, or one or more named "bump X from A to B" upgrades) into one deterministic PASS/WARN/FAIL verdict formatted for a CI check or PR-comment bot, applying a fixed policy on top of diff_dependencies/simulate_dependency_upgrade — not a conversational report (that's dependency-audit's job). See skills/ci-pr-gate/SKILL.md.

Tools

NPMScan provides twenty-three tools:

ToolDescription
search_packagesSearch 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 — flags possibleTyposquatOf when a low-popularity result's name is one typo away from a top-5,000 package.
get_packageLatest 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/highestSeverity verdict (with fixed versions and isMalware per finding) — plus a rule-based (not model-generated) maintenance/popularity summary and typosquat flag computed from those numbers.
get_package_versionMetadata 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 has advisories for (usually one pulled for being malicious) comes back with versionExists: false and those findings, not a bare "not found".
get_maintainer_profilePackages an npm username currently maintains via npm's own maintainer: 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 security check — pair it with check_maintainer_blast_radius for the actual compromised-account signal.
query_vulnerabilitiesOSV.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 version that isn't on npm still returns its OSV data, with packageExists: false and an existenceCheckNote — so a typo doesn't read as "clean", and a version removed for malware still shows its findings. Accepts packageName as an alias for name, and other ecosystems via ecosystem (e.g. "PyPI").
batch_query_vulnerabilitiesOSV.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 isMalware per finding. Also reports names/versions that aren't on npm (unresolvedPackages/nonexistentVersions — never read those as clean), per-package signals (deprecated, install scripts, popularity, typosquat), and for lockfiles a source check that flags a tarball from an unexpected host or one that is a different package than declared (identityMismatch).
get_latest_advisoriesRecently 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 advisories; type: "osv" is OSV.dev's OpenSSF malicious-packages feed (MAL- ids). Cursor-paginated. These are feeds of recent advisories, not a package's full history — to check whether a package is or was malware, use query_vulnerabilities and its isMalware flags.
get_cveNIST 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 NVD has no data yet. Not npm-scoped — NVD covers every ecosystem.
analyze_install_scriptFetches 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, obfuscation, untrusted remote binaries, exfil hosts, eval on decoded strings, CI telemetry) plus a typosquat check. Returns a totalScore and riskTier. A prepare-only package scores 0 unless its command does something alarming, since npm never runs a dependency's prepare on install. A heuristic static scan, not proof of malice — it doesn't execute code or check maintainer history.
analyze_transitive_dependenciesRecursively 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 naming which direct dependency pulled in each vulnerable transitive package. A total-node budget caps runaway graphs, reported via truncated/truncationNote rather than silently returning a partial scan as complete.
check_package_provenanceChecks 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 versions published before npm provenance existed, 2023-04-19); and diffs the published tarball's install scripts/dependencies against the source repository at the attested commit — the pattern of a stolen-npm-token publish that bypasses CI. For a version npm has removed, the error names any OSV advisories for it. Structural only, not a cryptographic re-verification of the Sigstore bundle.
check_maintainer_changesReconstructs 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 any release. Also cross-checks the declared GitHub repository for transfers/archival.

| check_maintainer_blast_radius | Given an npm username, finds the packages that account currently maintains and flags a tight cluster of packages pub

Only the beginning is shown; read the rest in the repo

Ask PopNx