← MCP servers · czlonkowski

N8n

BLOCKgrade F · trust 29/100

A MCP for Claude Desktop / Claude Code / Windsurf / Cursor to build n8n workflows for you

mcpmcp servern8nworkflows

Overview

From the repository's own README, as read at the audited commit.

# n8n-MCP[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)[![GitHub stars](https://img.shields.io/github/stars/czlonkowski/n8n-mcp?style=social)](https://github.com/czlonkowski/n8n-mcp)[![npm version](https://img.shields.io/npm/v/n8n-mcp.svg)](https://www.npmjs.com/package/n8n-mcp)[![codecov](https://codecov.io/gh/czlonkowski/n8n-mcp/graph/badge.svg?token=YOUR_TOKEN)](https://codecov.io/gh/czlonkowski/n8n-mcp)[![Tests](https://img.shields.io/badge/tests-6524%20passing-brightgreen.svg)](https://github.com/czlonkowski/n8n-mcp/actions)[![n8n version](https://img.shields.io/badge/n8n-2.39.4-orange.svg)](https://github.com/n8n-io/n8n)[![Docker](https://img.shields.io/badge/docker-ghcr.io%2Fczlonkowski%2Fn8n--mcp-green.svg)](https://github.com/czlonkowski/n8n-mcp/pkgs/container/n8n-mcp)[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/n8n-mcp?referralCode=n8n-mcp)A Model Context Protocol (MCP) server that provides AI assistants with comprehensive access to n8n node documentation, properties, and operations. Deploy in minutes to give Claude and other AI assistants deep knowledge about n8n's 2,791 workflow automation nodes (833 core + 1,958 community).## Overviewn8n-MCP serves as a bridge between n8n's workflow automation platform and AI models, enabling them to understand and work with n8n nodes effectively. It provides structured access to:- **2,791 n8n nodes** - 833 core nodes + 1,958 community nodes (1,619 verified)- **Node properties** - 99% coverage with detailed schemas- **Node operations** - 66.5% coverage of available actions- **Documentation** - 86% coverage from official n8n docs (including AI nodes)- **AI tools** - 267 AI-capable tool variants detected with full documentation- **Real-world examples** - 156 ranked configurations extracted from popular templates- **Template library** - 2,352 workflow templates with 99.96% AI metadata coverage- **Community nodes** - Search ver

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add n8n-mcp-ui-apps --env AUTH_RATE_LIMIT_MAX=${AUTH_RATE_LIMIT_MAX} --env AUTH_RATE_LIMIT_WINDOW=${AUTH_RATE_LIMIT_WINDOW} --env AUTH_TOKEN=${AUTH_TOKEN} --env AUTH_TOKEN_FILE=${AUTH_TOKEN_FILE} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "n8n-mcp-ui-apps": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "AUTH_RATE_LIMIT_MAX": "${AUTH_RATE_LIMIT_MAX}",
        "AUTH_RATE_LIMIT_WINDOW": "${AUTH_RATE_LIMIT_WINDOW}",
        "AUTH_TOKEN": "${AUTH_TOKEN}",
        "AUTH_TOKEN_FILE": "${AUTH_TOKEN_FILE}"
      }
    }
  }
}

Exposed tools (57) 47 read · 7 write · 3 destructive

