Bridges your package.json scripts directly to Claude, letting it run your build, test, and deployment commands without leaving the conversation. Auto-detects npm, pnpm, yarn, or bun in your project and converts each script into an MCP tool the AI can call. You can whitelist specific scripts to avoid destructive operations, and define input schemas to pass typed arguments as CLI flags. Works out of the box with npx, no global install needed. Especially handy when you want Claude to iterate on code, run tests, check lint errors, or kick off builds as part of the development loop instead of constantly switching between chat and terminal.
Give your AI Agent the power to build, test, and deploy your project using your existing package.json scripts.
npm-run-mcp-server is a Model Context Protocol (MCP) server that automatically bridges your project's npm scripts to your AI assistant.
package.json (no hardcoded paths).Connect your agent to your scripts in seconds. No global installation required—just let npx handle it.
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"npm-scripts": {
"command": "npx",
"args": ["-y", "npm-run-mcp-server"]
}
}
}
commandnpm-scriptsnpx-y npm-run-mcp-serverAdd this to your workspace .vscode/settings.json:
{
"github.copilot.chat.mcpServers": {
"npm-scripts": {
"command": "npx",
"args": ["-y", "npm-run-mcp-server"]
}
}
}
While npm-run-mcp-server works instantly, you might not want your AI to have access to every script (like eject or publish). You can control this by creating an npm-run-mcp.config.json file in your project root.
Create npm-run-mcp.config.json next to your package.json:
{
"include": ["test", "lint", "build", "start"],
"scripts": {
"test": {
"description": "Run the test suite. Use --watch for interactive mode.",
"inputSchema": {
"properties": {
"watch": { "type": "boolean", "description": "Watch files for changes" }
}
}
}
}
}
| Field | Type | Description |
|---|---|---|
include | string[] | Whitelist of script names to expose. If omitted, all scripts are exposed. |
exclude | string[] | Blacklist of script names to hide. |
scripts | object | Detailed configuration for specific scripts. |
Inside the scripts object, you can map a script name to:
toolName: Override the tool name seen by the AI (e.g., rename test:unit to run_unit_tests).description: Provide a custom description to help the AI understand when to use this script.inputSchema: Define strictly typed arguments that the AI can pass (mapped to CLI flags).package.json in your current workspace. It supports standard formatting as well as npm, pnpm, yarn, and bun conventions.test:unit become tools like test_unit.vitest run) so the AI knows what it's running.You can run the server manually for debugging or if you need to pass specific flags.
# Run directly
npx npm-run-mcp-server --list-scripts
# Run in a specific directory
npx npm-run-mcp-server --cwd /path/to/project
# Force a specific package manager
npx npm-run-mcp-server --pm pnpm
--cwd <path>: Manually set the working directory.--pm <npm|pnpm|yarn|bun>: Force a specific package manager.--config <path>: Path to a specific JSON config file.--verbose: Print debug logs to stderr.Contributions are welcome! Please feel free to submit a Pull Request.
git checkout -b feature/amazing-feature).git commit -m 'Add some amazing feature').git push origin feature/amazing-feature).MIT © Felix Stubner
com.mcparmory/google-sheets
domdomegg/google-sheets-mcp
henilcalagiya/google-sheets-mcp
cct15/war-dashboard-data
moooonad/mcp-google-sheets-full
io.github.br0ski777/csv-to-json