n8n-mcp
Supports generating workflows that post messages to Discord channels.
Facilitates generating workflows that add rows to Google Sheets.
Generates proper AI Agent clusters using LangChain sub-nodes for language models and memory.
Provides tools for generating, linting, diagnosing, and managing n8n workflows and executions via MCP.
Generates workflows that use OpenAI language models for AI agents.
Allows creating workflows that monitor RSS feeds and trigger actions.
Enables creation of workflows that send messages to Slack channels.
Allows generating workflows that integrate Stripe webhooks, such as Stripe to Slack or Google Sheets.
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., "@n8n-mcpexplain why my last execution failed"
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.
n8n-mcp
An MCP server for n8n that gives Claude, Cursor, and other AI agents tools for generating workflows, linting, diagnosing failed executions, and driving live n8n instances.
Why we built this
We use n8n daily inside AutomateLab and kept hitting the same LLM failures: workflow JSON that imports but fails at runtime, AI Agent clusters wired with the wrong connection types, executions that silently drop items with no clue where to look. Dumping the whole n8n catalog into context doesn't fix it - the failure modes are too subtle (typeVersion mismatches, IF v1 schema, credentials that don't survive import).
So we built a small, focused server: encode the failure modes the lint can catch, the cluster topology the generator must respect, and the diagnosis the agent can't do alone. For a walkthrough of the nine tools with example output, see the launch post on automatelab.tech.
Related MCP server: n8n-MCP
Why it's different
Other n8n MCP servers (notably czlonkowski/n8n-mcp) compete on breadth - 20+ tools and an indexed corpus of every n8n node. They own that niche.
This server is the debugging-and-first-run-correctness MCP for n8n:
execution_explainis the wedge. Paste the execution JSON; get back per-node findings: which nodes returned 0 items, which had unresolved={{ ... }}expressions, error messages with concrete hints. No other MCP server does this well, and it hits the n8n community's #1 debugging pain point (silent data loss between nodes).workflow_generateis opinionated about AI Agent topology - emits proper LangChain clusters withai_languageModel/ai_memory/ai_toolconnections (sub-nodes connect upward to the agent, not viamain). Imports cleanly on n8n 1.x.workflow_lintcatches the silent failures: deprecated node types (Function → Code, spreadsheetFile → convertToFile), AI Agent missing language model, IF v1 schema, Webhook missing webhookId, broken connections across all connection types (not justmain).5 REST tools (gated on
N8N_API_URL+N8N_API_KEY) let you list, fetch, create, activate workflows and pull executions - so the lint and explain tools can run against your live workflows, not just JSON pasted in chat.
Plus: a paired Agent Skill that teaches the model when to use which tool and where to load deeper context (split into references/ so it doesn't bloat the prompt).
Tools
Tool names follow dot-notation and form a navigable tree: node.*, workflow.*, execution.*. Every tool declares an outputSchema (so callers can type-check responses) and MCP annotations (read-only / destructive / idempotent / open-world hints).
Stateless (work without a live n8n instance):
Tool | Purpose |
| Plain-English description → workflow JSON. Detects AI-agent intent. |
| Description → single |
| Workflow JSON → list of errors and warnings (20+ rules). |
| Two workflows → semantic diff (nodes added/removed/modified, connections, settings). |
| Failed execution JSON → per-node diagnosis with hints. |
| Workflow + node → self-contained replay workflow that exercises just that node. |
| Execution JSON → per-node timeline table (start, duration, items in/out, errors). |
Live-instance (require N8N_API_URL + N8N_API_KEY env vars):
Tool | Purpose |
| Paginate workflows; filter by active/tags/name. |
| Fetch a workflow by id. |
| POST a workflow. Strips read-only fields. |
| Flip active on/off. |
| Browse executions; pass |
v0.5.0 changes. Three new tools:
workflow_diff,execution_replay,execution_timeline. Lint expanded with 10 new rules (rate-limit, credential drift, expression staleness, code sandbox, webhook test path, manualTrigger-in-active, DST schedule risk, disabled-but-wired, empty Set, HTTP method/body mismatch). New runtime policy env vars:N8N_MCP_READ_ONLY,N8N_MCP_DISABLED_TOOLS,N8N_MCP_ALLOWED_WORKFLOW_IDS,N8N_MCP_ALLOWED_TAGS. DXT bundle + Dockerfile + Render/Railway/Fly deploy configs.
v0.4.0 breaking change. Tools were renamed from
n8n_*(snake_case) to dot-notation. Update any prompts, agent skills, or scripts that referenced the old names.
Runtime policy (v0.5+)
Constrain the server without forking. Set these env vars before launching:
Env var | Effect |
| Disables |
| Skip those tool registrations entirely. |
| REST tools refuse to touch any workflow outside the list. |
|
|
Useful when handing the MCP to a junior agent or wiring it behind a customer-facing assistant.
Deploy
Claude Desktop one-click: build the
.dxtbundle fromdxt/manifest.json(seedxt/README.md).Docker:
docker build -t n8n-mcp . && docker run --rm -i -e N8N_API_URL=... -e N8N_API_KEY=... n8n-mcp.Render: drop in
render.yamland click "New from Blueprint".Railway:
railway.toml—railway upin the repo root.Fly.io:
fly.toml—fly launch --copy-config.
Install
Requires Node 20 or later.
As a CLI tool
npm install -g @automatelab/n8n-mcpAs a GitHub Action
Use the n8n MCP GitHub Action to lint workflows, diagnose executions, and generate workflow JSON in your CI/CD pipeline:
- uses: ratamaha-git/n8n-mcp@v1
with:
command: 'lint'
workflow-json: ${{ env.WORKFLOW_JSON }}See ACTION.md and GITHUB-ACTION-SETUP.md for examples and publication details.
Configure your MCP host
Cursor (~/.cursor/mcp.json) or Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"n8n": {
"command": "npx",
"args": ["-y", "@automatelab/n8n-mcp"],
"env": {
"N8N_API_URL": "https://your-n8n.example.com",
"N8N_API_KEY": "n8n_..."
}
}
}
}The env block is optional - the 4 stateless tools work without it. Get an API key from n8n: Settings → API → Create API key.
Restart your MCP host. The 12 dot-notation tools (workflow.*, node.*, execution.*) appear in the MCP panel.
Tool examples
workflow_generate
Use workflow_generate to build: Stripe webhook → Slack message + new row in Google Sheets.
Returns workflow JSON ready for n8n's "Import from File" dialog.
execution_explain
Here's a failed execution from n8n. Why is the Slack node not firing? [paste JSON]
Returns:
WARNING [Filter] Returned 0 items. Downstream nodes will not execute.
hint: Common causes: (1) IF/Switch routed to the other branch — check `parameters.conditions`. (2) Filter/Set node dropped everything — inspect its output explicitly.
INFO [Last node executed was "Filter". If the workflow stopped here unexpectedly, check its output items below.]workflow_lint
Lint this workflow JSON. [paste JSON]
Returns:
ERROR [AI Agent] AI Agent has no `ai_languageModel` sub-node connected. Attach a chat model (e.g. lmChatOpenAi).
WARNING [Webhook] Webhook node has no `webhookId`. n8n auto-generates one on import, so the production URL will change.
WARNING [LegacyFunction] Node type "n8n-nodes-base.function" is deprecated. Use "n8n-nodes-base.code".Or no issues found.
Examples
The examples/ directory ships with two ready-to-import workflows:
workflow-stripe-to-slack.json- Stripe webhook fans out to Slack and Google Sheets.workflow-rss-to-discord.json- RSS feed trigger posts new items to a Discord channel.
Import either via n8n's Import from File dialog.
Development
git clone https://github.com/ratamaha-git/n8n-mcp
cd n8n-mcp
npm install
npm run build
npm run smokenpm run smoke boots the server with a --smoke flag that lists registered tools and exits without binding stdio. Useful for CI or first-run sanity checks.
License
MIT. See LICENSE.
Developed by AutomateLab.
Available Tools
12 toolsexecution_explainExplain a failed n8n executionARead-onlyIdempotent
Diagnose a failed or surprising n8n execution. Paste the execution JSON (from the n8n UI 'Show details' or GET /executions/:id?includeData=true); returns a per-node summary highlighting nodes that returned 0 items, unresolved ={{ ... }} expressions, errors with hints, and LLM token usage. Hits the most common debugging pain point: items 'silently disappearing' between nodes. Deterministic, rule-based.
| Name | Required | Description | Default |
|---|---|---|---|
| execution | Yes | n8n execution payload (REST `?includeData=true` shape or raw UI export). Object or JSON string. |
Output Schema
| Name | Required | Description |
|---|---|---|
| findings | Yes | Per-node findings extracted from the execution payload. |
| error_count | Yes | Number of error-severity findings. |
| warning_count | Yes | Number of warning-severity findings. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds valuable behavioral context: deterministic, rule-based, returns per-node summary with specific highlighted issues (0 items, unresolved expressions, errors, LLM token usage). No contradiction 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?
Four sentences, no waste. Purpose is front-loaded, input format and output highlights follow. Every sentence adds value.
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 simple single-parameter input, annotations covering safety, and the existence of an output schema, the description is complete. It covers input format, output content, and behavioral characteristics, leaving no gaps for correct agent usage.
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 has 100% coverage with a description for the single parameter. The tool description adds extra clarification about the expected format (UI 'Show details' or REST endpoint), which aids correct invocation beyond the schema alone.
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 uses a specific verb 'Diagnose' and resource 'failed n8n execution', clearly distinguishing it from sibling tools like execution_list or execution_replay which are about listing or replaying executions. It states exactly what it does: returns a per-node summary with specific diagnostic details.
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 (diagnose failed or surprising executions) and what input to provide (execution JSON from UI or REST API). It implicitly covers when not to use (if execution succeeded or is not surprising). Does not name alternatives explicitly but the context is clear given sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execution_listList recent n8n executionsARead-onlyIdempotent
List recent executions from a live n8n instance (requires N8N_API_URL + N8N_API_KEY). Filter by workflowId, status (success|error|waiting), limit. Pass includeData: true to get the full execution body (large) — pair with execution_explain to diagnose a specific failure.
| Name | Required | Description | Default |
|---|---|---|---|
| workflowId | No | Filter by workflow ID. | |
| status | No | Filter by status: success | error | waiting. | |
| limit | No | Page size (n8n default: 100, max: 250). | |
| includeData | No | Include full execution data (large). Default false — pair with execution_explain. |
Output Schema
| Name | Required | Description |
|---|---|---|
| executions | Yes | Either trimmed summaries (default) or full execution bodies (includeData=true). |
| count | Yes | Number of executions returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as read-only and idempotent; the description adds that it requires API credentials and that includeData returns large data, which is critical behavioral context 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?
Two sentences, front-loaded with purpose and prerequisites, no redundant information. 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 four parameters, annotations, and an output schema, the description covers prerequisites, filters, and special parameter usage, and even suggests a sibling tool pairing, making it fully complete.
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?
With 100% schema coverage, the description adds value by explaining limit as page size, status enum values, and includeData's association with execution_explain, enhancing understanding beyond the schema.
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 uses a specific verb ('List') and resource ('executions'), and explicitly mentions the live n8n instance and API requirements, clearly distinguishing this tool from siblings like execution_explain.
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 explains prerequisites (API URL and key), available filters, and the use of includeData paired with execution_explain. While it doesn't explicitly state when not to use, the context is clear and provides good guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execution_replayBuild a replay workflow for one nodeARead-onlyIdempotent
Build a self-contained replay workflow that exercises a single node from a larger workflow. The replay workflow is Manual Trigger -> Replay Seed (Code node with pinned items) -> target node. Optional inputItems or an execution payload pins what the target sees. Useful for iterating on one stubborn node without re-running the whole pipeline. Returns workflow JSON ready to import or push via workflow_create.
| Name | Required | Description | Default |
|---|---|---|---|
| workflow | Yes | Original workflow JSON. | |
| node | Yes | Name of the node to replay. | |
| inputItems | No | Optional explicit input items (each becomes `{ json: ... }`). | |
| execution | No | Optional execution payload — pulls real input the target saw last time. |
Output Schema
| Name | Required | Description |
|---|---|---|
| workflow | Yes | Full n8n workflow JSON (name, nodes, connections, settings, ...). |
| item_count | Yes | Number of input items the replay seed will feed the target. |
| target_node | Yes | Name of the node being replayed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, and the description adds valuable behavioral context: it explains that the tool generates a new workflow ('Returns workflow JSON'), describes the internal structure ('Manual Trigger -> Replay Seed -> target node'), and clarifies how optional parameters affect behavior ('pins what the target sees'). 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 concise with five sentences, each adding essential information: main purpose, workflow structure, optional params, use case, and return value. No redundant or unnecessary words, and it is front-loaded with the primary action.
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 (4 params, 2 required) and presence of output schema, the description covers the main workflow, parameter effects, and output. It does not mention error scenarios or node existence checks, but for a non-destructive, read-only tool this is acceptable. The description is largely complete.
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 baseline is 3. The description adds meaning beyond the schema by explaining that inputItems or execution 'pins what the target sees' and that inputItems become '{ json: ... }' items. This clarifies the parameter usage in the context of building a replay workflow.
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 builds a self-contained replay workflow for a single node, using the verb 'build' and specifying the resource 'replay workflow'. It distinguishes from siblings like execution_list and workflow_create by focusing on isolating one node for debugging, as stated in 'iterating on one stubborn node without re-running the whole pipeline'.
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 when-to-use guidance: 'useful for iterating on one stubborn node without re-running the whole pipeline'. However, it does not explicitly state when not to use this tool or name alternative tools from the sibling list, which would strengthen the guidelines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execution_timelineRender an execution as a per-node timelineARead-onlyIdempotent
Render an n8n execution as a per-node timeline: start offset, duration, items in/out, error flag. Complements execution_explain — that one surfaces why, this surfaces when. Output is a markdown table sorted by start time. Deterministic.
| Name | Required | Description | Default |
|---|---|---|---|
| execution | Yes | n8n execution payload (must include `data.resultData.runData`). |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | Yes | Per-node-run timing and item counts, sorted by start_ms. |
| total_ms | Yes | Wall-clock duration of the whole execution in milliseconds. |
| row_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already declare readOnlyHint=true and idempotentHint=true, the description adds valuable behavioral context: output is a markdown table sorted by start time, and the tool is deterministic. This goes beyond what annotations inherently 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 extremely concise: two sentences and one word, with no wasted content. It front-loads the core purpose, then provides comparison and output details. 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 low complexity (one parameter, rich annotations, and an output schema), the description is fully adequate. It explains the output format, ordering, determinism, and relationship to a sibling tool, leaving no significant 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% for the single parameter 'execution', which already documents the requirement for `data.resultData.runData`. The description does not add additional semantics beyond the schema, so a baseline 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 verb 'Render' and the resource 'n8n execution as a per-node timeline' with specific outputs (start offset, duration, items in/out, error flag). It explicitly distinguishes itself from the sibling 'execution_explain' by contrasting 'why' vs 'when', fulfilling the requirement to differentiate from siblings.
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 context by stating it complements execution_explain and clarifies the differing purposes ('when' vs 'why'). However, it does not explicitly state when to avoid using this tool or mention additional alternatives beyond the named sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
node_scaffoldScaffold an n8n custom nodeARead-only
Scaffold a TypeScript skeleton for an n8n custom node from a plain-English description. Returns a single TypeScript file implementing INodeType with description, credentials reference, and an execute method stub. Pure code generation — no network, no filesystem writes.
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes | Plain-English description of what the node should do (1+ chars). | |
| nodeName | No | Optional PascalCase class name, e.g. 'DiscordRateLimited'. Derived from the description if omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| node_name | Yes | PascalCase class name of the generated node. |
| display_name | Yes | Human-readable display name shown in the n8n UI. |
| source | Yes | The full TypeScript source of the scaffolded node. |
| language | Yes | Always 'typescript' — n8n custom nodes are TS-only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and destructiveHint=false. The description adds that it performs pure code generation (no network, no filesystem writes) and returns a TypeScript file, fully disclosing behavior without contradiction.
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?
Three sentences, front-loaded with the core purpose, and no superfluous words. Every sentence adds value.
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 only 2 parameters and an output schema (not shown but referenced), the description adequately covers the tool's inputs and output. It could mention file extension or encoding, but not necessary.
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%, providing strong baseline. The description adds that nodeName is optional and derived from description if omitted, which enhances understanding beyond the schema.
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 scaffolds a TypeScript skeleton for an n8n custom node from a plain-English description. It distinguishes itself from sibling tools (all about executions/workflows) by specifying a unique code-generation function.
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 explains it is pure code generation with no network or filesystem writes, implying safe usage. No explicit when-not-to-use guidance is given, but no conflicting tools exist among siblings, making the context clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_activateActivate or deactivate a workflowAIdempotent
Activate or deactivate a workflow on a live n8n instance (requires N8N_API_URL + N8N_API_KEY). Pass active: false to deactivate. Idempotent — re-activating an already-active workflow is a no-op on n8n's side.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Workflow ID. | |
| active | No | Defaults to true (activate). Set false to deactivate. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| id | Yes | The workflow ID that was (de)activated. |
| action | Yes | Which action was performed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and non-destructive. Description adds 'Idempotent — re-activating an already-active workflow is a no-op', confirming and elaborating on the idempotency. No contradiction 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?
Two sentences pack all necessary info: purpose, requirements, usage, and idempotency. No wasted words; front-loaded with key details.
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?
For a simple toggle tool with good schema and annotations, description adds idempotency and environment requirements. Output schema exists, so return values are covered. Complete enough for correct agent invocation.
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 clear descriptions for both parameters. Description repeats that 'active: false' deactivates, adding minimal extra meaning beyond the schema. 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?
Title and description clearly state 'activate or deactivate a workflow' with specific verb and resource. Distinguishes from sibling tools like workflow_create, workflow_get, etc., by focusing on toggling active state.
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?
Description specifies prerequisites (N8N_API_URL, N8N_API_KEY) and how to deactivate (active: false). While it doesn't explicitly exclude alternatives, the context is sufficiently clear for an agent to decide when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_createCreate a workflow on a live n8n instanceA
Create a workflow on a live n8n instance (requires N8N_API_URL + N8N_API_KEY). Strips read-only fields (id, active, createdAt, ...) before posting. Workflows are created inactive — call workflow_activate afterward. Pairs with workflow_generate for end-to-end 'describe -> deploy'.
| Name | Required | Description | Default |
|---|---|---|---|
| workflow | Yes | Workflow JSON to create (typically the output of workflow_generate). Either a parsed object or a JSON string. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | The ID assigned by n8n to the new workflow. |
| name | Yes | The name of the newly created workflow. |
| workflow | Yes | Full n8n workflow JSON (name, nodes, connections, settings, ...). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds behavioral detail beyond annotations: strips read-only fields before posting and creates workflows inactive. Annotations only show non-destructive and non-idempotent. No contradiction with annotations (readOnlyHint: false is consistent).
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?
Three sentences, each serving a purpose: purpose+prerequisite, behavioral detail, and usage pairing. No wasted words, front-loaded with essential info.
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 single parameter, full schema coverage, and output schema exists, description covers prerequisite, behavioral nuance, post-usage step, and sibling relationship. Sufficient for 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%, but description adds value by stating the workflow parameter is 'typically the output of workflow_generate', linking to sibling tool. Also clarifies it can be parsed object or JSON string.
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 'Create a workflow on a live n8n instance' with specific verb and resource. It distinguishes from siblings by mentioning pairing with workflow_generate for 'describe -> deploy'.
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 states prerequisites (N8N_API_URL + N8N_API_KEY) and post-usage instruction (call workflow_activate). Pairs with workflow_generate, indicating when to use it in the workflow lifecycle. No explicit when-not-to-use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_diffSemantic diff between two n8n workflowsARead-onlyIdempotent
Semantic diff between two workflows. Reports nodes added / removed / modified (with field-level deltas: type, typeVersion, parameters, credentials, disabled, position), connection topology changes, and settings drift. Ignores noise (small position deltas, createdAt/updatedAt). Pair with workflow_get to compare deployed vs local. Deterministic.
| Name | Required | Description | Default |
|---|---|---|---|
| before | Yes | The 'before' workflow JSON. | |
| after | Yes | The 'after' workflow JSON. |
Output Schema
| Name | Required | Description |
|---|---|---|
| changes | Yes | Ordered list of semantic differences. |
| summary | Yes | One-line summary of change counts by kind. |
| change_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds valuable context: it ignores noise (position deltas, timestamps) and declares deterministic behavior, enhancing the agent's understanding 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 (five sentences) and front-loaded with the core purpose. Every sentence contributes meaningful information: diff scope, noise filtering, pairing guidance, and determinism.
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 and the description covering diff categories, noise handling, and pairing advice, the tool is fully contextualized for an agent to 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 coverage is 100% with both parameters documented. The description adds minimal semantic value beyond the schema (e.g., 'workflow JSON'), but the baseline of 3 is appropriate as the schema already defines the parameters.
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 it performs a semantic diff between two workflows, listing specific diff categories (nodes, connections, settings) and distinguishing itself from siblings by mentioning pairing with workflow_get for deployed vs local comparison.
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 a clear use case ('Pair with workflow_get to compare deployed vs local') but does not explicitly exclude alternatives or state when not to use it. However, the purpose is self-evident for a diff tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_generateGenerate an n8n workflow from a descriptionARead-only
Generate a valid n8n workflow JSON from a plain-English description. Handles webhook/schedule/RSS triggers, common action nodes (Slack, Google Sheets, Discord, Gmail, Notion, HTTP), and AI Agent setups (LangChain root agent + chat model + memory + optional HTTP tool, wired with ai_languageModel / ai_memory / ai_tool connections). Returns workflow JSON with unique node IDs, connections, positions, and typeVersion on every node. Output is non-deterministic (random node IDs and webhook paths).
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes | Plain-English workflow description, e.g. 'Stripe webhook -> Slack message + Google Sheets row'. | |
| name | No | Optional workflow name. Derived from the first sentence of the description if omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| workflow | Yes | Full n8n workflow JSON (name, nodes, connections, settings, ...). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark readOnlyHint=true; description adds non-deterministic output and random IDs, providing context 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?
Single paragraph, front-loaded main purpose, no wasted words, efficiently covers key points.
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?
Describes return value (workflow JSON with fields) and behavior; output schema exists, but error cases not mentioned.
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 100%; description adds minor context (name derivation) but schema already documents parameters well.
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 'Generate a valid n8n workflow JSON from a plain-English description' with specific triggers and nodes, distinguishing it from siblings like workflow_create.
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?
Implied usage for generating workflows from text, but no explicit when-not or alternatives among siblings like workflow_create.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_getFetch a single workflow by IDARead-onlyIdempotent
Fetch a single workflow JSON by id from a live n8n instance (requires N8N_API_URL + N8N_API_KEY). Returns the full nodes/connections payload — pair with workflow_lint to audit a deployed workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Workflow ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| workflow | Yes | Full n8n workflow JSON (name, nodes, connections, settings, ...). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description adds valuable context: the need for N8N_API_URL and N8N_API_KEY, and that it returns the full nodes/connections payload. This goes 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?
Two sentences, front-loaded with the core action, and every phrase serves a purpose. 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?
For a simple one-parameter tool with a clear output schema (implied), the description covers purpose, input, output, prerequisites, and a common pairing. It is fully adequate given the tool's complexity.
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% for the single 'id' parameter, so baseline is 3. The description does not add semantic detail beyond 'Workflow ID.' No additional clarification is given.
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 ('Fetch') and resource ('single workflow JSON by id'), and distinguishes from siblings like 'workflow_list' by focusing on a single workflow. It also mentions the source and a pairing hint with 'workflow_lint'.
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 a clear use case ('pair with workflow_lint to audit a deployed workflow') and implies that this tool is for retrieving a single workflow by ID. It does not explicitly state when not to use it, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_lintLint an n8n workflow JSONARead-onlyIdempotent
Lint an n8n workflow JSON. Returns concrete errors and warnings: missing credentials, deprecated node types (Function -> Code, spreadsheetFile -> convertToFile/extractFromFile), broken connections, missing or non-numeric typeVersion, duplicate node names or IDs, AI Agent missing ai_languageModel sub-node, Webhook missing webhookId, IF node still on v1 condition schema, rate-sensitive nodes without retries, Code-node sandbox violations, expression staleness ($('NodeName') referencing missing nodes), manualTrigger in active workflows, disabled-but-wired nodes, empty Set nodes, HTTP method/body mismatches, Schedule trigger DST risk, credential drift, webhook test paths in active workflows. Deterministic, rule-based.
| Name | Required | Description | Default |
|---|---|---|---|
| workflow | Yes | n8n workflow as either a parsed object or a JSON string (will be parsed). |
Output Schema
| Name | Required | Description |
|---|---|---|
| issues | Yes | All lint findings, ordered by node. |
| error_count | Yes | Number of error-severity issues. |
| warning_count | Yes | Number of warning-severity issues. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent behavior. The description adds value by listing the specific rules and checks performed, and states 'Deterministic, rule-based,' which aligns 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 a single paragraph that front-loads the main purpose and then lists checks. It is informative but could be more structured (e.g., bullet points) for easier scanning.
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 all necessary aspects: input, examples of checks, deterministic nature. Given that an output schema likely describes return values, no further details are needed.
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% for the single parameter 'workflow'. The description adds minimal extra meaning beyond the schema's description, essentially restating it.
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 'Lint an n8n workflow JSON' and enumerates specific checks, distinguishing it from sibling tools focused on execution, activation, or creation.
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 does not explicitly state when to use this tool over alternatives. While the context of linting is implied, there is no direct guidance on prerequisites or 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.
workflow_listList workflows on a live n8n instanceARead-onlyIdempotent
List workflows from a live n8n instance (requires N8N_API_URL + N8N_API_KEY env vars). Returns id, name, active, nodeCount, updatedAt, tags. Filter by active, tags, name. Use this when the user asks 'what workflows do I have?' or before workflow_get.
| Name | Required | Description | Default |
|---|---|---|---|
| active | No | Filter by active status. Omit to return both. | |
| tags | No | Comma-separated tag names to filter by. | |
| name | No | Filter by exact workflow name. | |
| limit | No | Page size (n8n default: 100, max: 250). |
Output Schema
| Name | Required | Description |
|---|---|---|
| workflows | Yes | Summary of each workflow (id, name, active, nodeCount, ...). |
| count | Yes | Number of workflows returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, destructive, idempotent hints. Description adds authentication requirements (env vars) and return fields, which is useful context 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?
Three concise sentences: purpose, return fields, filters, usage guidance. No redundant words, front-loaded with core action.
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 output schema and annotations present, description adds auth prereqs, return fields, and usage pattern. Could mention limit pagination or error handling but sufficient for tool usage.
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 baseline is 3. Description only groups filter parameters ('Filter by active, tags, name') without adding new meaning; each parameter already has description in schema.
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 specifies the verb 'List' and resource 'workflows from a live n8n instance', lists return fields and filters, and distinguishes from sibling tools by suggesting usage before workflow_get or when user asks about workflows.
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?
Clearly states when to use (asking about workflows or before workflow_get) but doesn't explicitly list when not to use or alternatives beyond workflow_get; however context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: execution_* tools cover debugging (explain, timeline), listing, and replay, while workflow_* tools cover CRUD, diff, generate, lint, and activation. node_scaffold is separate. No overlapping functionality that would cause confusion.
Tools mostly follow verb_noun snake_case (execution_explain, workflow_create). One minor inconsistency: node_scaffold uses noun_verb instead of scaffold_node. Otherwise consistent and predictable.
12 tools is well-scoped for the n8n domain. It covers execution debugging, workflow lifecycle, and node generation without being overwhelming or sparse.
Covers core execution and workflow operations comprehensively (list, get, create, activate, diff, lint, generate, explain, replay, timeline). Missing workflow delete/update and execution cancel, but these are secondary and often handled via the UI.
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 AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides AI assistants with access to documentation, schemas, and operations for over 535 n8n workflow automation nodes. It enables models to understand, create, and manage n8n workflows through natural language by connecting to the n8n API.123,606MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that empowers AI assistants to build, validate, and manage n8n workflows by providing structured access to documentation for over 1,200 nodes and thousands of templates. It enables deep integration with n8n instances for automated workflow orchestration and management through natural language.123,6061MIT
- AlicenseAqualityCmaintenanceAn MCP server for n8n that gives Claude, Cursor, and other AI agents tools for generating workflows, linting, diagnosing failed executions, and driving live n8n instances.129312MIT
- FlicenseNot gradedqualityCmaintenanceA 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.8
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/actions-marketplace-validations/AutomateLab-tech_n8n-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server