Npm

io.github.mikusnuzPublished by GitHub account mikusnuzv1.4.0Updated Oct 24, 2026

MCP server for npm package management — publish, version, search, audit, and more

VerifiedSTDIODesktop onlyDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

Local MCP server that lets an assistant publish, version, search, audit and manage npm packages and dependencies from the editor.

What you can do
  • Publish, stage, version, deprecate, unpublish and pack packages, and preview what would be published
  • Look up registry info: view, search, bugs, repo, docs and version diffs
  • Install, uninstall, update, dedupe, prune, list and explain dependencies, plus query the tree and review install scripts
  • Run security audits, generate SBOMs, check environment health and registry connectivity
  • Manage auth and metadata: whoami, tokens, access levels, owners, dist-tags, profile and config
  • Set up projects: init, edit package.json fields, clean install, run scripts, link and manage the cache
When to use it
Useful when you build a library or app in an MCP-capable editor and want the assistant to publish releases, bump versions, check outdated dependencies or run audits without switching to a terminal.
Requirements
Runs as a local process on the desktop; needs Node.js 20 or newer and an npm installation (path configurable via NPM_PATH). Authentication uses a granular npm access token in NPM_TOKEN, or existing npm login credentials in the local npmrc file. Staged publishing needs newer npm and Node.js versions.
Before you install
The token grants publishing and account rights; scope it narrowly. Tools can publish, unpublish, deprecate, change owners, access levels, dist-tags, tokens and profile settings, and install or remove packages, which runs dependency code. Some operations need a one-time password. Publishing is public by default only if you choose public access.

Installation

In SourceWeft

  1. Open Npm in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

English | 한국어 | 中文 | 日本語

npm-mcp

[npm version] [MCP Badge]

MCP server that lets AI assistants manage npm packages. Publish, version, search, audit, install, and more -- all through Claude Code or any MCP client.

The MCP server requires Node.js 20 or newer. Individual npm CLI features may require a newer Node.js/npm combination as noted below.

When to Use

TaskTool
"Publish this package to npm"publish
"Check for outdated dependencies"outdated
"Run a security audit on my packages"audit
"Search npm for authentication libraries"search
"Bump the version and publish"version then publish
"Check who owns this npm package"owner
"View download stats for my package"view

For AI agents: See llms.txt for a machine-readable summary. Copy templates/CLAUDE.md or templates/AGENTS.md into your project to teach your agent about this MCP.

Why

You're in Claude Code building a library. You finish the code, and now you need to publish it. Instead of switching to a terminal:

You: publish this package to npm with public accessClaude: [calls publish tool] Published @yourorg/[email protected] successfully

That's it. No context switching.

Setup

1. Install

bash
git clone https://github.com/mikusnuz/npm-mcp.gitcd npm-mcpnpm installnpm run build

2. Get npm token

Go to npmjs.com > Account > Access Tokens and create a granular access token with access to the packages you need. Classic and Automation tokens are no longer supported. A stage-only token uses the stage workflow below. Existing npm login credentials also work.

3. Add to Claude Code

Edit ~/.claude/settings.json:

json
{  "mcpServers": {    "npm-mcp": {      "command": "node",      "args": ["/path/to/npm-mcp/dist/index.js"],      "env": {        "NPM_TOKEN": "npm_xxxxxxxxxxxx"      }    }  }}

Or if you've already run npm login locally, skip NPM_TOKEN -- it uses your ~/.npmrc automatically.

Tools

Publishing & Versioning

ToolDescription
publishPublish a package to npm registry
stageStage, list, inspect, download, approve, or reject a pending package version
versionBump package version (patch/minor/major/pre*)
unpublishRemove a package version
deprecateDeprecate a version (or undeprecate with empty message)
packPreview what would be published

Package Info

ToolDescription
viewView package info from registry
searchSearch npm registry
bugsGet bug tracker URL for a package
repoGet repository URL for a package
docsGet documentation URL for a package
diffShow diff between package versions

Dependency Management

ToolDescription
installInstall packages
pending-scriptsList unreviewed dependency install scripts without changing policy (npm 12+)
approve-scriptsApprove named, reviewed dependencies with version pinning (npm 12+)
deny-scriptsDeny install scripts for named dependencies across versions (npm 12+)
uninstallRemove packages
updateUpdate packages to latest semver-compatible version
outdatedCheck for outdated packages
lsList installed packages
explainExplain why a package is installed
dedupeReduce duplication in dependency tree
pruneRemove extraneous packages
fundShow funding info for dependencies
queryQuery packages using CSS-like selectors

