Node Runner MCP Server

项目简介

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 文件获取更详细的使用说明和工具参数信息。

服务器信息