N8N MCP Server Details
An MCP (Model Context Protocol) server designed to integrate Claude Desktop, Claude Code, Windsurf, and Cursor with n8n workflows. This MCP enables users to build, test, and orchestrate complex workflows by exposing a set of tools that bridge Claude’s capabilities with n8n’s automation platform. The project emphasizes robust trigger handling, multi-tenant readiness, and progressive documentation to help developers understand how tools map to real-world workflow tasks. It also outlines future tooling integration points (such as getNodeEssentials and getNodeInfo) to further enhance node-structure awareness within MCP-powered automations.
Use Case
The MCP serves as a bridge between Claude-based agents and the n8n automation platform, enabling Claude to initiate, test, and manage n8n workflows. It supports trigger-based workflows via tools that detect and handle diverse trigger types (webhook, form, chat) and provides a framework for integrating node information essential for advanced workflow composition. Example uses include: - Triggering an n8n workflow from Claude when a chat message arrives - Testing workflow triggers via a dedicated tool that auto-detects trigger type - Filtering available tools at startup through environment configuration to tailor the MCP for multi-tenant deployments. Note: The documentation references upcoming integrations for node-related tooling (getNodeEssentials, getNodeInfo) to enrich MCP’s understanding of node capabilities.
Available Tools (4)
Examples & Tutorials
Core Principles
1. Silent Execution
CRITICAL: Execute tools without commentary. Only respond AFTER all tools complete.
❌ BAD: "Let me search for Slack nodes... Great! Now let me get details..."
✅ GOOD: [Execute search_nodes and get_node in parallel, then respond]
2. Parallel Execution
When operations are independent, execute them in parallel for maximum performance.
✅ GOOD: Call search_nodes, list_nodes, and search_templates simultaneously
❌ BAD: Sequential tool calls (await each one before the next)
3. Templates First
ALWAYS check templates before building from scratch (2,709 available).
4. Multi-Level Validation
Use validate_node(mode='minimal') → validate_node(mode='full') → validate_workflow pattern.
5. Never Trust Defaults
⚠️ CRITICAL: Default parameter values are the #1 source of runtime failures.
ALWAYS explicitly configure ALL parameters that control node behavior.
Workflow Process
tools_documentation() for best practicessearch_templates({searchMode: 'by_metadata', complexity: 'simple'}) - Smart filteringsearch_templates({searchMode: 'by_task', task: 'webhook_processing'}) - Curated by tasksearch_templates({query: 'slack notification'}) - Text search (default searchMode='keyword')search_templates({searchMode: 'by_nodes', nodeTypes: ['n8n-nodes-base.slack']}) - By node type Filtering strategies:
complexity: "simple" + maxSetupMinutes: 30targetAudience: "marketers" | "developers" | "analysts"maxSetupMinutes: 15 for quick winsrequiredService: "openai" for compatibilitysearch_nodes({query: 'keyword', includeExamples: true}) - Parallel for multiple nodessearch_nodes({query: 'trigger'}) - Browse triggerssearch_nodes({query: 'AI agent langchain'}) - AI-capable nodesget_node({nodeType, detail: 'standard', includeExamples: true}) - Essential properties (default)get_node({nodeType, detail: 'minimal'}) - Basic metadata only (~200 tokens)get_node({nodeType, detail: 'full'}) - Complete information (~3000-8000 tokens)get_node({nodeType, mode: 'search_properties', propertyQuery: 'auth'}) - Find specific propertiesget_node({nodeType, mode: 'docs'}) - Human-readable markdown documentationvalidate_node({nodeType, config, mode: 'minimal'}) - Quick required fields checkvalidate_node({nodeType, config, mode: 'full', profile: 'runtime'}) - Full validation with fixesget_template(templateId, {mode: "full"})validate_workflow(workflow) - Complete validationvalidate_workflow_connections(workflow) - Structure checkvalidate_workflow_expressions(workflow) - Expression validationn8n_create_workflow(workflow) - Deployn8n_validate_workflow({id}) - Post-deployment checkn8n_update_partial_workflow({id, operations: [...]}) - Batch updatesn8n_test_workflow({workflowId}) - Test workflow executionCritical Warnings
⚠️ Never Trust Defaults
Default values cause runtime failures. Example:
// ❌ FAILS at runtime
{resource: "message", operation: "post", text: "Hello"}// ✅ WORKS - all parameters explicit
{resource: "message", operation: "post", select: "channel", channelId: "C123", text: "Hello"}
⚠️ Example Availability
includeExamples: true returns real configurations from workflow templates.get_node + validate_node({mode: 'minimal'})Validation Strategy
Level 1 - Quick Check (before building)
validate_node({nodeType, config, mode: 'minimal'}) - Required fields only (<100ms)Level 2 - Comprehensive (before building)
validate_node({nodeType, config, mode: 'full', profile: 'runtime'}) - Full validation with fixesLevel 3 - Complete (after building)
validate_workflow(workflow) - Connections, expressions, AI toolsLevel 4 - Post-Deployment
n8n_validate_workflow({id}) - Validate deployed workflown8n_autofix_workflow({id}) - Auto-fix common errorsn8n_executions({action: 'list'}) - Monitor execution statusResponse Format
Initial Creation
[Silent tool execution in parallel]Created workflow:
Webhook trigger → Slack notification
Configured: POST /webhook → #general channel Validation: ✅ All checks passed
Modifications
[Silent tool execution]Updated workflow:
Added error handling to HTTP node
Fixed required Slack parameters Changes validated successfully.
Batch Operations
Use n8n_update_partial_workflow with multiple operations in a single call:
✅ GOOD - Batch multiple operations:
n8n_update_partial_workflow({
id: "wf-123",
operations: [
{type: "updateNode", nodeId: "slack-1", changes: {...}},
{type: "updateNode", nodeId: "http-1", changes: {...}},
{type: "cleanStaleConnections"}
]
})❌ BAD - Separate calls:
n8n_update_partial_workflow({id: "wf-123", operations: [{...}]})
n8n_update_partial_workflow({id: "wf-123", operations: [{...}]})CRITICAL: addConnection Syntax
The addConnection operation requires four separate string parameters. Common mistakes cause misleading errors.
❌ WRONG - Object format (fails with "Expected string, received object"):
{
"type": "addConnection",
"connection": {
"source": {"nodeId": "node-1", "outputIndex": 0},
"destination": {"nodeId": "node-2", "inputIndex": 0}
}
}❌ WRONG - Combined string (fails with "Source node not found"):
{
"type": "addConnection",
"source": "node-1:main:0",
"target": "node-2:main:0"
}✅ CORRECT - Four separate string parameters:
{
"type": "addConnection",
"source": "node-id-string",
"target": "target-node-id-string",
"sourcePort": "main",
"targetPort": "main"
}Reference: GitHub Issue #327
⚠️ CRITICAL: IF Node Multi-Output Routing
IF nodes have two outputs (TRUE and FALSE). Use the branch parameter to route to the correct output:
✅ CORRECT - Route to TRUE branch (when condition is met):
{
"type": "addConnection",
"source": "if-node-id",
"target": "success-handler-id",
"sourcePort": "main",
"targetPort": "main",
"branch": "true"
}✅ CORRECT - Route to FALSE branch (when condition is NOT met):
{
"type": "addConnection",
"source": "if-node-id",
"target": "failure-handler-id",
"sourcePort": "main",
"targetPort": "main",
"branch": "false"
}Common Pattern - Complete IF node routing:
n8n_update_partial_workflow({
id: "workflow-id",
operations: [
{type: "addConnection", source: "If Node", target: "True Handler", sourcePort: "main", targetPort: "main", branch: "true"},
{type: "addConnection", source: "If Node", target: "False Handler", sourcePort: "main", targetPort: "main", branch: "false"}
]
})Note: Without the branch parameter, both connections may end up on the same output, causing logic errors!
removeConnection Syntax
Use the same four-parameter format:
{
"type": "removeConnection",
"source": "source-node-id",
"target": "target-node-id",
"sourcePort": "main",
"targetPort": "main"
}Example Workflow
Template-First Approach
// STEP 1: Template Discovery (parallel execution)
[Silent execution]
search_templates({
searchMode: 'by_metadata',
requiredService: 'slack',
complexity: 'simple',
targetAudience: 'marketers'
})
search_templates({searchMode: 'by_task', task: 'slack_integration'})// STEP 2: Use template
get_template(templateId, {mode: 'full'})
validate_workflow(workflow)
// Response after all tools complete:
"Found template by <strong>David Ashby</strong> (@cfomodz).
View at: https://n8n.io/workflows/2414
Validation: ✅ All checks passed"
Building from Scratch (if no template)
// STEP 1: Discovery (parallel execution)
[Silent execution]
search_nodes({query: 'slack', includeExamples: true})
search_nodes({query: 'communication trigger'})// STEP 2: Configuration (parallel execution)
[Silent execution]
get_node({nodeType: 'n8n-nodes-base.slack', detail: 'standard', includeExamples: true})
get_node({nodeType: 'n8n-nodes-base.webhook', detail: 'standard', includeExamples: true})
// STEP 3: Validation (parallel execution)
[Silent execution]
validate_node({nodeType: 'n8n-nodes-base.slack', config, mode: 'minimal'})
validate_node({nodeType: 'n8n-nodes-base.slack', config: fullConfig, mode: 'full', profile: 'runtime'})
// STEP 4: Build
// Construct workflow with validated configs
// ⚠️ Set ALL parameters explicitly
// STEP 5: Validate
[Silent execution]
validate_workflow(workflowJson)
// Response after all tools complete:
"Created workflow: Webhook → Slack
Validation: ✅ Passed"
Batch Updates
// ONE call with multiple operations
n8n_update_partial_workflow({
id: "wf-123",
operations: [
{type: "updateNode", nodeId: "slack-1", changes: {position: [100, 200]}},
{type: "updateNode", nodeId: "http-1", changes: {position: [300, 200]}},
{type: "cleanStaleConnections"}
]
})Important Rules
Core Behavior
Attribution & Credits
Performance
Code Node Usage
Most Popular n8n Nodes (for get_node):
Note: LangChain nodes use the @n8n/n8n-nodes-langchain. prefix, core nodes use n8n-nodes-base.
Frequently Asked Questions
Is this your MCP?
Claim ownership and get verified badge
DISABLED_TOOLS can be set via the DISABLED_TOOLS environment variable to filter specific tools from registration at startup. This enables deployment-specific tool configurations for multi-tenant setups and feature flags. The server also notes that tool filtering applies to both documentation and management tooling during startup.
Compare Alternatives
Similar MCP Tools
6 related toolsAnki MCP Server
A Model Context Protocol (MCP) server that enables AI assistants to interact with Anki, the spaced repetition flashcard application. The Anki MCP Server allows AI models to access Anki's card data, enabling features like automated flashcard creation, review, and management.
1MCP Agent
A unified Model Context Protocol server implementation that aggregates multiple MCP servers into one. The 1mcp-app/agent is an open-source project that provides a single entry point for multiple MCP servers, making it easier to manage and interact with various AI models and tools.
Roundtable AI MCP Server
Roundtable AI MCP Server is a zero-configuration local MCP server that unifies multiple AI coding assistants (Codex, Claude Code, Cursor, Gemini) through intelligent auto-discovery and a standardized interface. It coordinates specialized sub-agents from within your IDE to solve engineering problems in parallel, sharing context and synthesizing responses into a single, high-quality output. This documentation details installation, available MCP tools, integration with popular IDEs, and a broad ecosystem of specialized tools and CLIs that can be invoked as part of a roundtable-powered workflow, enabling developers to delegate tasks to the right AI for each facet of a problem without leaving their development environment.
MCPJungle
MCPJungle is a self-hosted MCP Gateway and Registry for AI agents. It serves as a central registry and gateway to manage Model Context Protocol (MCP) servers and the tools they expose. By consolidating MCP server registration, tool discovery, and access control, MCPJungle enables AI agents and clients to discover, group, and securely invoke tools from a single, unified gateway. The project provides a CLI, Docker-based deployment options, and enterprise-ready features such as tool grouping, access control, and observability to streamline MCP-based workflows across organizations.
mcpmcp-server
mcpmcp-server is a focused solution for discovering, setting up, and integrating MCP servers with your favorite clients to unlock AI-powered workflows. It streamlines how you connect MCP-powered servers to popular clients, enabling seamless AI-assisted interactions across your daily tools. The project emphasizes an approachable, config-driven approach to linking MCP servers with clients like Claude Desktop, while directing you to the homepage for variations across apps and platforms. This README highlights a practical JSON configuration example and notes on supported environments, helping you get started quickly and confidently.
Imagen3-MCP
Imagen3-MCP is an image generation service based on Google's Imagen 3.0 that exposes its functionality through MCP (Model Control Protocol). The project provides a server to run a local MCP service that accesses Google Gemini-powered image generation, enabling developers to integrate advanced image synthesis into their applications. The documentation covers prerequisites (Gemini API key), installation steps for Cherry Studio, and a Cursor-based JSON configuration example for embedding the MCP server in broader tooling. This MCP is designed to be deployment-friendly, with configurable environment variables and optional proxy settings to adapt to various network environments.