npmjs-mcpCAUTION
npm registry MCP server — package intelligence, security audits, and dependency analysis for AI assistants
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://yaw.sh/mcp/install?name=npm&command=npx&args=-y%2C%40yawlabs%2Fnpmjs-mcp&description=npm%20registry%20-%20package%20intel%2C%20security%2C%20dependency%20analysis%2C%20write%20ops&source=https%3A%2F%2Fgithub.com%2FYawLabs%2Fnpmjs-mcp)
One click adds this to your local Yaw MCP config so it's available in every Yaw Terminal session. Or install manually below.
[](https://www.npmjs.com/package/@yawlabs/npmjs-mcp) [](https://opensource.org/licenses/MIT) [](https://github.com/YawLabs/npmjs-mcp/stargazers)
Run npm registry operations from Claude Code, Cursor, and any MCP client. 64 tools covering the full registry surface: package intelligence, security audits, dependency analysis, org/team management, and the write ops that normally fight you locally (npm deprecate, npm dist-tag, npm owner, npm unpublish).
Built and maintained by Yaw Labs.
Why this one?
Other npm MCP servers wrap npm search and call it done. This one doesn't.
- Full registry HTTP surface — 64 tools across reads, writes, orgs, teams, hooks, provenance, trusted publishers, and ops health. Not just
npm view. - Write ops that actually work in agents —
npm_deprecate,npm_undeprecate,npm_dist_tag_set,npm_unpublish_versiongo directly to the HTTP API with a Granular Access Token that has 2FA bypass. No 2FA prompts, no--otphunts, noENEEDAUTHfrom a session-bound.npmrc. (Since 2026-07-31 npm requires an interactive 2FA challenge for owner, access, team membership and grant, org membership and token changes even with 2FA bypass; for those tools the error names the exactnpmcommand a human runs.) - Agent-aware failure surfacing —
npm_check_authand `npm_publ
87c1574a637eOBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add npmjs-mcp -- npx -y @yawlabs/[email protected]
Exposed tools (66)
39 read · 17 write · 10 destructive. Blast radius: 10 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
devs | read | dev team |
express | read | Fast web framework |
npm_access_set | write | Set package access level: |
npm_access_set_mfa | write | Configure 2FA requirement for publishing: |
npm_audit | read | Quick vulnerability check for specific packages and versions using the bulk advisory API. Returns matching advisories with severity, CVEs, and patched versions. |
npm_audit_deep | write | Full security audit on a dependency set — returns detailed advisories with CVSS scores, CWEs, affected version ranges, fix recommendations, and full vulnerability metadata. |
npm_check_auth | read | Quick auth health check — returns structured data about npm auth status, token capability, and whether headless (CI/agent) publishing is possible. |
npm_collaborators | read | Get all users who have access to a package and their permission levels (read-only, read-write). |
npm_compare | read | Compare 2-5 packages side-by-side — downloads, version, license, maintainers, size, last publish, and security status. Great for |
npm_dep_tree | read | Resolve the production dependency tree for a package version (up to a configurable depth). Shows the full transitive dependency graph with versions. |
npm_dependencies | read | Get the dependency lists for a specific package version — production deps, devDeps, peerDeps, and optionalDeps. |
npm_deprecate | write | Deprecate a package or specific versions. Shows a warning message on install. |
npm_dist_tag_remove | destructive | Remove a dist-tag from a package. The |
npm_dist_tag_set | write | Point a dist-tag (e.g. |
npm_dist_tags | read | Get dist-tags for a package (latest, next, beta, etc). |
npm_downloads | read | Get total download count for a package over a period (last-day, last-week, last-month, last-year, or a custom date range like 2025-01-01:2025-12-31). |
npm_downloads_bulk | read | Compare download counts for multiple packages over a period. Up to 128 packages. |
npm_downloads_range | read | Get daily download counts for a package over a period. Returns per-day breakdown. |
npm_health | read | Assess the health of a package — maintenance activity, download trend, security status, deprecation, and documentation quality. |
npm_hook_add | write | Create a registry webhook. Target is |
npm_hook_get | read | Get a single webhook by its ID. The stored secret is redacted from the response. |
npm_hook_list | read | List webhooks. Optionally filter by package name. Secrets are redacted from responses. |
npm_hook_remove | destructive | Delete a webhook by ID. |
npm_hook_update | write | Replace a webhook |
npm_license_check | read | Check the license of a package and its direct production dependencies. Flags missing or non-standard licenses. |
npm_maintainers | write | Get current maintainers and their publish history for a package. |
npm_ops_playbook | read | Return canonical recipes for common npm operations — which MCP tool to call for which op, |
npm_org_member_remove | destructive | Remove a user from an org. Their team memberships in that org are also removed. |
npm_org_member_set | write | Add a user to an org or change their role. Roles: |
npm_org_members | read | List all members of an npm organization with their roles (owner, admin, developer). Requires authentication as an org member. |
npm_org_packages | read | List all packages accessible to an npm organization with their access levels. Shows what the org owns or has been granted access to. |
npm_org_teams | read | List all teams within an npm organization. Requires authentication as an org member. |
npm_owner_add | write | Add a user as a maintainer of a package. They will have publish and write permissions. |
npm_owner_remove | destructive | Remove a user from a package |
npm_package | read | Get package metadata — description, dist-tags, latest version, maintainers, license, repository, keywords. Does not include per-version details (use npm_version for that). |
npm_package_access | write | Get package access settings — visibility (public/private), whether publish requires 2FA, and whether automation tokens can bypass 2FA. |
npm_profile | read | Get the authenticated user |
npm_provenance | read | Retrieve Sigstore attestations for a specific package version. Shows SLSA provenance (which CI built it, from which repo/commit) |
npm_publish_preflight | write | Comprehensive pre-publish validation — run before publishing ANY npm package. |
npm_readme | read | Get the README content of a package. |
npm_recent_changes | read | Get the most recent package publishes/updates from the npm registry via the CouchDB changes feed. Note: uses replicate.npmjs.com which may have intermittent availability. |
npm_registry_stats | read | Get total npm-wide download counts for a period. Shows overall registry activity. |
npm_release_frequency | write | Analyze the release cadence of a package — publish timeline, gaps, and whether the project is actively maintained. |
npm_search | read | Search the npm registry for packages. Supports text search and qualifiers like |
npm_signing_keys | read | Get the npm registry |
npm_team_create | write | Create a team inside an organization. Team is passed as |
npm_team_delete | destructive | Delete a team. Team is passed as |
npm_team_grant | write | Grant a team read-only or read-write permission on a package. Scope and team are passed as |
npm_team_member_add | write | Add a user to a team. Team is |
npm_team_member_remove | destructive | Remove a user from a team. Team is |
npm_team_members | read | List all members of a team with their roles (e.g. |
npm_team_packages | read | List all packages a specific team has access to and their permission levels (read-only or read-write). Useful for auditing team permissions. |
npm_team_revoke | destructive | Revoke a team |
npm_token_revoke | destructive | Revoke an access token by its key (UUID from npm_tokens). Requires confirm: true. |
npm_tokens | read | List all access tokens for the authenticated npm user. Shows token type, creation date, CIDR restrictions, and read-only status. |
npm_trusted_publishers | read | List trusted publishing configurations for a package. Shows OIDC trust relationships with CI/CD providers |
npm_types | read | Check TypeScript type support for a package — whether it ships built-in types (types/typings field) or has a DefinitelyTyped companion (@types/* package). |
npm_undeprecate | destructive | Clear the deprecation message from a package or specific versions. Equivalent to |
npm_unpublish_package | destructive | Unpublish an ENTIRE package (all versions). DELETE /{pkg}/-rev/{rev}. |
npm_unpublish_version | read | Unpublish a specific version of a package. IRREVERSIBLE: once unpublished, the version |
npm_user_packages | read | List all packages published by a specific npm user. Shows package names and the user |
npm_verify_token | read | Verify the NPM_TOKEN and surface its capabilities — username, 2FA status, and whether |
npm_version | read | Get detailed metadata for a specific version — dependencies, dist info, file count, size, deprecation status. |
npm_version_downloads | read | Get download counts broken down by version for the last week. Shows version adoption. |
npm_versions | write | List published versions of a package with their publish dates, ordered newest first. Returns up to |
npm_whoami | read | Check the currently authenticated npm user. Verifies the NPM_TOKEN is valid and returns the associated username. Essential for debugging auth issues before publishing. |
Trust audit
CAUTIONgrade B · trust 85/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (2 observation(s))
- Network
- declared (8 observation(s))
- Shell
- declared (3 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (11)
const SSH = 'ssh -i ~/.ssh/gh_woods -o IdentitiesOnly=yes';
npm_dist_tag_remove, npm_hook_remove, npm_org_member_remove, npm_owner_remove, npm_team_delete, npm_team_member_remove, npm_team_revoke, npm_token_revoke, npm_undeprecate, npm_unpublish_package
return new Function(`${pieces}\nreturn runtimePlan;`)() as RuntimePlan;return new Function(`${pieces}\nreturn { pickNewest, floor: OAM_MIN };`)() as {const pipesStdio = new Function(
const childEnv = new Function(
const sandboxFlags = new Function(
for (const p of ["last-week/../../-/v1/search", "../../etc/passwd", "last-week/foo"]) {@biomejs/biome, @modelcontextprotocol/sdk, @types/node, esbuild, postject, typescript, zod
- **The bundled MCP SDK moves from 1.30.0 to 1.32.1** (GHSA-6qxp-vccf-f47h, high: the SDK's OAuth client could send credentials to an authorization server chosen by the MCP server; this server does no
- **Every release is published to the Official MCP Registry.** A new `server.json` names the server `io.github.YawLabs/npmjs-mcp` with the npm package as its one stdio-transport package, `package.json
Gates applied: no_behavioural_pass.
87c1574a637efull audit observations/trust-audit/mcp-server/yawlabs__npmjs-mcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 87c1574a637e | CAUTION | B | 85 | first audit |
Questions
What is the npmjs-mcp MCP server?
npm registry MCP server — package intelligence, security audits, and dependency analysis for AI assistants
What tools does npmjs-mcp expose?
66 in total: 39 read-only, 17 that write, and 10 that can delete or overwrite (npm_dist_tag_remove, npm_hook_remove, npm_org_member_remove, npm_owner_remove, npm_team_delete). Every one is listed on this page with its risk.
Is npmjs-mcp safe to connect to an agent?
With care. The audit graded it B (85/100) and found 11 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 10 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does npmjs-mcp need?
It reads GH_TOKEN, GITHUB_TOKEN, NPM_TOKEN and SSH_KEYGEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does npmjs-mcp run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as @yawlabs/npmjs-mcp at 0.17.0.
How current is this page?
The grade is for one exact copy of the source (87c1574a637e), read on 2026-10-11. The repository is watched and re-audited when it changes.