项目简介

NPM Command Runner MCP Server 是一个基于 Model Context Protocol (MCP) 构建的后端服务,旨在为大型语言模型 (LLM) 客户端提供执行 npm 和 npx 命令的能力。该服务器允许 LLM 安全地调用 npm 和 npx 工具,从而扩展 LLM 在软件项目管理、包安装和脚本执行等方面的能力。

主要功能点

  • 执行 npm 命令: 允许 LLM 客户端在指定的目录下执行各种 npm 命令,例如 'install', 'uninstall', 'publish' 等。
  • 执行 npx 命令: 允许 LLM 客户端执行 npx 命令,从而可以使用项目本地或全局安装的 npm 包的可执行文件。
  • 安全控制: 通过 MCP 协议进行权限控制和安全管理,确保 LLM 只能通过预定义的工具执行命令,避免潜在的安全风险。
  • 命令结果返回: 服务器会将 npm 和 npx 命令的执行结果(包括标准输出 stdout、标准错误 stderr 和返回码 code)以结构化的 JSON 格式返回给 LLM 客户端,方便 LLM 理解和处理命令执行结果。

安装步骤

  1. 安装 Node.js 和 npm: 确保您的系统已安装 Node.js 和 npm 包管理器。您可以从 Node.js 官网 下载并安装。
  2. 克隆仓库: 使用 git 命令克隆 NPM Command Runner 仓库到本地:
    git clone https://github.com/seido/mcp_npm
  3. 进入项目目录: 使用 'cd' 命令进入克隆下来的项目目录 'mcp_npm'。
    cd mcp_npm
  4. 安装依赖: 运行 'npm install' 命令安装项目所需的依赖包。
    npm install
  5. 构建服务器: 运行 'npm run build' 命令编译 TypeScript 代码并生成 JavaScript 服务器文件。
    npm run build
    构建成功后,将在 'build' 目录下生成 'index.js' 文件,这就是服务器的入口文件。

服务器配置

要将 NPM Command Runner MCP Server 集成到 MCP 客户端(例如 Claude Desktop),您需要在客户端的配置文件中添加服务器配置信息。以下是一个配置示例(JSON 格式):

{
  "mcpServers": {
    "npm-command-runner": {  // 服务器名称,可以自定义,用于在客户端中标识该服务器
      "command": "/path/to/mcp_npm/build/index.js" // 服务器启动命令,指向编译后的 index.js 文件。请将 "/path/to/mcp_npm" 替换为您的仓库实际路径
    }
  }
}

注意:

  • 请将 '/path/to/mcp_npm/build/index.js' 替换为 'index.js' 文件在您本地文件系统中的绝对路径
  • 对于 Claude Desktop 客户端,配置文件 'claude_desktop_config.json' 的位置通常为:
    • macOS: '~/Library/Application Support/Claude/claude_desktop_config.json'
    • Windows: '%APPDATA%/Claude/claude_desktop_config.json'

基本使用方法

配置完成后,MCP 客户端将能够连接到 NPM Command Runner MCP Server。LLM 可以通过调用以下工具来执行 npm 和 npx 命令:

  • 'execute_npm' 工具: 用于执行 npm 命令。需要提供以下参数:
    • 'cwd': 命令执行的工作目录(字符串类型)。
    • 'args': npm 命令的参数列表,例如 '["install", "lodash"]' (字符串数组类型)。
  • 'execute_npx' 工具: 用于执行 npx 命令。参数与 'execute_npm' 工具相同:
    • 'cwd': 命令执行的工作目录(字符串类型)。
    • 'args': npx 命令的参数列表,例如 '["create-react-app", "my-app"]' (字符串数组类型)。

LLM 客户端需要构造符合 MCP 协议的 'CallToolRequest' 请求,指定要调用的工具名称 ('execute_npm' 或 'execute_npx') 和相应的参数。服务器执行命令后,会将命令的输出和返回码封装在 'CallToolResponse' 中返回给客户端。

例如,LLM 可以指示服务器在当前项目目录下执行 'npm install' 命令来安装项目依赖。

信息

分类

开发者工具