Blast radius: 3 tools can delete or overwrite. An agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
EmptyreadEmpty node
IFreadRoute items
OpenAIreadOpenAI integration
SlackreadConsume Slack API
TestreadTest node
WebhookreadStarts workflow on webhook call
bodyreadIssue description
calculate_shippingreadCalculate shipping cost based on weight (kg) and distance (km)
cityreadCity name
data_analystreadData analysis expert
echoreadEcho skill
field1readPrimary description
get_ai_agent_nodereadExtract AI Agent node source
get_function_nodereadExtract Function node source
get_nodereadGet 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=
get_node_essentialsreadEssentials
get_node_inforeadGet info
get_templatereadGet template by ID. Use mode to control response size: nodes_only (minimal), structure (nodes+connections), full (complete workflow).
get_webhook_nodereadExtract Webhook node source
host_failing_toolreadAlways fails
host_list_instancesreadList n8n instances
host_mutable_toolreadoriginal description
host_switch_instancereadSwitch active n8n instance
host_typed_toolreadHas a typed input schema
list_ai_nodesreadList AI/LangChain nodes
list_available_nodesreadList all available n8n nodes
n8n_audit_instancereadSecurity audit of n8n instance. Combines n8n
n8n_autofix_workflowwriteAutomatically fix common workflow validation errors. Preview fixes or apply them. Fixes expression format, typeVersion, error output config, webhook paths, connection structure issues (numeric keys, invalid types, ID-to-name, duplicates, out-of-bounds indices).
n8n_create_workflowwriteCreate workflow. Requires: name, nodes[], connections{}. Created inactive. Returns workflow with ID.
n8n_delete_workflowdestructivePermanently delete a workflow. This action cannot be undone.
n8n_deploy_templatewriteDeploy a workflow template from n8n.io directly to your n8n instance. Deploys first, then auto-fixes common issues (expression format, typeVersions). Returns workflow ID, required credentials, and fixes applied.
n8n_executionsdestructiveManage workflow executions: get details, list, or delete. Use action=
n8n_explore_node_resourcesreadResolve the real options behind a node\
n8n_get_workflowwriteGet workflow by ID with different detail levels. n8n has a draft/publish model: the workflow body holds the draft (latest edits); use mode=
n8n_health_checkreadCheck n8n instance health and API connectivity. Use mode=
n8n_list_catalogreadList instance-level catalog entries: projects (with the personal project marked, needed as projectId for agents and data tables) or tags. Reads the Public API first; when team projects are not licensed there, falls back to n8n\
n8n_list_workflowsreadList workflows (minimal metadata only). Returns id/name/active/dates/tags. Check hasMore/nextCursor for pagination.
n8n_manage_agentsreadManage n8n Agents (persisted assistants with a model, instructions, tools, skills, tasks, memory and channels) through n8n
n8n_manage_credentialsdestructiveManage n8n credentials. Actions: list, get, create, update, delete, getSchema. Use getSchema to discover required fields before creating. For list, page beyond 100 results with cursor (from the previous response\
n8n_manage_datatablereadManage n8n data tables, rows and columns. Actions: createTable, listTables, getTable, updateTable, deleteTable, getRows, insertRows, updateRows, upsertRows, deleteRows, addColumn, deleteColumn, renameColumn. The column actions run through n8n
n8n_manage_foldersreadManage workflow folders (n8n 2.19+; folders need a registered Community instance or higher). Actions: create, list, get, rename, move, delete. projectId defaults to
n8n_probe_toolreadSynthetic tool used by the policy tests
n8n_test_workflowwriteRun a workflow. method=auto (default) triggers it over HTTP through its webhook/form/chat trigger. Workflows without such a trigger need n8n
n8n_update_full_workflowwriteFull workflow update. Requires complete nodes[] and connections{}. For incremental use n8n_update_partial_workflow.
n8n_validate_workflowreadValidate workflow by ID. Checks nodes, connections, expressions. Returns errors/warnings/suggestions.
ownerreadRepository owner username
reporeadRepository name
research_agentreadDeep research specialist
research_specialistreadExpert researcher that searches multiple sources and synthesizes information. Use for detailed research tasks.
search_nodesreadSearch n8n nodes by keyword with optional real-world examples. Pass query as string. Example: query=
search_templatesreadSearch templates with multiple modes. Use searchMode=
titlereadIssue title
tools_documentationwriteGet documentation for n8n MCP tools. Call without parameters for quick start guide. Use topic parameter to get documentation for specific tools. Use depth=
validate_nodereadValidate n8n node configuration. Use mode=
validate_workflowreadFull workflow validation: structure, connections, expressions, AI tools. Returns errors/warnings/fixes. Essential before deploy.
writer_agentreadContent writing specialist
wrongNamereadUser identifier

Details

Source
czlonkowski/n8n-mcp
npm
n8n-mcp-ui-apps@1.0.0
Transports
sse · stdio · streamable-http
Credentials it reads
AUTH_RATE_LIMIT_MAXAUTH_RATE_LIMIT_WINDOWAUTH_TOKENAUTH_TOKEN_FILEDATABASE_PASSWORDMCP_AUTH_TOKENN8N_API_KEYN8N_MCP_ACCESS_TOKENN8N_MCP_LLM_API_KEYOPENAI_API_KEYSECRET_API_KEYSUPABASE_ANON_KEY
License
MIT
Stars
22,905 · pushed 0d ago

Trust audit

Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (9 observation(s))
Network
declared (11 observation(s))
Shell
declared (10 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
scripts/test-code-node-enhancements.ts:78
jsCode: 'const result = eval(item.json.code);\nreturn [{json: {result}}];'
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/database/database-adapter.ts:11
exec(sql: string): void;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/database/database-adapter.ts:199
exec(sql: string): void {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/database/database-adapter.ts:278
exec(sql: string): void {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/services/config-validator.ts:628
if (language !== 'python' && (code?.includes('eval(') || code?.includes('exec('))) {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
src/utils/ssrf-protection.ts:60
'169.254.169.254', // AWS/Azure metadata
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
data/skills/n8n-expression-syntax/SKILL.md:72
Access environment variables:
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
data/skills/n8n-multi-instance/SKILL.md:163
1. switch → A;  read the source (n8n_manage_credentials get / n8n_get_workflow)
Why it matters. asks the agent to read credentials
MEDIUMInventory / provenance · inv.binary · CWE-1104
data/nodes.db-shm
nodes.db-shm
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
src/scripts/sanitize-templates.ts:76
console.log(`   - Found: ${token.substring(0, 20)}...`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
src/utils/template-sanitizer.ts:49
logger.info(`Added problematic token to sanitizer: ${token.substring(0, 10)}...`);
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
Dockerfile:125
CMD sh -c 'curl -f http://127.0.0.1:${PORT:-3000}/health || exit 1'
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
Dockerfile.railway:105
CMD curl -f http://127.0.0.1:${PORT:-3000}/health || exit 1
MEDIUMHard-coded secrets · secret.anthropic · CWE-798, CWE-321
tests/unit/services/credential-scanner.test.ts:133
const wf = makeWorkflow({ apiKey: 'sk-ant-abcdefghijklmnopqrstuvwxyz1234' });
MEDIUMHard-coded secrets · secret.aws · CWE-798, CWE-321
tests/unit/services/credential-scanner.test.ts:67
const wf = makeWorkflow({ accessKeyId: 'AKIA1234567890ABCDEF' });
MEDIUMHard-coded secrets · secret.aws · CWE-798, CWE-321
tests/unit/services/credential-scanner.test.ts:268
id: 'AKIA1234567890ABCDEF',
MEDIUMHard-coded secrets · secret.aws · CWE-798, CWE-321
tests/unit/services/credential-scanner.test.ts:511
const wf = makeWorkflow({ key: 'AKIA1234567890ABCDEF' });
MEDIUMHard-coded secrets · secret.aws · CWE-798, CWE-321
tests/unit/services/credential-scanner.test.ts:525
parameters: { key: 'AKIA1234567890ABCDEF' },
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
tests/unit/telemetry/workflow-sanitizer.test.ts:1309
const jsCode = 'const base = "https://host:"; notify("[email protected]"); const db = "postgres://u:p@h/db";';
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/flexible-instance-security-advanced.test.ts:233
apiKey: 'sk_live_SUPER_SECRET_API_KEY_123456789',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/services/credential-scanner.test.ts:55
const wf = makeWorkflow({ apiKey: 'sk-proj-abc123def456ghi789jkl0' });
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/services/credential-scanner.test.ts:61
const wf = makeWorkflow({ apiKey: 'sk-abcdefghij1234567890abcdefghij' });
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/services/credential-scanner.test.ts:73
const wf = makeWorkflow({ token: 'ghp_1234567890abcdefghijklmnopqrstuvwxyz' });
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/services/credential-scanner.test.ts:93
const wf = makeWorkflow({ token: 'xoxb-1234567890-abcdefghij' });
MEDIUMHard-coded secrets · secret.github · CWE-798, CWE-321
tests/unit/services/credential-scanner.test.ts:73
const wf = makeWorkflow({ token: 'ghp_1234567890abcdefghijklmnopqrstuvwxyz' });

Gates applied: no_behavioural_pass.

Audited 2026-09-17 · audit v0.4.0 · source sha 38edc3a55958 · full audit: observations/trust-audit/mcp-server/czlonkowski__n8n-9.json · Report an issue or request a re-scan

Audit history

DateSourceVerdictGradeScoreChange
2026-09-1738edc3a55958BLOCKF29first audit

Alternatives

Other servers in the same categories, safer ones first.

Questions

What is the N8n MCP server?

A MCP for Claude Desktop / Claude Code / Windsurf / Cursor to build n8n workflows for you

What tools does N8n expose?

57 in total: 47 read-only, 7 that write, and 3 that can delete or overwrite (n8n_delete_workflow, n8n_executions, n8n_manage_credentials). Every one is listed on this page with its risk.

Is N8n safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (29/100) and found 8 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 3 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does N8n need?

It reads AUTH_RATE_LIMIT_MAX, AUTH_RATE_LIMIT_WINDOW, AUTH_TOKEN, AUTH_TOKEN_FILE, DATABASE_PASSWORD, MCP_AUTH_TOKEN, N8N_API_KEY, N8N_MCP_ACCESS_TOKEN, N8N_MCP_LLM_API_KEY, OPENAI_API_KEY, SECRET_API_KEY and SUPABASE_ANON_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does N8n run?

It speaks sse, stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as n8n-mcp-ui-apps at 1.0.0.

How current is this page?

The grade is for one exact copy of the source (38edc3a55958), read on 2026-09-17. The repository is watched and re-audited when it changes.

Provenance: OBSERVED · read 2026-09-17 · job trust-audit-2026-09-17