项目简介

Node-RED MCP 服务器是一个强大的后端服务,它使得大型语言模型(LLM)能够与Node-RED实例进行深度交互。它充当一个桥梁,允许LLM客户端通过标准化的Model Context Protocol (MCP) 访问Node-RED的流程 (Flows)节点 (Nodes)运行时信息,并且能够执行操作(如创建、更新、启用或禁用流程,安装模块等)。服务器支持多种通信方式,包括基于标准输入输出 (Stdio) 的命令行接口、HTTP API 和服务器发送事件 (SSE),提供实时监控能力。

主要功能点

  • Node-RED 管理: 允许LLM客户端列出、获取、创建、更新、启用或禁用Node-RED中的流程。
  • 模块管理: 支持LLM客户端搜索、安装和查看已安装的Node-RED调色板模块。
  • 实时监控: 通过服务器发送事件(SSE)提供Node-RED的实时状态和事件更新,例如流程部署、运行时状态变化等。
  • 上下文服务: 以标准化的方式向LLM提供Node-RED的资源、可执行工具和预定义提示模板。
  • 安全与可扩展: 基于Node.js和TypeScript构建,包含认证、授权、限速、可观测性等生产级特性。

安装步骤

  1. 准备环境: 确保已安装Node.js (版本22+) 和 Yarn (版本4.x,可通过Corepack自动管理)。
  2. 克隆仓库:
    git clone https://github.com/ziv-daniel/node-red-mcp.git
    cd node-red-mcp
  3. 安装依赖:
    yarn install
  4. 构建项目:
    yarn build
  5. 配置环境变量: 复制 '.env.example' 为 '.env' 文件,并根据需要编辑,例如配置Node-RED的URL和认证信息。
    cp env.example .env
    # 根据需要编辑 .env 文件,例如:
    # NODERED_URL="http://localhost:1880"
    # NODERED_USERNAME="your_nodered_admin_username"
    # NODERED_PASSWORD="your_nodered_admin_password"
    # MCP_TRANSPORT="http" # 或 stdio, both
    # HTTP_ENABLED="true" # 启用HTTP模式
  6. 启动服务器:
    • 开发模式 (带热重载): 'yarn dev'
    • 生产模式 (Node.js 直接运行): 'node dist/index.mjs' (如果 'MCP_TRANSPORT' 为 'stdio')
    • 生产模式 (HTTP 服务器): 'yarn start' (如果 'MCP_TRANSPORT' 为 'http' 或 'both')
    • Docker Compose 部署 (推荐,包含Node-RED、PostgreSQL等):
      docker-compose up -d

服务器配置 (用于MCP客户端连接)

MCP客户端(如Claude Desktop)需要以下JSON格式的配置来连接此MCP服务器。

{
  "mcpServers": {
    "nodered-server-id": {
      "command": "node",
      "args": ["path/to/nodered_mcp/dist/index.mjs"],
      "env": {
        "NODERED_URL": "http://localhost:1880",
        "NODERED_USERNAME": "your_nodered_admin_username",
        "NODERED_PASSWORD": "your_nodered_admin_password",
        "MCP_TRANSPORT": "stdio",
        "HTTP_ENABLED": "false"
      },
      "description": "连接到本地Node-RED实例的MCP服务器,使用标准输入输出 (Stdio) 模式进行通信。请确保您已替换 path/to/nodered_mcp 为实际路径。"
    },
    "nodered-http-server-id": {
      "command": "node",
      "args": ["path/to/nodered_mcp/dist/index.mjs"],
      "env": {
        "NODERED_URL": "http://localhost:1880",
        "MCP_TRANSPORT": "http",
        "HTTP_ENABLED": "true",
        "PORT": "3000"
      },
      "description": "连接到本地Node-RED实例的MCP服务器,使用HTTP模式进行通信。请确保您已替换 path/to/nodered_mcp 为实际路径,并已通过 'yarn start' 启动HTTP服务器。"
    }
  }
}
  • 'path/to/nodered_mcp/dist/index.mjs': 请替换为您的 'node-red-mcp' 项目构建后 'dist' 目录下的 'index.mjs' 文件的实际路径。
  • 'NODERED_URL': 您的Node-RED实例的访问地址(例如 'http://localhost:1880')。
  • 'NODERED_USERNAME' / 'NODERED_PASSWORD': 如果您的Node-RED实例启用了认证,请提供管理员用户名和密码。
  • 'MCP_TRANSPORT': 指定MCP服务器的传输协议,可以是 'stdio' (标准输入输出,适用于命令行客户端) 或 'http' (HTTP API,适用于Web或桌面客户端)。
  • 'HTTP_ENABLED': 当 'MCP_TRANSPORT' 为 'stdio' 时,如果仍需启用HTTP接口,可设为 'true'。
  • 'PORT': HTTP模式下MCP服务器监听的端口。

基本使用方法 (与LLM客户端交互)

启动MCP服务器后,您的MCP客户端(例如Anthropic Claude Desktop)将能通过上述配置连接到它。 连接成功后,您可以在LLM客户端中通过自然语言请求执行以下操作:

  • 列出流程: 询问LLM "列出所有Node-RED流程。" (LLM将调用 'get_flows' 工具)
  • 获取流程详情: 询问LLM "获取ID为 'abc123def' 的Node-RED流程的详细信息。" (LLM将调用 'get_flow' 工具)
  • 创建流程: 告诉LLM "创建一个名为 '我的新流程' 的Node-RED流程,包含一个注入节点和一个调试节点。" (LLM将调用 'create_flow' 工具,并可能要求您提供流程JSON结构)
  • 安装模块: 询问LLM "安装 Node-RED MQTT 模块。" (LLM将调用 'install_module' 工具)
  • 查看系统状态: 询问LLM "告诉我Node-RED服务器的运行时信息。" (LLM将读取 'system://runtime' 资源)

信息

分类

AI与计算