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
Sponsored
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
9 related toolsPlaywright MCP
Playwright MCP server. A Model Context Protocol (MCP) server that provides browser automation capabilities using Playwright. This server enables large language models (LLMs) to interact with web pages through structured accessibility snapshots, bypassing the need for screenshots or visually-tuned models. The server is designed to be fast, lightweight, and deterministic, offering LLM-friendly tooling and a rich set of browser automation capabilities via MCP tools. It supports standalone operation, containerized deployments, and integration with a variety of MCP clients (Claude Desktop, VS Code, Copilot, Cursor, Goose, Windsurf, and others).
Sequential Thinking MCP Server
Sequential Thinking MCP Server provides a dedicated MCP tool that guides problem-solving through a structured, step-by-step thinking process. It supports dynamic adjustment of the number of thoughts and allows revision and branching within a controlled workflow, making it ideal for complex analysis and solution hypothesis development. This server is designed to register a single tool, sequential_thinking, and is integrated with common MCP deployment methods (NPX, Docker) as well as editor integrations like Claude Desktop and VS Code for quick setup. The documentation provides exact configuration snippets, usage patterns, and building instructions to help you deploy and use the MCP server effectively, including Codex CLI, NPX, and Docker installation examples.
Hugging Face MCP Server
Hugging Face Official MCP Server connects your large language models (LLMs) to the Hugging Face Hub and thousands of Gradio AI Applications, enabling seamless MCP (Model Context Protocol) integration across multiple transports. It supports STDIO, SSE (to be deprecated but still commonly deployed), StreamableHTTP, and StreamableHTTPJson, with the Web Application allowing dynamic tool management and status updates. This MCP server is designed to be run locally or in Docker, and it provides integrations with Claude Desktop, Claude Code, Gemini CLI (and its extension), VSCode, and Cursor, making it easy to configure and manage MCP-enabled tools and endpoints. Tools such as hf_doc_search and hf_doc_fetch can be enabled to enhance document discovery, and an optional Authenticate tool can be included to handle OAuth challenges when called.
Shadcn UI MCP Server v4
Shadcn UI v4 MCP Server is an advanced MCP (Model Context Protocol) server designed to give AI assistants comprehensive access to shadcn/ui v4 components, blocks, demos, and metadata. It enables multi-framework support (React, Svelte, Vue, and React Native) with fast, cache-friendly access to component source code, demos, and directory structures, empowering AI-driven development workflows. The project emphasizes production-readiness with Docker Compose, SSE transport for multi-client deployments, and smart caching to optimize GitHub API usage while providing rich metadata and usage patterns for rapid prototyping and learning across frameworks.
Figma MCP server
The Figma MCP server enables design context delivery from Figma files to AI agents and code editors, empowering teams to generate code directly from design selections. It supports both a remote hosted server and a locally hosted desktop server, allowing seamless integration with popular editors through Code Connect and a suite of tools that extract design context, metadata, variables, and more. This guide covers enabling the MCP server, configuring clients (VS Code, Cursor, Claude Code, and others), and using a curated set of MCP tools to fetch structured design data for faster, more accurate code generation. It also explains best practices, prompts, and integration workflows that help teams align generated output with their design systems. The documentation includes concrete JSON examples for configuring servers in editors like VS Code and Cursor, as well as command examples for Claude Code integration and plugin installation.
MarkItDown MCP
MarkItDown-MCP is a lightweight MCP (Model Context Protocol) server provided as the markitdown-mcp package. It exposes a STDIO, Streamable HTTP, and SSE MCP server designed for calling MarkItDown to convert content to Markdown. The package focuses on simplicity and accessibility, enabling you to run the MCP server locally via a simple CLI, or in Docker for containerized workflows, with integration options for Claude Desktop. The core capability is exposed through a single tool, convert_to_markdown(uri), which accepts a URI in http:, https:, file:, or data: schemes to fetch content and convert it to Markdown. This MCP server is easy to install with pip and can be used in various transport modes, including STDIO and HTTP/SSE, making it a flexible choice for automations and integrations.
Chrome MCP Server
Chrome MCP Server is a Chrome extension-based Model Context Protocol (MCP) server that exposes your Chrome browser functionality to AI assistants like Claude, enabling complex browser automation, content analysis, and semantic search. It leverages your existing Chrome environment, including login states and configurations, to allow large language models and chatbots to control the browser natively without needing to launch a separate automation process. The project emphasizes privacy by remaining fully local and offers capabilities such as cross-tab context, streamable HTTP communication, and a built-in vector database for semantic search and content analysis. As an early-stage project, it includes a growing set of tools for browser control, inspection, and automation, with ongoing development to broaden compatibility and features.
MCP server for Appwrite docs
The MCP server for Appwrite docs enables LLMs and code-generation tools to interact with comprehensive Appwrite documentation. It empowers AI assistants to access up-to-date API references, SDK guides, and implementation examples, facilitating intelligent code generation, troubleshooting, and best-practice guidance directly from the official docs. This MCP brings real-time context, semantic search, and seamless integration with popular editors and IDEs to accelerate development workflows around Appwrite's APIs and SDKs.
Appwrite MCP server
Appwrite MCP server is a Model Context Protocol server that enables AI models to interact with Appwrite’s backend. It provides a curated set of MCP tools to manage databases, users, functions, teams, and more within your Appwrite project, enabling powerful AI-assisted workflows and natural-language interactions with your backend. The server ships with the Databases tools enabled by default to keep prompts within context limits and can be extended by enabling additional APIs via command-line flags. This makes it easier to build AI-powered applications that leverage Appwrite APIs securely and efficiently.