Woow n8n MCP Server
Woow n8n MCP Server is a production-ready admin bundle that lets you manage an n8n instance through a web GUI, an MCP reverse proxy, and 24 MCP tools for AI assistants.
AI-assisted n8n management: Create, read, update, delete, validate, test, and list workflows; manage executions, credentials, data tables, workflow versions, and instance health.
Workflow generation & auditing: Generate workflows from natural language and run comprehensive instance audits.
Node exploration: Search n8n nodes, get detailed node info, and retrieve real-world template examples.
Validation: Validate individual node configurations and full workflows (structure, connections, expressions) before deployment.
Template access: Search and retrieve n8n community workflow templates, including pattern summaries and metadata-based filtering.
Central web dashboard: Monitor n8n connection status, MCP server process health, proxy status, workflow counts, and overall health.
Connection configuration: Easily set n8n API URL/key, session limits, and test connectivity from the GUI.
Tool manager: Visually enable/disable individual MCP tools and per-tool operations, with dangerous-tool indicators.
Token manager: Generate, rotate, set, and track MCP proxy authentication tokens with masked display and history.
Log viewer: Stream MCP server logs in real time, with search and auto-scroll.
Settings & process control: Edit full config.json, adjust sections, and start/stop/restart the MCP server subprocess.
Security: JWT-protected admin GUI plus a token-authenticated reverse proxy so AI assistants can safely reach the MCP server.
Manages and interacts with an n8n instance, providing tools for workflow CRUD, execution management, credential management, template deployment, and instance auditing.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Woow n8n MCP ServerCheck the health of my n8n MCP server."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Overview
Woow n8n MCP Server is a complete, production-ready admin bundle for managing the n8n-mcp server -- the Model Context Protocol (MCP) bridge that lets AI assistants (Claude, ChatGPT, Gemini) interact with your n8n workflow automation instance.
This project packages everything you need into a single container:
A React-based admin dashboard for visual configuration
A FastAPI backend with JWT authentication and REST APIs
An MCP reverse proxy with token-based access control
The n8n-mcp Node.js server as a managed subprocess
Why This Bundle?
Challenge | Solution |
n8n-mcp requires manual CLI configuration | Web GUI with forms for API URL, API key, and tool management |
No built-in access control for MCP endpoints | Token-authenticated reverse proxy with rotation and history |
Difficult to monitor MCP server health | Real-time dashboard with n8n version, workflow count, and process status |
Tool management requires editing env vars | Visual toggle for 24 tools across 3 categories |
No centralized logging | Real-time SSE log streaming with search |
Complex multi-service deployment | Single container with Podman, Docker, or Kubernetes support |
Comparison: Before vs. After
Aspect | Without This Bundle | With This Bundle |
Configuration | Edit environment variables manually | Web GUI with validation |
Authentication | None (open MCP endpoint) | JWT admin + token-protected proxy |
Monitoring | Check process manually | Dashboard with health indicators |
Tool Control | Set | Visual toggle per tool |
Token Rotation | Manual token management | One-click generation and rotation |
Logging | Grep through container logs | Real-time streaming with search |
Deployment | Multiple containers + nginx | Single container, one port |
Related MCP server: n8n-manager-mcp
Features
Dashboard
The dashboard provides an at-a-glance view of your entire MCP stack:
n8n Connection Status -- Whether the n8n REST API is reachable, along with the detected n8n version
MCP Server Status -- Process ID, running state, and restart count
MCP Proxy Status -- Built-in reverse proxy health
Workflow Count -- Total workflows on the connected n8n instance
Overall Health -- Aggregated status indicator (OK / Degraded / Error)
Connection Configuration
Configure how the MCP admin connects to your n8n instance:
n8n API URL -- The base URL of your n8n instance (e.g.,
http://n8n:5678)n8n API Key -- API key for n8n REST API authentication
MCP Session Timeout -- Session timeout for MCP connections (60s - 86400s)
MCP Max Sessions -- Maximum concurrent MCP sessions (1-100)
Connectivity Test -- One-click test that verifies the n8n REST API is reachable and returns the n8n version
Auto-restart -- Optionally restart the MCP server after configuration changes
Tool Manager
The n8n-mcp server provides 24 tools organized into 3 categories:
Core Reference (7 tools) -- Read-only documentation and node lookup
Tool | Description |
| Get documentation for all available n8n MCP tools |
| Search for n8n nodes by name, description, or category |
| Get detailed information about a specific n8n node type |
| Validate a node configuration against its schema |
| Validate workflow JSON structure without creating it |
| Search n8n community workflow templates by keyword |
| Get a specific workflow template by ID with full details |
Instance Management (13 tools) -- CRUD workflows, executions, health
Tool | Description | Operations |
| Create a new workflow on the n8n instance | create |
| Get a workflow by ID with full details | read |
| Fully replace a workflow definition | update |
| Partially update a workflow | update |
| Delete a workflow by ID permanently | delete |
| List all workflows with filtering options | read |
| Validate a workflow against the live instance | read |
| Auto-fix common workflow issues | update |
| Execute a workflow in test mode | execute |
| List, get, or delete execution history | read, delete |
| Check n8n instance health and version | read |
| List and restore workflow version history | read, update |
| Deploy a community template as a workflow | create |
Advanced (4 tools) -- Data tables, credentials, generation, audit
Tool | Description | Operations |
| CRUD operations on n8n data tables | create, read, update, delete |
| Manage n8n credentials | create, read, update, delete |
| Generate a workflow from natural language | create |
| Run a comprehensive instance audit | read |
The Tool Manager GUI allows you to:
Toggle individual tools on/off with a single click
See tool counts per category (enabled vs. total)
Identify dangerous tools marked with a warning indicator
Disable specific operations on per-tool basis
Auto-restart the MCP server when tool configuration changes
Token Manager
Manage MCP proxy authentication tokens:
Generate -- Create a new random hex token (32-256 characters)
Rotate -- Generate, apply, and restart the proxy in one step
Set -- Apply a specific token value
History -- View the last 5 token rotations with timestamps and masked previous tokens
Masked Display -- Current token shown with only the first and last 4 characters visible
Log Viewer
Real-time MCP server log monitoring:
SSE Streaming -- Live log updates via Server-Sent Events
Tail on Connect -- Configurable number of initial log lines (1-1000)
Search -- Full-text or regex search across the 5000-line in-memory buffer
Auto-scroll -- Automatically scroll to the latest log entry
Source Filtering -- Filter by log source (mcp-server)
Settings
Full configuration management:
Config Editor -- View and edit the complete
config.jsonstructureSection Editor -- Update individual config sections (connection, mcp_server, proxy, tools)
MCP Process Control -- Start, stop, and restart the MCP server subprocess
Process Status -- View PID, running state, restart count, and exit code
Admin Password -- Change the admin login password
MCP Proxy
Built-in token-authenticated reverse proxy:
URL Path Token -- Access via
/private_{token}/sseand/private_{token}/messagesSSE Streaming -- Full support for MCP protocol SSE connections
Bearer Token Forwarding -- Optionally forward a Bearer token to the upstream MCP server
Configurable Timeout -- Up to 86400 seconds (24 hours) for long-running MCP sessions
Hop-by-hop Header Stripping -- Clean header forwarding for proxied requests
Architecture
┌─────────────────────────────────────────────────────────────────────┐
│ Woow n8n MCP Admin Bundle │
│ (Single Container) │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ React SPA (Vite + Tailwind CSS) │ │
│ │ │ │
│ │ Dashboard │ Connection │ Tools │ Tokens │ Logs │ Settings │ │
│ └──────────────────────────┬────────────────────────────────────┘ │
│ │ HTTP │
│ ┌──────────────────────────▼────────────────────────────────────┐ │
│ │ FastAPI Backend (:8080) │ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │
│ │ │ Auth │ │ Config │ │ Process │ │ MCP Proxy │ │ │
│ │ │Middleware│ │ Store │ │ Manager │ │ /private_* │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ └──────┬───────┘ │ │
│ └───────────────────────────────────────────────────│──────────┘ │
│ │ │
│ ┌───────────────────────────────────────────────────▼──────────┐ │
│ │ n8n-mcp Server (Node.js subprocess) │ │
│ │ │ │
│ │ 24 MCP Tools │ SSE Transport │ JSON-RPC Messages │ │
│ └──────────────────────────┬────────────────────────────────────┘ │
│ │ │
├─────────────────────────────┼──────────────────────────────────────┤
│ ▼ │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ n8n REST API (:5678) │ │
│ │ Workflows │ Executions │ Credentials │ Health │ │
│ └───────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘Module Dependency Graph
┌─────────────────────────────────────────────────────────────────┐
│ n8n_mcp_admin (n8n-specific admin) │
│ │
│ main.py ── create_app(extra_routers=[...]) │
│ │ │
│ ├── routers/config.py (n8n connection) │
│ ├── routers/tools.py (24-tool registry) │
│ ├── routers/tokens.py (proxy token mgmt) │
│ ├── routers/health.py (dashboard data) │
│ └── routers/logs.py (SSE log streaming) │
│ │
│ depends on │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ mcp_admin_core (shared library) │ │
│ │ │ │
│ │ app.py ── FastAPI factory + SPA serving │ │
│ │ config/store.py ── File-backed JSON config │ │
│ │ process.py ── asyncio subprocess manager │ │
│ │ proxy.py ── MCP reverse proxy │ │
│ │ auth/ ── JWT middleware + login │ │
│ │ routers/ ── Settings CRUD │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ n8n-mcp (npm package, Node.js) │ │
│ │ │ │
│ │ 24 MCP tools ── n8n REST API bridge │ │
│ │ HTTP transport ── SSE + JSON-RPC │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘Data Flow: AI Assistant to n8n
sequenceDiagram
participant AI as AI Assistant (Claude/ChatGPT)
participant Proxy as MCP Proxy (/private_{token}/)
participant MCP as n8n-mcp (Node.js)
participant N8N as n8n REST API
AI->>Proxy: GET /private_{token}/sse
Proxy->>MCP: Forward to localhost:3000/sse
MCP-->>Proxy: SSE stream established
Proxy-->>AI: SSE stream forwarded
AI->>Proxy: POST /private_{token}/messages (JSON-RPC)
Proxy->>MCP: Forward JSON-RPC request
MCP->>N8N: GET /api/v1/workflows
N8N-->>MCP: Workflow data (JSON)
MCP-->>Proxy: Tool result (JSON-RPC response)
Proxy-->>AI: Forward response to AIQuick Start
One-liner with Podman
podman run -d \
--name n8n-mcp-admin \
-p 8080:8080 \
-v ./data:/data \
ghcr.io/woowtech/n8n-mcp-admin:latestThen open http://localhost:8080 and log in with the default password admin.
One-liner with Docker
docker run -d \
--name n8n-mcp-admin \
-p 8080:8080 \
-v ./data:/data \
ghcr.io/woowtech/n8n-mcp-admin:latestFull Stack with Docker Compose
Start PostgreSQL + n8n + MCP Admin Bundle:
git clone https://github.com/WOOWTECH/woow_n8n_mcp_server.git
cd woow_n8n_mcp_server
docker compose up -dThis starts:
PostgreSQL on port 5432 (internal)
n8n on port 5678
MCP Admin Bundle on port 8080
Installation
Option 1: Podman (Recommended)
Build and run locally:
# Clone the repository
git clone https://github.com/WOOWTECH/woow_n8n_mcp_server.git
cd woow_n8n_mcp_server
# Build the container image
podman build -t n8n-mcp-admin .
# Run with persistent data
podman run -d \
--name n8n-mcp-admin \
-p 8080:8080 \
-v ./data:/data \
n8n-mcp-adminOption 2: Docker
# Clone and build
git clone https://github.com/WOOWTECH/woow_n8n_mcp_server.git
cd woow_n8n_mcp_server
docker build -t n8n-mcp-admin .
docker run -d \
--name n8n-mcp-admin \
-p 8080:8080 \
-v ./data:/data \
n8n-mcp-adminOption 3: Docker Compose (Full Stack)
git clone https://github.com/WOOWTECH/woow_n8n_mcp_server.git
cd woow_n8n_mcp_server
# Start all services
docker compose up -d
# View logs
docker compose logs -f mcp-adminOption 4: Kubernetes (Helm chart)
Kubernetes deployment is a Helm chart: charts/n8n-mcp
(繁體中文). One release per instance.
# The upstream MCP server behind the nginx path-secret proxy (what runs on woow-k3s)
helm install my-n8n-mcp charts/n8n-mcp -n my-ns --create-namespace \
--set mcp.n8nApiUrl=http://n8n.my-ns.svc.cluster.local:5678 \
--set secrets.create=true --set secrets.n8nApiKey="$N8N_API_KEY" \
--set secrets.mcpAuthToken="$TOKEN" \
--set proxy.config.create=true \
--set proxy.config.pathSecret="$(openssl rand -hex 10)" \
--set proxy.config.authToken="$TOKEN"
# This bundle image instead of the upstream server (experimental, see the chart README)
helm install my-n8n-mcp charts/n8n-mcp -n my-ns --set mode=bundle \
--set mcp.n8nApiUrl=http://n8n.my-ns.svc.cluster.local:5678
helm test my-n8n-mcp -n my-ns --logsThe chart covers: the upstream n8n-mcp server, the nginx path-secret proxy
(sidecar or its own Deployment), secret material referenced rather than
templated, helm.sh/resource-policy: keep so uninstall keeps data, a read-only
helm test smoke pod, and per-instance values for woow-k3s in
deploy/woow-k3s/.
The old k8s-deploy.yaml (hardcoded to the kasim-odoo namespace, with a
private-registry image and a Role over every Secret in that namespace) has been
removed - see "Migrating from k8s-deploy.yaml" in the chart README.
Option 5: Development Mode
For local development without containers:
# Clone the repository
git clone https://github.com/WOOWTECH/woow_n8n_mcp_server.git
cd woow_n8n_mcp_server
# Install Python packages
pip install -e .
pip install n8n-mcp-admin # or install from local n8n_pyproject.toml
# Install frontend dependencies
cd frontend && npm install && cd ..
# Install n8n-mcp globally
npm install -g n8n-mcp
# Start backend
uvicorn n8n_mcp_admin.main:app --reload --port 8080
# Start frontend (separate terminal)
cd frontend && npm run devConfiguration
Initial Setup via Web GUI
After starting the container, open http://localhost:8080 in your browser:
Login -- Enter the admin password (default:
admin)
Connection -- Configure your n8n API URL and API Key, then click "Test Connection"
Tools -- Enable or disable the 24 MCP tools as needed
Tokens -- Generate an MCP proxy token for AI assistant access
Configuration File
All settings are stored in /data/config.json:
{
"admin_password": "your-secure-password",
"mcp_auth_token": "your-64-char-hex-token",
"connection": {
"n8n_api_url": "http://n8n:5678",
"n8n_api_key": "your-n8n-api-key",
"mcp_session_timeout": "3600",
"mcp_max_sessions": "10"
},
"tools": {
"disabled": [],
"disabled_operations": {}
},
"mcp_server": {
"command": "n8n-mcp",
"args": ["--transport", "http", "--port", "3000"],
"port": 3000,
"env": {
"N8N_API_URL": "http://n8n:5678",
"N8N_API_KEY": "your-n8n-api-key"
}
},
"proxy": {
"timeout": 86400
},
"token_history": []
}Environment Variables
Variable | Default | Description |
|
| Path to configuration file |
| (random) | JWT signing secret (auto-generated if not set) |
|
| JWT token expiration in hours |
Connecting AI Assistants
After configuring the bundle, connect your AI assistant using the MCP proxy URL:
http://your-server:8080/private_{your-token}/sseClaude Desktop Configuration
Add to your claude_desktop_config.json:
{
"mcpServers": {
"n8n": {
"url": "http://your-server:8080/private_your-token-here/sse"
}
}
}Cursor / VS Code
Add to your MCP settings:
{
"n8n": {
"url": "http://your-server:8080/private_your-token-here/sse"
}
}Screenshots
Login Page
Secure JWT-based authentication with session persistence.
Dashboard
Real-time health monitoring of n8n, MCP server, and proxy components.
Connection Configuration
Configure and test your n8n API connection with masked key display.
Tool Manager
Visual toggle for 24 MCP tools across 3 categories with dangerous tool indicators.
Token Manager
Generate, rotate, and track MCP proxy authentication tokens.
Log Viewer
Real-time SSE log streaming with search and auto-scroll.
Settings
Full configuration editor with MCP process control panel.
API Reference
Authentication
Method | Endpoint | Description |
|
| Authenticate with admin password, returns JWT |
Dashboard
Method | Endpoint | Description |
|
| Dashboard health data (n8n, MCP, proxy status) |
Connection
Method | Endpoint | Description |
|
| Current n8n connection settings (masked) |
|
| Update n8n API URL, API key, session settings |
|
| Test n8n REST API connectivity |
Tools
Method | Endpoint | Description |
|
| List all 24 tools with categories and enabled status |
|
| Update disabled tools list |
|
| Update disabled tool operations |
Tokens
Method | Endpoint | Description |
|
| Current token (masked) + rotation history |
|
| Generate a new random token (preview only) |
|
| Generate + apply + restart proxy |
|
| Set a specific token value |
Logs
Method | Endpoint | Description |
|
| SSE log streaming with configurable tail |
|
| Search in-memory log buffer (text or regex) |
Settings
Method | Endpoint | Description |
|
| Full config (passwords masked) |
|
| Replace full config |
|
| Get one config section |
|
| Replace one config section |
|
| MCP server process status |
|
| Restart MCP server process |
System
Method | Endpoint | Description |
|
| Kubernetes-compatible health check |
Security
Authentication Model
The bundle implements a two-layer authentication model:
┌─────────────────────────────────────────────────────┐
│ Authentication Layers │
│ │
│ Layer 1: Admin GUI (JWT) │
│ ┌─────────────────────────────────────────────┐ │
│ │ POST /api/auth/login │ │
│ │ → password → JWT token (HS256, 24h) │ │
│ │ → stored in httpOnly cookie │ │
│ │ │ │
│ │ All /api/* routes require valid JWT │ │
│ │ Except: /api/auth/login, /healthz │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ Layer 2: MCP Proxy (URL Path Token) │
│ ┌─────────────────────────────────────────────┐ │
│ │ /private_{token}/sse │ │
│ │ /private_{token}/messages │ │
│ │ │ │
│ │ Token validated against config store │ │
│ │ Invalid/missing token → 403 Forbidden │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ MCP Server: Not directly exposed │
│ Only accessible via authenticated proxy │
└─────────────────────────────────────────────────────┘Security Features
JWT Authentication -- Admin GUI protected by HS256 JWT tokens with configurable expiration
httpOnly Cookies -- JWT tokens stored in secure httpOnly cookies (SameSite=Strict)
Password Comparison -- Admin password compared with constant-time comparison (
secrets.compare_digest)Token Masking -- API keys and tokens always displayed masked (first 4 + last 4 characters)
MCP Proxy Isolation -- The n8n-mcp server is only accessible through the token-authenticated reverse proxy
CORS Configuration -- Configurable CORS origins (defaults to
*for development)Hop-by-hop Header Stripping -- Proxy strips connection-related headers before forwarding
No Direct Node.js Exposure -- The n8n-mcp process listens only on localhost
Security Best Practices
Change the default admin password immediately after first login
Set
JWT_SECRETenvironment variable in production (auto-generated tokens do not persist across restarts)Generate a strong MCP token (64+ hex characters) and share only with authorized AI assistants
Use HTTPS in production via a reverse proxy (nginx, Cloudflare Tunnel, etc.)
Restrict network access to port 8080 using firewall rules or Kubernetes NetworkPolicy
Testing
Test Summary
Test Area | Tests | Passed | Rate |
Config Store (CRUD) | 4 | 4 | 100% |
Process Manager (lifecycle) | 3 | 3 | 100% |
Auth Middleware (JWT) | 3 | 3 | 100% |
Connection Router | 2 | 2 | 100% |
Tool Router (24 tools) | 2 | 2 | 100% |
Token Router | 2 | 2 | 100% |
Log Router (SSE + search) | 1 | 1 | 100% |
Settings Router | 1 | 1 | 100% |
MCP Proxy | 1 | 1 | 100% |
Total | 19 | 19 | 100% |
Running Tests
# Backend tests
pip install -e ".[dev]"
pytest -v
# Frontend tests (if applicable)
cd frontend && npm testChangelog
v1.0.0 (2026-06)
Initial Release -- Full n8n MCP Admin Bundle
Dashboard -- Real-time health monitoring with n8n version detection and workflow count
Connection Configuration -- n8n API URL + API Key management with one-click connectivity testing
Tool Manager -- Visual toggle for 24 MCP tools across 3 categories (Core Reference, Instance Management, Advanced)
Token Manager -- MCP proxy token generation, rotation, and history tracking
Log Viewer -- Real-time SSE streaming with in-memory ring buffer and search (text + regex)
Settings -- Full
config.jsonCRUD with MCP process control (start/stop/restart)MCP Proxy -- Token-authenticated reverse proxy with SSE streaming support
Auth -- JWT-based admin authentication with httpOnly cookies
Docker -- Multi-stage Dockerfile with Node.js 20 + Python 3.12
Docker Compose -- Full stack configuration (PostgreSQL + n8n + MCP Admin)
Kubernetes -- Production deployment manifests with RBAC, health probes, and resource limits
Testing -- 19/19 backend tests passing
Tech Stack
Component | Technology | Version |
Frontend | React + Tailwind CSS + Vite | React 19, Tailwind 3.4, Vite 6 |
Backend | FastAPI + Uvicorn | FastAPI 0.115+, Python 3.12 |
MCP Server | n8n-mcp (Node.js) | v2.60.0, Node.js 20 |
Automation | n8n | 2.60+ |
Authentication | PyJWT | 2.9+ |
HTTP Client | httpx | Latest |
Container | Podman / Docker | Multi-stage build |
Orchestration | Kubernetes / K3s | v1.31+ |
Protocol | MCP (Model Context Protocol) | SSE + JSON-RPC |
Project Structure
woow_n8n_mcp_server/
├── mcp_admin_core/ # Shared core library
│ ├── __init__.py
│ ├── app.py # FastAPI app factory
│ ├── process.py # MCP subprocess manager
│ ├── proxy.py # MCP reverse proxy
│ ├── mcp_sse_wrapper.py # SSE protocol wrapper
│ ├── auth/
│ │ ├── __init__.py
│ │ └── middleware.py # JWT auth middleware + login router
│ ├── config/
│ │ ├── __init__.py
│ │ └── store.py # File-backed config store
│ ├── k8s/
│ │ ├── __init__.py
│ │ └── client.py # K8s API client (optional)
│ └── routers/
│ ├── __init__.py
│ └── settings.py # Settings CRUD router
│
├── n8n_mcp_admin/ # n8n-specific admin package
│ ├── __init__.py
│ ├── main.py # FastAPI entry point
│ ├── tool_registry.py # 24-tool registry with categories
│ └── routers/
│ ├── __init__.py
│ ├── config.py # n8n connection config
│ ├── health.py # Dashboard health data
│ ├── logs.py # SSE log streaming
│ ├── tokens.py # Proxy token management
│ └── tools.py # Tool enable/disable
│
├── frontend/ # React SPA
│ ├── index.html
│ ├── package.json
│ ├── vite.config.js
│ └── src/
│ ├── main.jsx
│ ├── App.jsx
│ ├── api.js
│ ├── index.css
│ ├── components/
│ │ ├── Sidebar.jsx
│ │ └── StatusCard.jsx
│ └── pages/
│ ├── LoginPage.jsx
│ ├── Dashboard.jsx
│ ├── ConnectionConfig.jsx
│ ├── ToolManager.jsx
│ ├── TokenManager.jsx
│ ├── LogViewer.jsx
│ ├── SettingsPage.jsx
│ └── PermissionEditor.jsx
│
├── docs/
│ ├── architecture.md # Architecture documentation
│ └── screenshots/ # 7 GUI screenshots
│ ├── dashboard.png
│ ├── connection.png
│ ├── tools.png
│ ├── tokens.png
│ ├── logs.png
│ ├── settings.png
│ └── login.png
│
├── Dockerfile # Multi-stage container build
├── docker-compose.yml # Full stack (PostgreSQL + n8n + Admin)
├── charts/n8n-mcp/ # Helm chart (upstream + bundle modes)
├── deploy/woow-k3s/ # per-instance values, no secrets
├── scripts/check-drift.sh # repo vs release vs cluster
├── pyproject.toml # Core Python package config
├── n8n_pyproject.toml # n8n admin Python package config
├── LICENSE # MIT License
├── CONTRIBUTING.md # Contribution guide
├── README.md # English documentation
└── README_zh-TW.md # Traditional Chinese documentationSupport
Issues: GitHub Issues
Email: service@woowtech.io
License
This project is licensed under the MIT License. See LICENSE for details.
Available Tools
7 toolsget_nodeBRead-onlyIdempotent
Get node info with progressive detail levels and multiple modes. Detail: minimal (~200 tokens), standard (~1-2K, default), full (~3-8K). Modes: info (default), docs (markdown documentation), search_properties (find properties), versions/compare/breaking/migrations (version info). Use format='docs' for readable documentation, mode='search_properties' with propertyQuery for finding specific fields.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Operation mode. info=node schema, docs=readable markdown documentation, search_properties=find specific properties, versions/compare/breaking/migrations=version info | info |
| detail | No | Information detail level. standard=essential properties (recommended), full=everything | standard |
| nodeType | Yes | Full node type: "nodes-base.httpRequest" or "nodes-langchain.agent" | |
| toVersion | No | Target version for compare mode (e.g., "2.0"). Defaults to latest if omitted. | |
| fromVersion | No | Source version for compare/breaking/migrations modes (e.g., "1.0") | |
| propertyQuery | No | For mode=search_properties: search term to find properties (e.g., "auth", "header", "body") | |
| includeExamples | No | Include real-world configuration examples from templates. Only applies to mode=info with detail=standard. Adds ~200-400 tokens per example. | |
| includeTypeInfo | No | Include type structure metadata (type category, JS type, validation rules). Only applies to mode=info. Adds ~80-120 tokens per property. | |
| maxPropertyResults | No | For mode=search_properties: max results (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the annotations (readOnlyHint, idempotentHint) by disclosing token estimates for each detail level (minimal ~200 tokens, standard ~1-2K, full ~3-8K) and stating that modes return different content (e.g., docs = markdown documentation). No contradiction with annotations is present, and the extra context helps an agent anticipate response size and content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, front-loading the main purpose and then listing details. Every sentence contributes useful information. The minor error ('format' vs 'mode') detracts slightly but the structure is efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, multiple modes), the description covers the main modes and detail levels but omits explanations of version-related modes (versions, compare, breaking, migrations) and parameters like includeExamples, includeTypeInfo, maxPropertyResults, toVersion, fromVersion. The schema covers these, but the description could provide more high-level guidance for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and includes detailed parameter descriptions. The description adds token counts for detail levels and groups modes concisely, but also repeats information already in the schema. The confusing 'format' reference slightly reduces clarity. Overall, the description provides marginal extra value over the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets node info with progressive detail levels and multiple modes, making the purpose well-defined. However, it introduces an inconsistency by saying 'Use format='docs'' when the parameter is actually named 'mode', which could confuse an agent. Still, the overall purpose is distinct from siblings like search_nodes or tools_documentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description fails to provide explicit guidance on when to use this tool versus sibling tools (e.g., tools_documentation, search_nodes). It does not mention when-not to use it or suggest alternatives. The information on modes and detail levels helps with intra-tool choices but not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_templateARead-onlyIdempotent
Get template by ID. Use mode to control response size: nodes_only (minimal), structure (nodes+connections), full (complete workflow).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Response detail level. nodes_only: just node list, structure: nodes+connections, full: complete workflow JSON. | full |
| templateId | Yes | The template ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the annotations by explaining the mode parameter's effect on response size, which the annotations (readOnlyHint and idempotentHint) do not cover. It does not contradict the annotations; rather, it complements them. The behavior of controlling output detail is clearly described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences that front-load the purpose and then explain the mode parameter. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema, no nested objects), the description is sufficiently complete. It covers the core retrieval purpose and the key parameter. However, it could optionally mention that the output is a workflow template JSON, but since mode 'full' implies 'complete workflow', it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal extra meaning beyond the schema—it only summarizes the mode options briefly ('nodes_only (minimal), structure (nodes+connections), full (complete workflow)') but does not provide additional context about templateId beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'template by ID'. It succinctly distinguishes the tool from siblings like search_templates by specifying retrieval via ID, and it also describes the mode parameter that tailors the response size, which is a key differentiator from other retrieval tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context for when to use this tool (when you have a template ID) and how to adjust the response size using mode. However, it does not explicitly state when not to use it or provide alternatives, though the sibling tool names (e.g., search_templates) imply that this is for direct ID lookup, not searching.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_nodesARead-onlyIdempotent
Search n8n nodes by keyword with optional real-world examples. Pass query as string. Example: query="webhook" or query="database". Returns max 20 results. Use includeExamples=true to get top 2 template configs per node.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | OR=any word, AND=all words, FUZZY=typo-tolerant | OR |
| limit | No | Max results (default 20) | |
| query | Yes | Search terms. Use quotes for exact phrase. | |
| source | No | Filter by node source: all=everything (default), core=n8n base nodes, community=community nodes, verified=verified community nodes only | all |
| includeExamples | No | Include top 2 real-world configuration examples from popular templates (default: false) | |
| includeOperations | No | Include resource/operation tree per node. Adds ~100-300 tokens per result but saves a get_node round-trip. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is clear. The description adds behavioral context: max 20 results, default limit, behavior of includeExamples and includeOperations (token cost per result). This exceeds the burden given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: three sentences that front-load the purpose and immediately provide actionable examples and constraints. Every sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema and 6 parameters, the description is complete: it covers query usage, results limit, and the two boolean options. The context signals show high schema coverage and no nested objects, so the description needs to do little else. The sibling differentiation is implicit but sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already well-documented. The description adds value by explaining the query parameter further (use quotes for exact phrase) and clarifying includeExamples and includeOperations behaviors beyond their schema descriptions. A small lift above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches n8n nodes by keyword with optional real-world examples. It distinguishes itself from siblings like search_templates or get_node by focusing on node search with template config examples, and from get_node by offering operations inclusion to save round-trips.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly guides usage via example queries and mentions the trade-off of includeOperations (saves a round-trip to get_node). However, it does not explicitly state when to use this tool over siblings like search_templates or get_node, nor when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_templatesARead-onlyIdempotent
Search templates with multiple modes. Use searchMode='keyword' for text search, 'by_nodes' to find templates using specific nodes, 'by_task' for curated task-based templates, 'by_metadata' for filtering by complexity/setup time/services, 'patterns' for lightweight workflow pattern summaries mined from 2700+ templates.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | For searchMode=by_task: the type of task. For searchMode=patterns: optional category filter (omit for overview of all categories). | |
| limit | No | Maximum number of results. Default 20. | |
| query | No | For searchMode=keyword: search keyword (e.g., "chatbot") | |
| fields | No | For searchMode=keyword: fields to include in response. Default: all fields. | |
| offset | No | Pagination offset. Default 0. | |
| category | No | For searchMode=by_metadata: filter by category (e.g., "automation", "integration") | |
| nodeTypes | No | For searchMode=by_nodes: array of node types (e.g., ["n8n-nodes-base.httpRequest", "n8n-nodes-base.slack"]) | |
| complexity | No | For searchMode=by_metadata: filter by complexity level | |
| searchMode | No | Search mode. keyword=text search (default), by_nodes=find by node types, by_task=curated task templates, by_metadata=filter by complexity/services, patterns=lightweight workflow pattern summaries | keyword |
| targetAudience | No | For searchMode=by_metadata: filter by target audience (e.g., "developers", "marketers") | |
| maxSetupMinutes | No | For searchMode=by_metadata: maximum setup time in minutes | |
| minSetupMinutes | No | For searchMode=by_metadata: minimum setup time in minutes | |
| requiredService | No | For searchMode=by_metadata: filter by required service (e.g., "openai", "slack") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the tool is safe and idempotent. The description adds behavioral clarity by detailing the five distinct search modes and their parameters (e.g., 'patterns' mode uses 2700+ templates for summaries), without contradicting annotations. The explanation of 'patterns' as lightweight summaries is extra context beyond annotations, but it lacks details on pagination behavior or result format, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently enumerates all five modes and their purposes without redundancy. Every clause adds value (e.g., 'lightweight workflow pattern summaries mined from 2700+ templates'), and it's front-loaded with the main action ('Search templates with multiple modes').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 13 parameters, no output schema, and rich sibling context, the description is remarkably complete. It covers the core behavior (five search modes), when to use each, and hints at return differences (e.g., 'patterns' yields summaries). With readOnlyHint and idempotentHint annotations, no additional safety info is needed. The only minor gap is no explicit mention of result pagination, but the schema's offset/limit parameters suffice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds value by grouping parameters by search mode (e.g., 'query' for keyword, 'nodeTypes' for by_nodes), providing context not in the schema. However, for parameters like 'category' and 'targetAudience', the description only restates what the schema says, offering no deeper semantics, so it doesn't fully reach a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches templates with multiple modes, enumerates each mode with its specific use case (e.g., 'searchMode=keyword' for text search, 'by_nodes' to find templates using specific nodes), and distinguishes itself from siblings like search_nodes (which likely searches for nodes, not templates). The explicit listing of five search modes provides a precise scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use each mode (e.g., 'Use searchMode=keyword for text search, by_nodes to find templates using specific nodes'), which directly guides the AI agent in selecting the right approach. It implies that for template-related searches this tool is appropriate, while siblings like search_nodes are for node-level searches, providing clear separation of concerns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tools_documentationARead-onlyIdempotent
Get documentation for n8n MCP tools. Call without parameters for quick start guide. Use topic parameter to get documentation for specific tools. Use depth='full' for comprehensive documentation.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Level of detail. "essentials" (default) for quick reference, "full" for comprehensive docs. | essentials |
| topic | No | Tool name (e.g., "search_nodes") or "overview" for general guide. Leave empty for quick reference. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the agent knows this is a safe, read-only operation. The description adds behavioral context beyond annotations: it explains that calling without parameters returns a 'quick start guide,' and that depth='full' provides 'comprehensive documentation.' This clarifies the different response modes. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each adding value: first sentence states the core purpose, second gives the default behavior, third explains the two optional parameters. It is front-loaded and contains no unnecessary words. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional params, no output schema), the description covers the main use cases well. It explains all invocation modes. However, it does not describe the format of the returned documentation (e.g., markdown, text), which would be helpful for an agent. Still, it is largely complete for a straightforward documentation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mentions using the 'topic' parameter and 'depth="full"', but this mostly restates the schema's own descriptions. It adds minimal new meaning beyond what the schema already provides. Therefore, a score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get documentation for n8n MCP tools.' It distinguishes itself from siblings (which deal with templates, nodes, validation) by explicitly focusing on tool documentation. The different invocation modes (no params, topic, depth) are also outlined, making the purpose very specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Call without parameters for quick start guide. Use topic parameter to get documentation for specific tools. Use depth="full" for comprehensive documentation.' This tells the agent exactly when to use each parameter combination. It does not mention when not to use the tool or alternatives, but the sibling tools are sufficiently different that no further exclusion is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_nodeARead-onlyIdempotent
Validate n8n node configuration. Use mode='full' for comprehensive validation with errors/warnings/suggestions, mode='minimal' for quick required fields check. Example: nodeType="nodes-base.slack", config={resource:"channel",operation:"create"}
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Validation mode. full=comprehensive validation with errors/warnings/suggestions, minimal=quick required fields check only. Default is "full" | full |
| config | Yes | Configuration as object. For simple nodes use {}. For complex nodes include fields like {resource:"channel",operation:"create"} | |
| profile | No | Profile for mode=full: "minimal", "runtime", "ai-friendly", or "strict". Default is "ai-friendly" | ai-friendly |
| nodeType | Yes | Node type as string. Example: "nodes-base.slack" |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | Yes | |
| errors | No | |
| summary | No | |
| nodeType | Yes | |
| warnings | No | |
| displayName | Yes | |
| suggestions | No | |
| workflowNodeType | No | |
| missingRequiredFields | No | Only present in mode=minimal |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as readOnlyHint true and idempotentHint true, so the description has less burden. It adds mode parameters and example usage but does not detail return format or success/failure behavior, which is partially covered by the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with a clear example, no fluff. Could be slightly more compact by integrating the example into the main statement, but it is efficient and front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (4 params, nested objects, output schema) and 100% schema coverage, the description covers the key behavior. The output schema handles return details, so no further explanation needed. The example adds practical context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description provides an example for nodeType and config that goes beyond the schema by showing a practical use case. This adds value, earning a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it validates n8n node configuration with a specific verb and resource. Provides examples of nodeType and config to distinguish it from sibling tools like 'search_nodes' or 'get_node'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes two validation modes ('full' for comprehensive, 'minimal' for quick checks) and gives usage example. Context suggests siblings like 'validate_workflow' exist but no direct 'when not to use' is stated, though mode distinction sufficiently guides selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_workflowARead-onlyIdempotent
Full workflow validation: structure, connections, expressions, AI tools. Returns errors/warnings/fixes. Essential before deploy.
| Name | Required | Description | Default |
|---|---|---|---|
| options | No | Optional validation settings | |
| workflow | Yes | The complete workflow JSON to validate. Must include nodes array and connections object. |
Output Schema
| Name | Required | Description |
|---|---|---|
| valid | Yes | |
| errors | No | |
| summary | Yes | |
| warnings | No | |
| suggestions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint, so the safety profile is clear. The description adds that it returns errors/warnings/fixes, which is useful but not extensive. Since annotations carry the behavioral burden, the description adds moderate value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and scope. Every word adds value. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose and return type. An output schema exists, so return details are documented elsewhere. Slightly missing mention of the optional 'options' parameter, but the schema covers it. Overall adequate for a validation tool with rich structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for each parameter. The description mentions the validation categories (structure, connections, expressions) which map to options, but does not add new meaning beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Full workflow validation' specifies the action and scope. Lists what is validated (structure, connections, expressions, AI tools) and what is returned (errors/warnings/fixes). Distinguishes from sibling 'validate_node' by being for the entire workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States 'Essential before deploy' which implies when to use it, but does not explicitly mention when not to use it or alternatives like validate_node for single nodes. The context is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.1.0- First observed
get_node - First observed
get_template - First observed
search_nodes - First observed
search_templates - First observed
tools_documentation - First observed
validate_node - First observed
validate_workflow
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose: node info vs node search, node validation vs workflow validation, template retrieval vs template search, and meta documentation. No two tools overlap in function.
Most tools follow a consistent verb_noun pattern (get_node, search_nodes, validate_node, etc.), but 'tools_documentation' deviates as a noun pair. The inconsistency is minor and does not significantly impact readability.
With 7 tools, the server is well-scoped for its n8n-focused purpose. Each tool serves a necessary function, covering node exploration, validation, and template access without bloat.
The tool set covers the core lifecycle of node discovery, detailed info, validation, and template search/retrieval. Minor gaps exist, such as no tool for listing or creating workflows, but for an assistant-style server, the coverage is strong.
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Open-source Zapier/n8n alternative as an MCP server: agents build, run and debug your workflows.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Related MCP Servers
- AlicenseBqualityDmaintenanceA comprehensive MCP server that provides full control over n8n automation workflows through natural language. It offers 43 tools for managing workflows, executions, credentials, and data tables, with safety features like write-mode protection and double-validated workflow creation.431MIT
- AlicenseBqualityAmaintenanceMCP server for managing n8n workflows through AI assistants. Supports workflow CRUD operations, synchronization, inspection, and execution support for automation-focused workflows.19216 npm2MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for n8n workflow automation, enabling management of workflows, executions, credentials, tags, users, and webhooks via an MCP-compatible client.MIT
- FlicenseBqualityCmaintenanceA full-power MCP server for n8n that enables AI agents to create, read, update, delete, and test workflows and credentials, including webhook testing, validation, and backup/versioning.319-