项目简介

Node Runner MCP Server 是一个基于 Model Context Protocol (MCP) 构建的后端服务,旨在为 LLM 客户端提供安全执行 Node.js 代码和管理 Node.js 环境的能力。它允许 LLM 通过预定义的工具运行 Node.js 脚本、执行 npm 命令、启动和停止后台 Node.js 服务器,并查看服务器日志。该服务器通过权限提示确保操作的安全性,并支持 Node.js 版本管理。

主要功能点

  • 运行 Node.js 脚本: 执行指定的 Node.js 脚本文件,并可传递参数和标准输入。
  • 执行 npm 脚本: 运行 package.json 中定义的 npm 脚本,方便进行项目构建、测试等操作。
  • 动态执行 JavaScript 代码: 直接执行 JavaScript 代码片段,支持指定安全目录。
  • 管理 Node.js 服务器: 启动、停止和列出后台运行的 Node.js 服务器进程。
  • 监控服务器日志: 实时获取和过滤后台服务器的日志,便于调试和监控。
  • Node.js 版本管理: 支持使用 NVM 选择和切换 Node.js 版本。
  • 权限控制: 所有执行操作前均需用户授权,确保安全性(可配置禁用)。

安装步骤

  1. 克隆仓库
    git clone https://github.com/platformatic/mcp-node.git
    cd mcp-node
  2. 安装依赖
    npm install
  3. 构建项目
    npm run build

服务器配置

要将 Node Runner MCP Server 与 MCP 客户端(例如 Claude for Desktop)配合使用,您需要配置客户端以连接到此服务器。以下是一个典型的 JSON 配置示例,您需要将其添加到 MCP 客户端的配置文件中。

{
  "mcpServers": {
    "node-runner": {
      "command": "npx",
      "args": ["-y", "mcp-node@latest"],
      "env": {
        "DISABLE_NOTIFICATIONS": "true",  // 可选: 禁用权限提示,用于自动化场景,生产环境不建议禁用
        "EVAL_DIRECTORIES": "/path/to/safe/dir1:/path/to/safe/dir2"  // 可选:  允许 run-node-eval 工具执行代码的额外安全目录,多个目录用冒号分隔
      }
    }
  }
}

配置参数说明:

  • server name: 'node-runner' - 服务器的名称,客户端用此名称引用服务器。
  • command: 'npx' - 用于启动服务器的命令,这里使用 'npx' 运行最新的 'mcp-node' 包。
  • args: '["-y", "mcp-node@latest"]' - 传递给 'npx' 命令的参数,'-y' 表示自动确认安装,'mcp-node@latest' 指定要运行的 npm 包。
  • env: 环境变量配置 (可选):
    • 'DISABLE_NOTIFICATIONS': 设置为 '"true"' 可以禁用操作前的权限提示。
    • 'EVAL_DIRECTORIES': 指定允许 'run-node-eval' 工具执行 JavaScript 代码的安全目录列表。 默认只允许系统临时目录。

注意:

  • 确保您的系统已安装 Node.js (>= 22.0.0) 和 npm。
  • 如果您希望使用 NVM 进行 Node.js 版本管理,请确保已安装并配置 NVM。
  • 生产环境中,强烈建议不要禁用权限提示 'DISABLE_NOTIFICATIONS: "true"',以确保安全性。

基本使用方法

配置完成后,您可以通过 MCP 客户端向 Node Runner MCP Server 发送指令,调用其提供的工具和资源。

常用工具示例:

  • 启动 Node.js 服务器: 使用 'start-node-server' 工具启动后台服务器。

    start-node-server({
      scriptPath: "/path/to/your/server.js",
      cwd: "/path/to/your/project",
      serverName: "My API Server",
      args: ["--port", "3000"]
    });
  • 列出运行中的服务器: 使用 'list-servers' 工具查看当前运行的服务器列表。

    list-servers({});
  • 停止服务器: 使用 'stop-server' 工具停止指定 ID 的服务器。

    stop-server({
      serverId: "server-1234567890-1234"
    });
  • 获取服务器日志: 使用 'get-server-logs' 工具获取服务器日志。

    get-server-logs({
      serverId: "server-1234567890-1234",
      lines: 100,
      filter: "error"
    });
  • 运行 Node.js 脚本: 使用 'run-node-script' 工具执行脚本。

    run-node-script({
      scriptPath: "/path/to/your/script.js",
      args: ["arg1", "arg2"]
    });
  • 运行 npm 脚本: 使用 'run-npm-script' 工具执行 npm 脚本。

    run-npm-script({
      packageDir: "/path/to/your/project",
      scriptName: "start"
    });
  • 动态执行 JavaScript 代码: 使用 'run-node-eval' 工具执行代码。

    run-node-eval({
      code: "console.log('Hello from eval!');"
    });
  • 列出 Node.js 版本: 使用 'list-node-versions' 工具查看可用的 Node.js 版本。

    list-node-versions({});
  • 选择 Node.js 版本: 使用 'select-node-version' 工具选择特定版本。

    select-node-version({
      version: "v18.20.5"
    });
  • 获取当前 Node.js 版本信息: 使用 'get-node-version' 工具查看当前使用的 Node.js 版本信息。

    get-node-version({});

请参考仓库的 README.md 文件获取更详细的使用说明和工具参数信息。

信息

分类

开发者工具