Node-RED MCP 服务器
](https://badge.fury.io/js/node-red-contrib-mcp-tools) 
通过模型上下文协议(MCP)将Node-RED连接到大型语言模型(LLMs),以实现智能AI工作流。

🚀 准备就绪的铁路模板(或:即开即用的铁路部署模板) - 配置了MCP(模型上下文协议)的Node-RED,用于与大型语言模型(LLM)集成
📋 项目描述

这个项目包含一个Docker结构,其中有两个主要的容器,分别集成了Node-RED和mcp-host,用于运行MCP服务器(模型上下文协议)。其目标是使Node-RED流程能够通过MCP服务器与像OpenAI的GPT-4这样的大型语言模型(LLM)进行交互。
这个初始版本仅支持OpenAI的GPT-4模型。
您可以运行本地和远程的MCP服务器。 远程MCP(主控制器面板)示例:
npx -y @smithery/cli@latest run @nickclyde/duckduckgo-mcp-server --key your-smithery-key🔗 在smithery.ai上查找其他MCP(可能是指“材料专家”或“制造合作方”等,具体含义需根据上下文确定)
🚀 即开即用模板
铁路行业Node-RED MCP模板
为了便于部署并快速上手,我们为Railway创建了一个优化模板:
模板特性:
- ✅ 一键部署 在铁路(上)
- ✅ Node-RED 4.0.0 预配置的
- ✅ MCP 工具节点 已经安装
- ✅ 自动配置 通过环境变量
- ✅ 自动管理员密码生成
使用方法:
- 访问 模板 README
- 点击“在铁路部署”按钮
- 配置你的环境变量
- 从铁路日志中获取管理员密码
- 准备好了!Node-RED 在云端运行
🔐 获取铁路系统管理员密码的方法: 部署后,管理员密码会自动生成。要查找密码:
- 访问铁路控制面板
- 点击您的项目
- 转到“部署”选项卡
- 点击最新的部署
- 转到“日志”选项卡
- 查找“NODE-RED 管理员凭据”模块
______________________________________________________________________
▶️ 如何跑步
使用 Docker Compose 运行项目的步骤:
- 克隆此仓库:
git clone https://github.com/moises-paschoalick/node-red-mcp-server
cd node-red-mcp-server
docker compose up -d- 在以下地址打开项目:http://localhost:1899/
- 安装mcp-tools节点
为了实现这一点,我们需要拥有mcp-tools节点,并在Node-RED用户界面中安装node-red-contrib-mcp-tools。
选项 -> 管理调色板 安装 node-red-contrib-mcp-tools \[安装镜像\]
\[指向node-red-contrib-mcp-tools的链接\] npm 项目链接
- 使用您的OpenAI API密钥配置组件
\[组件图像\]
🔐 环境变量与安全
OpenAI API密钥配置
这个(或:该) mcp-tools 组件支持多种方式来配置您的OpenAI API密钥:
选项1:直接输入(不建议用于生产)
- 在组件配置中直接输入您的API密钥
- 为了安全起见,该字段将以密码形式显示
- ⚠️ 警告此方法会在Node-RED流程中暴露您的API密钥
选项2:环境变量(推荐)
- 使用以下格式:
{{OPENAI_API_KEY}} - 该组件将自动检测并使用系统环境变量
- ✅ 安全的API密钥不会存储在流程中
选项3:Node-RED凭据
- 将您的API密钥存储在Node-RED的凭证管理系统中
- 生产环境中最安全的选择
MCP 服务器环境变量
该组件可以通过多种方式将环境变量传递给您的MCP服务器:
选项1:JSON配置
{
"id_field": "your_spreedsheed_id",
"GOOGLE_CLIENT_ID": "your-google-client-id",
"GOOGLE_CLIENT_SECRET": "your-google-client-secret",
"GOOGLE_REFRESH_TOKEN": "your-google-refresh-token"
}选项2:环境变量引用
- 使用以下格式:
{{ENV_MCP_VARIABLES}} - 该组件将从系统环境变量中加载
- ✅ 安全凭据不会存储在流程中
选项3:外部文件
- 指定一个
.env组件中的文件路径 - 该组件将自动读取并解析文件
提示中的动态变量替换
该组件会自动在您的提示中使用(指定的)方法替换环境变量 {{VAR_NAME}} 格式:
示例用法:
原始提示:
update field {{id_field}} range Sheet1!A1 value Updated Line 2替换后:
update field 1t6w************************************yWGU range Sheet1!A1 value Updated Line 2支持的变量来源:
- MCP服务器环境变量 (最高优先级)
- 系统环境变量 (备用方案)
- 组件配置 (最低优先级)
安全最佳实践
- 永远不要提交真实凭证 进行版本控制
- 使用环境变量 用于生产环境部署
- 存储敏感数据 在
.env文件(未提交) - 使用Node-RED凭据 在可能的情况下,为API密钥(进行操作)
- 定期轮换 您的API密钥和令牌
示例环境配置
创建一个 .env 在项目根目录中的文件:
# OpenAI API Key
OPENAI_API_KEY=sk-your-actual-api-key-here
# MCP Server Environment Variables (JSON string)
ENV_MCP_VARIABLES={"id_field":"your-spreadsheet-id","GOOGLE_CLIENT_ID":"your-google-client-id","GOOGLE_CLIENT_SECRET":"your-google-client-secret","GOOGLE_REFRESH_TOKEN":"your-google-refresh-token"}
# Alternative: Individual variables
# id_field=your-spreadsheet-id
# GOOGLE_CLIENT_ID=your-google-client-id
# GOOGLE_CLIENT_SECRET=your-google-client-secret
# GOOGLE_REFRESH_TOKEN=your-google-refresh-token⚠️ 重要添加 .env 致你的 .gitignore 文件以防止意外提交。
实际案例:Google Sheets 集成
以下是一个完整的示例,展示了如何使用环境变量与(某个程序或功能)一起 mcp-tools 用于Google Sheets操作的组件:
1. 环境配置
# .env file
OPENAI_API_KEY=sk-your-openai-key
ENV_MCP_VARIABLES={"id_field":"your_spreedsheed_id","GOOGLE_CLIENT_ID":"your-client-id","GOOGLE_CLIENT_SECRET":"your-client-secret","GOOGLE_REFRESH_TOKEN":"your-refresh-token"}2. 组件配置
- MCP 主机 URL:
http://mcp-host:3000 - OpenAI API密钥:
{{OPENAI_API_KEY}} - MCP 服务器命令:
node - MCP服务器参数:
../mcp-server-demo/gdrive-mcp/build/index.js - MCP 服务器环境:
{{ENV_MCP_VARIABLES}}
3. 消息有效载荷
{
"payload": "update field {{id_field}} range Sheet1!A1 value Updated Line 2"
}4. 结果
该组件将自动:
- 从(指定位置)加载环境变量
{{ENV_MCP_VARIABLES}} - 替换
{{id_field}}附上实际的电子表格ID - 将处理后的提示发送到MCP服务器
- 执行Google Sheets操作
🧱 容器结构
mcp-host\
在Node.js中构建的组件,作为Node-RED(通过 mcp-tools 组件)和MCP服务器。\ 它负责在……之间进行沟通协调 mcp-client (大型语言模型) 和 mcp-server (了解工具的实现方式)。
mcp-server-demo(Node-RED) 可以翻译为“(节点-RED)”,不过通常我们直接使用“Node-RED”这一名称,因为它是一个广为人知的开源物联网编程工具,无需额外翻译。如果非要翻译的话,“Node-RED”可以理解为“节点-RED”或“节点-红色”,但“节点-RED”更为常见,因为“RED”在这里是一个专有名词,代表特定的工具或平台\
包含已配置好与(某系统/设备)通信的Node-RED环境 mcp-host 使用 mcp-tools 组件。这是一个用NodeJS构建的MCP服务器示例,用于测试和验证环境是否正常工作。
重要在……里 mcp-tools(可译为“MCP工具”或根据具体上下文调整为更贴切的名称,如“多通道处理工具”等) 在Node-RED中,你需要将MCP主机URL配置为: `` http://mcp-host:3000 ``______________________________________________________________________
📦 组件
mcp-host
- 通过Node-RED接收来电 mcp-tools - 将请求重定向到 mcp-client - 将结果转发给 mcp-server (本地或远程)
mcp-client
- 处理与语言模型(LLM)的通信 - 目前使用的是OpenAI的 gpt-4o 模型 - 未来可修改以使用其他模型(例如,Claude、Gemini、LLaMA)
mcp-server-demo
- 本地运行的MCP服务器功能示例 - 包含可由模型调用的“工具”,例如: - 你好,工具(Hello Tool)回复“Hello World” - 当地时间返回本地服务器时间 - 天气工具查询圣保罗当前天气 wttr.in
______________________________________________________________________
先决条件
- Docker(注:Docker是一个开源的应用容器引擎,用于开发、交付和运行应用程序。在此上下文中,直接翻译为“Docker”即可,无需额外解释,因为这是一个专有名词。)
- Docker Compose
用于验证mcp-host完整性的端点
http://localhost:3000/health 翻译为中文是:“http://本地主机:3000/健康(或健康检查)”。不过,通常我们不会直接翻译URL中的路径部分,而是理解为访问本地服务器3000端口上的一个名为“health”的页面或API,用于健康检查或状态监控。所以,更自然的表达可能是:“访问本地主机3000端口上的健康检查页面”
建筑学
组件
1. MCP 主机 (网络服务器)
- 地点:
/mcp-host/ - 功能: 使用Express.js构建的协调通信服务器
- 端口: 3000(可配置)
- 终点(或:试验终点):
- POST /execute - 执行提示 - GET /health - 服务器状态 - GET /tools - 列出可用工具 - POST /disconnect - 断开会话
2. mcp-client 翻译为中文是“MCP客户端” (MCP 客户端)
- 地点:
/mcp-client/ - 功能: 管理与MCP服务器和OpenAI连接的类
- 特点:
- 自动连接/断开 - 会话管理 - MCP工具转换为OpenAI格式 - 使用工具调用进行即时执行
3. mcp-server 翻译成中文是“MCP服务器” (MCP 服务器)
- 地点:
/mcp-server/ - 功能: 使用工具和资源实现MCP服务器
- 包含的工具:
- 你好工具(示例) - 用户工具(外部API) - Textract 工具(图像分析)
4. Node-RED-MCP组件 (节点-RED组件)
- 位置:
/node-red-mcp-component/ - 功能: 可定制的Node-RED节点
- 配置:
- MCP 主机 URL - OpenAI API密钥(支持 {{ENV_VAR}} (格式) - MCP服务器命令 - MCP服务器参数 - MCP服务器环境变量(支持 {{ENV_VAR}} 格式) - 外部环境文件路径 - 会话ID - 超时
- 特点:
- 动态环境变量替换 在提示中 - 智能输入字段类型 (密钥的密码,环境变量的文本) - 多个凭证来源 (直接,环境变量,凭据) - 自动JSON解析 用于环境变量 - 会话管理 为了连接复用
API终端点
POST /执行
通过MCP代理执行提示。
请求体:
{
"prompt": "show hello world message",
"apiKey": "sk-your-key-here",
"serverCommand": "node",
"serverArgs": ["../mcp-server/build/index.js"],
"sessionId": "default"
}回答:
{
"success": true,
"response": "Hello, World! This is a tool response!",
"toolsUsed": [...],
"messages": [...]
}GET /health 翻译为中文是:“获取/健康(检查)”。在Web开发中,\GET /health\ 通常是一个用于检查服务器或应用健康状态的端点(API路径)
检查服务器状态。
回答:
{
"status": "ok",
"timestamp": "2025-06-11T23:32:04.612Z",
"activeClients": 0
}GET /tools 翻译为中文是:“获取(请求)/tools(路径)”
列出可用的工具。
查询参数:
apiKey- OpenAI API密钥serverCommand- MCP服务器命令serverArgs- MCP服务器参数
安装与配置(不使用Docker)
1. 准备组件
# Install mcp-server dependencies
cd mcp-server/v1
npm install
npm run build
cd mcp-server/v1/gdrive-mcp
npm install
npm run build
# Install mcp-client dependencies
cd ../mcp-client
npm install
npm run build
# Install mcp-host dependencies
cd ../mcp-host
npm install2. 启动MCP主机
cd mcp-host
npm start服务器将在3000端口上运行。
🤝 贡献/参与
- 叉子 这个项目
- 创建一个分支 为您的特色(或功能)(
git checkout -b feature/AmazingFeature) - 提交(或“承诺”) 你的更改(
git commit -m 'Add some AmazingFeature') - 推 到分店(
git push origin feature/AmazingFeature) - 提交一个拉取请求(或拉取合并请求)
📄 许可证
这个项目采用MIT许可证授权 - 请参阅 许可证 文件中有详细信息。
🆘 支持
帮助渠道
- 🐞 问题:
- 💬 讨论:
有用资源
🙏 致谢
- - 可视化编程平台
- 铁路 - 部署平台
- OpenAI(开放人工智能研究所) - 语言模型
- MCP社区 - MCP协议
______________________________________________________________________
⭐ 如果这个模板对你有帮助,请考虑给这个仓库点个星标!
