Woow n8n 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 "Install 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
Deploy to a K8s cluster:
# Apply the manifests
kubectl apply -f k8s-deploy.yaml
# Verify deployment
kubectl get pods -n kasim-odoo -l app=n8n-mcp-admin
# Port-forward for local access
kubectl port-forward -n kasim-odoo svc/n8n-mcp-admin-svc 9002:9002The K8s manifest includes:
RBAC (ServiceAccount, Role, RoleBinding) for namespace-scoped Secret/ConfigMap access
Deployment with health probes (readiness + liveness)
Resource limits (100m-500m CPU, 128Mi-512Mi RAM)
Control-plane node selector
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)
├── k8s-deploy.yaml # Kubernetes deployment manifests
├── 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_nodeARead-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?
Annotations already declare read-only and idempotent behavior, so the safety profile is covered. The description adds valuable behavioral context by disclosing token ranges for each detail level, indicating response size, and clarifying that modes return different formats (e.g., markdown docs). This goes beyond 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 compact (three sentences) and front-loads the core purpose, then efficiently describes details and usage tips. Every sentence is informative, with no 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?
With no output schema, the description partially explains return characteristics via token estimates and mode outputs, but it does not fully detail the response structure for each mode. The description covers most relevant dimensions (modes, detail, parameters) but could be more explicit about the differences between version-related modes.
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?
Despite 100% schema coverage, the description adds meaningful parameter relationships, such as connecting mode='search_properties' with propertyQuery and providing token estimates for detail levels. However, it incorrectly uses 'format' instead of 'mode' in one tip, which could cause minor confusion.
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 function with a specific verb ('Get') and resource ('node info'), and enumerates distinct modes (info, docs, search_properties, versions) that differentiate it from search/validation tools. The phrase 'progressive detail levels' further clarifies the 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 provides clear guidance on when to use specific modes ('Use format='docs' for readable documentation, mode='search_properties' with propertyQuery') but does not explicitly compare this tool to siblings like search_nodes or validate_node. The context implies that get_node is for retrieving details of a known node type, not for discovering nodes.
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?
Annotations already declare readOnlyHint and idempotentHint, so the description doesn't need to state safety. It adds useful behavioral context about the mode affecting response size, which goes beyond the schema by framing it as size control. 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 two sentences, front-loaded with the primary action, and every sentence adds value. No fluff or repetition of the schema.
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, a 100% schema coverage, and read-only annotations, the description is adequately complete. It explains the core purpose and the mode parameter's effect. No output schema exists, but the description's reference to 'complete workflow' provides a minimal sense of return content.
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 both parameters fully described in the schema. The description only restates the mode options ('minimal', 'nodes+connections', 'complete workflow') without adding new semantics beyond what the schema already provides. Therefore, 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?
The description states a specific verb+resource: 'Get template by ID', clearly distinguishing it from sibling tools like get_node and search_templates. It also mentions the mode parameter that affects response detail, making the tool's scope even clearer.
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 clearly implies when to use this tool (when you have a template ID) and explains how mode controls response size. It doesn't explicitly list exclusions or alternatives, but the context is clear enough for an agent to differentiate it from search tools.
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 covered. The description adds valuable behavior details: max 20 results, includeExamples behavior, and the token trade-off for includeOperations (saves a get_node round-trip). This goes beyond what annotations provide.
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 compact at three sentences, front-loaded with the main purpose, and every sentence adds value. It includes an example and key behavioral constraints without fluff.
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 (6 params, no output schema), the description covers the essential behaviors: search scope, max results, and optional enrichments. It does not describe the result structure, but for a search tool with schema-documented params, this is sufficient. Sibling context further fills gaps.
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 six parameters adequately. The description adds a concrete example and clarifies includeExamples, but this is marginal value beyond what the schema 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?
The description clearly states the tool searches n8n nodes by keyword, with an explicit verb and resource. It distinguishes itself from siblings like get_node (fetch specific node details) and search_templates (search templates) by focusing on node discovery.
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 clear usage context with examples ('Pass query as string. Example: query="webhook"') and explains when to use optional flags like includeExamples and includeOperations. However, it does not explicitly state when to prefer this over get_node or search_templates, though the sibling names imply the distinction.
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 provide readOnlyHint and idempotentHint, and the description aligns with them. The description adds context about the patterns mode ('lightweight workflow pattern summaries mined from 2700+ templates') and the multi-mode behavior, going beyond the structured 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 only two sentences, front-loaded with the verb and resource. The second sentence efficiently lists all five modes with their use cases, with 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?
The tool is complex (13 params, 5 modes, no output schema), but the schema covers parameter details. The description gives enough context to choose a mode and understand the tool's scope, though it could explicitly mention mode-specific parameter requirements or response format.
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 mirrors the searchMode enum descriptions from the schema and adds only the '2700+ templates' detail. It does not provide additional meaning for other parameters like query, nodeTypes, or limit beyond what the schema already has.
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: 'Search templates with multiple modes.' It distinguishes itself from siblings like get_template (retrieval) and search_nodes (node search) by explicitly targeting templates and enumerating all five search modes.
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?
It provides explicit mode-specific usage guidance (keyword for text search, by_nodes for specific nodes, etc.), which helps the agent select the right mode. However, it does not mention when to prefer alternative tools like get_template for direct retrieval.
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 declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds parameter-dependent behavior contexts (quick start vs specific tool docs vs comprehensive docs), which is useful. However, it does not disclose additional behavioral details like output format, pagination, or error handling, but for a documentation tool these are less critical. The description does not contradict annotations, and the added context is modest.
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, with the purpose stated in the first sentence and usage instructions in the next two. Every sentence provides essential information, with no waste or redundancy. It is appropriately front-loaded and efficiently communicates the core functionality and options.
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 (no required params, no output schema), the description is nearly complete. It covers all usage modes (no params, topic, depth) and mentions the quick start guide. The only minor gap is not describing the output format (e.g., markdown vs plain text), but for a documentation tool this is not a significant omission. Overall it is sufficiently complete for an agent to select and invoke correctly.
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%, with both depth and topic already described in detail (e.g., depth enum values and topic examples). The description repeats similar guidance ('Use depth="full" for comprehensive documentation' mirrors the schema's 'full' meaning). It adds minimal extra meaning beyond the schema, so the baseline 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 function: 'Get documentation for n8n MCP tools.' This specifies the verb (Get) and resource (documentation for MCP tools), and distinguishes from siblings like get_node or search_nodes which operate on actual data, not documentation. The mention of a quick start guide and depth levels further clarifies 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 gives explicit usage scenarios: 'Call without parameters for quick start guide', 'Use topic parameter to get documentation for specific tools', and 'Use depth="full" for comprehensive documentation.' This provides clear context for when to use different parameter combinations. It doesn't explicitly state exclusions or alternatives, but the guidance is strong enough to make the tool's usage obvious.
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 declare readOnlyHint and idempotentHint, covering safety. The description adds meaningful context by explaining that full mode returns errors/warnings/suggestions and minimal mode performs a quick required-fields check, disclosing the validation behavior and output type beyond 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 concise: two sentences plus an example. It front-loads the primary purpose and then provides mode selection guidance and a practical example. Every element contributes useful information 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?
With an output schema present, return values are already defined. The description covers the tool's purpose, mode selection, and an example, while the schema fully documents all parameters. Annotations cover safety. Together, this provides complete context for an agent to select and invoke the tool correctly.
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?
The schema already provides descriptions for all 4 parameters (100% coverage), so the description need not repeat them. It adds value with a concrete example (nodeType="nodes-base.slack", config={resource:"channel",operation:"create"}) that illustrates the expected format, going beyond the schema's basic descriptions.
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 validates n8n node configuration with a specific verb and resource. The example with nodeType and config clarifies its purpose. However, it does not explicitly distinguish from sibling tools like validate_workflow or get_node, so it falls short of a 5.
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 clear guidance on when to use 'full' versus 'minimal' mode, which helps the agent choose appropriate parameters. It does not mention when to use this tool over alternatives (e.g., validate_workflow), so it lacks explicit exclusion or alternative tool guidance.
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 declare readOnlyHint and idempotentHint, lowering the bar. The description adds behavioral context by stating it returns 'errors/warnings/fixes', which informs the agent about the output nature. No contradictions with annotations. It could mention lack of side effects or performance implications, but the annotations cover safety.
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 two sentences, extremely concise and front-loaded with the primary purpose. Each word adds value: scope, aspects, expected return, and timing. No filler or redundant information.
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?
With a full schema (including output schema) and rich annotations, the description is largely sufficient. It covers what is validated, what is returned, and when to use. It does not mention the options parameter, but the schema fully documents that. A tiny gap is the lack of mention of profile choices, but this is a minor omission given schema completeness.
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 3 applies. The description's mention of 'connections, expressions' loosely aligns with the validateConnections and validateExpressions options, but it does not add meaning beyond what the schema already provides for the workflow parameter or options parameter. Schema does the heavy lifting.
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 specifies the tool's function as 'Full workflow validation', enumerating the validated aspects (structure, connections, expressions, AI tools). This specific scope distinguishes it from the sibling 'validate_node' tool, which validates individual nodes. The verb+resource+scope is precise and unambiguous.
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 states 'Essential before deploy', providing a clear contextual trigger for when to use the tool. It does not explicitly name alternatives or exclusions, but the 'full workflow' framing implies a complementary role to node-level validation tools. The deployment context is strong enough to guide the agent.
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. Dates show when Glama detected each change.
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
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
n8n MCP — query your own n8n instance (BYO).
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
- AlicenseAqualityAmaintenanceMCP server for managing n8n workflows through AI assistants. Supports workflow CRUD operations, synchronization, inspection, and execution support for automation-focused workflows.191952MIT
- 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.318-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/WOOWTECH/woow_n8n_mcp_server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server