Security & Diagnostics

npm 12 blocks unapproved dependency install scripts. Call pending-scripts with an absolute project path, review the packages, then pass explicit package names to approve-scripts or deny-scripts. These commands update policy without running scripts; rerun the intended install/build separately. There is no bulk approval option. npm pins approvals when a trusted resolved version is available; check its warnings if an older lockfile forces a name-only approval. For global installs only, install.allowScripts accepts an explicit list of reviewed names. Older npm versions do not support these options; select npm 12+ using NPM_PATH. See npm script approval.

ToolDescription
auditRun security audit (with optional auto-fix)
sbomGenerate Software Bill of Materials (CycloneDX/SPDX)
doctorCheck npm environment health
pingCheck registry connectivity

Configuration & Auth

ToolDescription
whoamiCheck current authenticated user
tokenManage access tokens (list/revoke)
accessSet or view access level on packages
ownerManage package owners (ls/add/rm)
dist-tagManage distribution tags (ls/add/rm)
profileView or modify npm profile settings
configView npm configuration (read-only)

Project Setup

ToolDescription
initInitialize a new package.json
pkgManage package.json fields programmatically
ciClean install from lockfile (for CI)
run-scriptRun scripts defined in package.json
linkSymlink a local package for development
cacheManage the npm cache

Examples

Publish a scoped package:

publish({ path: "/home/user/my-lib", access: "public" })

Bump version and publish:

version({ path: "/home/user/my-lib", bump: "patch" })publish({ path: "/home/user/my-lib" })

Check what's inside before publishing:

pack({ path: "/home/user/my-lib", dryRun: true })

Search for existing packages:

search({ query: "react state management", limit: 5 })

View package details:

view({ package: "@yourorg/lib", field: "versions" })

Install packages:

install({ path: "/home/user/my-app", packages: ["express", "cors"], saveDev: false })

Check outdated dependencies:

outdated({ path: "/home/user/my-app" })

Compare versions:

diff({ specs: ["[email protected]", "[email protected]"] })

Generate SBOM:

sbom({ path: "/home/user/my-app", format: "spdx", production: true })

Query dependencies:

query({ path: "/home/user/my-app", selector: ":root > .prod" })

Auth

Staged publishing

Staged publishing requires npm CLI 11.15.0 or later and Node.js 22.14.0 or later. Check npm stage --help; NPM_PATH can select a separate npm installation. See the staged publishing prerequisites.

js
stage({ action: "publish", path: "/home/user/my-lib", access: "public" })stage({ action: "list", package: "@yourorg/lib" })stage({ action: "view", stageId: "returned-stage-id" })stage({ action: "download", stageId: "returned-stage-id", path: "/home/user/review" })stage({ action: "approve", stageId: "returned-stage-id", otp: "123456" })// Or reject the staged version:stage({ action: "reject", stageId: "returned-stage-id", otp: "123456" })

Staging does not publish the package; approval does. Approval and rejection require maintainer 2FA. dryRun applies only to stage with action: "publish". A direct publish with a stage-only token returns E_STAGE_REQUIRED. npm plans to remove direct publishing with granular tokens in January 2027. See npm staging and token requirements.

pkg accepts JSON values directly: value: "my-package", value: true, value: ["keyword"], or value: { test: "node --test" }. Strings stay strings; do not stringify arrays or objects before passing them.

MethodHow
NPM_TOKEN (recommended)Set NPM_TOKEN env var in MCP config. Get token from npmjs.com > Access Tokens
npm loginRun npm login in terminal first. Token saved in ~/.npmrc is used automatically

Pass otp when npm requires 2FA, including staged approval/rejection and package maintainer or token changes. Since August 2026, bypass-2FA tokens cannot bypass the second factor for account or governance operations. Tokens expire; renew the configured token when needed or refresh local credentials with npm login.

Environment Variables

VariableDefaultDescription
NPM_TOKEN--npm authentication token
NPM_PATHnpmPath to npm binary (if not in PATH)

License

MIT

Source: README.md at commit d061935

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

3
  1. v1.4.0LatestOct 19, 2026
  2. v1.3.0Oct 8, 2026
  3. v1.2.1Sep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts