node-red-mcp
A Model Context Protocol server for Node-RED integration, enabling AI agents to manage flows, install modules, and monitor Node-RED instances via natural language.
README
🚀 MCP Node-RED Server
A modern, production-ready Model Context Protocol (MCP) server for Node-RED integration, built with best practices.
🌟 Features
🚀 Architecture
- Node.js 22 LTS with latest JavaScript features
- TypeScript 5.7+ with strict type checking
- ESM-first with dual ESM/CJS output using
tsup - Yarn 4 with zero-installs and modern package management
🔄 Node-RED Integration
- Node-RED v4 support with latest features
- Real-time flow monitoring via SSE
- Template flows for common MCP patterns
- Admin API integration for flow management
- WebSocket support for live updates
🛡️ Reliability & Resilience (2025 Updates)
- Circuit Breaker Pattern for fault tolerance
- Exponential Backoff Retry with smart failure handling
- Request Timeout Management with proper cleanup
- Server Discovery via
.well-known/mcp.json(November 2025 spec) - MCP SDK 1.22.0 with latest protocol enhancements
- Comprehensive Error Handling with 19 test cases
📊 Observability
- Structured Logging with Pino
- Circuit Breaker Metrics and health monitoring
- Request Correlation IDs for debugging
- Performance Metrics collection
📋 Table of Contents
⚡ Quick Start
Prerequisites
- Node.js 22+ (LTS recommended)
- Yarn 4.x (automatically managed via Corepack)
- Claude Desktop or other MCP client (for stdio mode)
- Docker & Docker Compose (optional, for containerized setup)
🚀 Option 1: Native Installation (For Claude Desktop)
# Clone the repository
git clone https://github.com/your-org/nodered-mcp.git
cd nodered-mcp
# Install dependencies (Yarn 4 will be automatically used)
yarn install
# Build the project (no .env file needed for stdio mode)
yarn build
# Test the server (optional)
echo '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}},"id":1}' | node dist/index.mjs
# Configure in Claude Desktop (see Usage section)
🐳 Option 2: Docker Compose (For HTTP Mode Development)
# Clone and start the full stack
git clone https://github.com/your-org/nodered-mcp.git
cd nodered-mcp
# Start all services (includes Node-RED, PostgreSQL, Redis, monitoring)
docker-compose up -d
# View logs
docker-compose logs -f mcp-server
Access the services:
- MCP Server: http://localhost:3000
- Node-RED: http://localhost:1880
- Grafana: http://localhost:3001 (admin/admin)
- Jaeger: http://localhost:16686
🔧 Installation
System Requirements
- Node.js: 22.0.0 or higher
- Memory: 512MB minimum, 2GB recommended
- Storage: 1GB available space
Local Development Setup
# Enable Corepack (if not already enabled)
corepack enable
# Verify versions
node --version # Should be 22.x.x
yarn --version # Should be 4.x.x
# Install dependencies
yarn install
# Set up environment
cp env.example .env
# Edit .env file with your configuration
# Run in development mode with hot reload
yarn dev
🎯 Usage
Claude Desktop Integration (Recommended)
Add to your Claude Desktop configuration
(~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"nodered": {
"command": "node",
"args": ["path/to/nodered_mcp/dist/index.mjs"],
"env": {
"NODERED_URL": "https://your-nodered-instance.com",
"NODERED_USERNAME": "your-username",
"NODERED_PASSWORD": "your-secure-password"
}
}
}
}
Available MCP Tools
| Tool | Description | Arguments |
|---|---|---|
get_flows |
Get Node-RED flows (summary/full) | includeDetails?: boolean |
get_flow |
Get specific flow details | flowId: string |
create_flow |
Create a new Node-RED flow | flowData: object |
update_flow |
Update an existing flow | flowId: string, flowData: object |
enable_flow |
Enable a specific flow | flowId: string |
disable_flow |
Disable a specific flow | flowId: string |
search_modules |
Search Node-RED palette modules | query: string, category?: string |
install_module |
Install a Node-RED module | moduleName: string, version?: string |
get_installed_modules |
Get installed modules | None |
🔌 Connecting to the Server
The MCP server supports multiple transport modes and authentication methods. Choose the one that fits your setup.
Transport Modes
| Mode | Env Var | Endpoint | Use Case |
|---|---|---|---|
| Streamable HTTP | MCP_TRANSPORT=http |
POST /mcp |
Production deployments, remote agents |
| Stdio | MCP_TRANSPORT=stdio |
stdin/stdout | Claude Desktop local integration |
Authentication
The server supports two authentication methods (configured via environment variables):
- HTTP Basic Auth — Set
MCP_USERNAMEandMCP_PASSWORD. Clients send anAuthorization: Basic <base64>header. - Bearer Token (JWT) — After authenticating, clients receive a JWT for
subsequent requests. Requires
JWT_SECRETto be set.
Connecting via Streamable HTTP (Remote)
For remote MCP clients (Claude Code, custom agents, etc.), point them to the
/mcp endpoint:
# Generic connection parameters
URL: https://<your-server-host>/mcp
Transport: streamable-http
Auth header: Authorization: Basic <base64(username:password)>
Claude Code CLI example:
claude mcp add node-red \
--transport streamable-http \
--url https://<your-server-host>/mcp \
--header "Authorization: Basic <base64-credentials>"
Connecting via Stdio (Local)
For Claude Desktop or other local MCP hosts, use stdio mode:
{
"mcpServers": {
"nodered": {
"command": "node",
"args": ["path/to/nodered_mcp/dist/index.mjs"],
"env": {
"MCP_TRANSPORT": "stdio",
"NODERED_URL": "https://your-nodered-instance.com",
"NODERED_USERNAME": "your-username",
"NODERED_PASSWORD": "your-password"
}
}
}
}
Environment Variables
| Variable | Required | Description |
|---|---|---|
NODERED_URL |
Yes | URL of your Node-RED instance |
NODERED_USERNAME |
Yes | Node-RED admin credentials |
NODERED_PASSWORD |
Yes | Node-RED admin credentials |
MCP_TRANSPORT |
No | http (default) or stdio |
MCP_USERNAME |
No | MCP server auth username |
MCP_PASSWORD |
No | MCP server auth password |
JWT_SECRET |
No | Secret for JWT token signing |
HOST |
No | Bind address (default: 0.0.0.0) |
PORT |
No | Listen port (default: 3000) |
CORS_ORIGIN |
No | Allowed CORS origins |
LOG_LEVEL |
No | debug, info, warn, error |
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.