A Model Context Protocol server that provides tools for NPM package management, including dependency searching, updates, conflict resolution, and version management to help AI assistants safely upgrade project dependencies.
A Model Context Protocol server for NPM dependency management. This server provides tools for NPM package search and tools for updating npm packages, ensuring your project's dependencies are up to date and updated to their latest compatible versions, without any conflicts or headaches.
As a baseline, for a safe upgrade of any project's package.json, your assistant can call the upgradePackagets tool with the 'peer' parameter set to true. This will likely not update all of your dependencies to the latest versions, but it will safely upgrade them to the latest compatible versions, without any errors.
If you are looking for a full upgrade of all dependencies, your assistant has many tools and parameters to safely explore. Parameter options and examples are provider below, in the "Available Tools" section. You can also find more information in the 'docs' directory.
There are also tools available to search and retrieve information from npmjs, if you are exploring options for new packages to add to your project, or if you are looking for information on a specific package.
This guide will help you set up and run the npm-helper-mcp server.
Before you begin, ensure you have the following installed:
The npm-helper-mcp server implements the Model Context Protocol, which enables it to communicate with LLM applications that support the protocol.
Configuration varies depending on the application. Generally, most mcp client applications will have a .json configuration file, or a place to enter the command to run the server. One of these 2 options should work in most cases.
The easiest way to use the server is to run it with npx, which requires no local installation. Depending on your mcp client, use one of the following 2 methods:
{ "mcpServers": { "npm-helper": { "command": "npx", "args": [ "-y", "@pinkpixel/npm-helper-mcp" ] } } }
npx -y @pinkpixel/npm-helper-mcp
If you prefer to install the server locally, you can do so with the following command:
# Install the package globally npm install -g npm-helper-mcp
Configuration:
{ "mcpServers": { "npm-helper": { "command": "npx", "args": [ "-y", "@pinkpixel/npm-helper-mcp" ] } } }
npm-helper-mcp
# Clone the repository git clone https://github.com/pinkpixel-dev/npm-helper-mcp.git cd npm-helper-mcp # Install dependencies npm install # Build the project npm run build # Optionally run/test the server npm start
Configuration:
{ "mcpServers": { "npm-helper": { "command": "node", "args": [ "/path/to/npm-helper-mcp/dist/index.js" ] } } }
node /path/to/npm-helper-mcp/dist/index.js
This server follows the Model Context Protocol, which allows it to be used by LLMs like Claude. The LLM can use the server's tools to perform various npm operations.
Scans package.json for outdated dependencies.
Parameters:
packagePath
(optional): Path to package.json file (default: ./package.json)filter
(optional): List of package names to checkreject
(optional): List of package names to excludetarget
(optional): Target version to upgrade to (latest, newest, greatest, minor, patch, semver)interactive
(optional): Enable interactive mode for choosing updatespeer
(optional): Check peer dependencies of installed packagesminimal
(optional): Do not upgrade newer versions that are already satisfied by the version rangepackageManager
(optional): Package manager to use (npm, yarn, pnpm, deno, bun, staticRegistry)Example:
{ "name": "check_updates", "arguments": { "packagePath": "./package.json", "filter": ["react", "lodash"], "peer": true, "minimal": true, "packageManager": "npm" } }
Upgrades dependencies to their latest versions.
Parameters:
packagePath
(optional): Path to package.json file (default: ./package.json)upgradeType
(optional): Target version to upgrade to (latest, newest, greatest, minor, patch, semver)interactive
(optional): Enable interactive mode for choosing updatespeer
(optional): Check peer dependencies of installed packagesminimal
(optional): Do not upgrade newer versions that are already satisfied by the version rangepackageManager
(optional): Package manager to use (npm, yarn, pnpm, deno, bun, staticRegistry)Example:
{ "name": "upgrade_packages", "arguments": { "upgradeType": "minor", "peer": true, "minimal": true, "packageManager": "yarn" } }
Checks updates for specific packages.
Parameters:
packagePath
(optional): Path to package.json file (default: ./package.json)filter
(required): List of package names to checkupgrade
(optional): Whether to upgrade the package.json file or just checkminimal
(optional): Do not upgrade newer versions that are already satisfied by the version rangepackageManager
(optional): Package manager to use (npm, yarn, pnpm, deno, bun, staticRegistry)Example:
{ "name": "filter_updates", "arguments": { "filter": ["react", "react-dom"], "upgrade": false, "minimal": true } }
Handles dependency conflicts using peer dependencies.
Parameters:
packagePath
(optional): Path to package.json file (default: ./package.json)upgrade
(optional): Whether to upgrade the package.json file or just checkminimal
(optional): Do not upgrade newer versions that are already satisfied by the version rangepackageManager
(optional): Package manager to use (npm, yarn, pnpm, deno, bun, staticRegistry)Example:
{ "name": "resolve_conflicts", "arguments": { "upgrade": true, "packageManager": "npm" } }
Configures version upgrade rules.
Parameters:
packagePath
(optional): Path to package.json file (default: ./package.json)target
(required): Target version constraint strategy (latest, newest, greatest, minor, patch, semver)removeRange
(optional): Remove version ranges from the final package versionupgrade
(optional): Whether to upgrade the package.json file or just checkminimal
(optional): Do not upgrade newer versions that are already satisfied by the version rangepackageManager
(optional): Package manager to use (npm, yarn, pnpm, deno, bun, staticRegistry)Example:
{ "name": "set_version_constraints", "arguments": { "target": "minor", "removeRange": false, "upgrade": true, "packageManager": "pnpm" } }
Iteratively installs upgrades and runs tests to identify breaking upgrades. It automatically reverts breaking upgrades and keeps working ones.
Parameters:
packagePath
(optional): Path to package.json file (default: ./package.json)doctorInstall
(optional): Custom install script to use (default: 'npm install' or 'yarn')doctorTest
(optional): Custom test script to use (default: 'npm test')packageManager
(optional): Package manager to use (npm, yarn, pnpm, deno, bun, staticRegistry)Example:
{ "name": "run_doctor", "arguments": { "packagePath": "./package.json", "doctorInstall": "npm ci", "doctorTest": "npm run test:ci", "packageManager": "npm" } }
Searches for npm packages.
Parameters:
query
(required): Search query for npm packagesmaxResults
(optional): Maximum number of results to return (default: 10)Example:
{ "name": "search_npm", "arguments": { "query": "react state management", "maxResults": 5 } }
Fetch and parse detailed content from an npm package page.
Parameters:
url
(required): URL of the npm package pageExample:
{ "name": "fetch_package_content", "arguments": { "url": "https://www.npmjs.com/package/react" } }
Gets available versions for an npm package.
Parameters:
packageName
(required): Name of the npm packageExample:
{ "name": "get_package_versions", "arguments": { "packageName": "react" } }
Gets detailed information about an npm package.
Parameters:
packageName
(required): Name of the npm packageExample:
{ "name": "get_package_details", "arguments": { "packageName": "react" } }
All tools return responses in a standard format:
{ "status": "success" | "error", "data": {}, // Tool-specific data "message": "Human-readable message" }
If you encounter any issues not covered here:
MIT
Made with ❤️ by Pink Pixel
Discover shared experiences
Shared threads will appear here, showcasing real-world applications and insights from the community. Check back soon for updates!