n8n_safety_status
Show n8n Manager safety settings, backup directory, audit log location, and whether the optional n8n-workflow-manager seam is configured and reachable.
无需输入参数。

io.github.ellmos-ai由 GitHub 账号 ellmos-ai 发布v0.1.21更新于 Nov 1, 2026
MCP server for n8n workflow management -- view, create, sync and manage workflows via AI.
本地 MCP 服务器,让助手在已配置的 n8n 服务器上列出、创建、更新、删除、启用工作流并做备份。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
参照 仓库 中的启动说明。
🇬🇧 English | 🇩🇪 Deutsch | 🇪🇸 Español | 🇯🇵 日本語 | 🇷🇺 Русский | 🇫🇷 Français | 🇨🇳 简体中文 | 🇮🇳 हिन्दी | العربية | বাংলা | Português
Part of the ellmos-ai family and the open-bricks umbrella.
[npm] [Tests] [MCP Tools] [Node.js] [Safety] [Security] [Third-Party] [Dependency Inventory: Plain Text] [Attribution: NOTICE] [Verified] [Last-Checked] [License: MIT] [LLM Ready] [Ecosystem: ellmos--ai] [Umbrella: open--bricks]
[!NOTE] For AI Assistants & LLMs: An
llms.txtindex file is available in the root directory for fast context ingestion, tool catalog references, and directory listings.
MCP (Model Context Protocol) server for managing n8n workflows via AI assistants like Claude, Cursor, and Windsurf.
The n8n Manager MCP Server operates as a local-first, stdio-connected bridge between AI development environments (Claude Code, Claude Desktop, Cursor, Windsurf) and local or remote n8n instances.
stdio) using JSON-RPC 2.0. It inherits the privileges of the process that launches it.servers.json are plaintext; config updates use a temporary file and rename.n8n_describe_nodes) without a network call. It does not expose full node schemas or required properties.
These diagrams show the intended operation order. Snapshots are attempted only when backup_before_mutations is enabled (default: true); if that attempt fails, the following n8n mutation request is not sent. Audit append errors propagate and can follow a successful remote mutation.
The import step creates a new workflow. It does not create a pre-import backup or return a rollback handle.
n8n-manager-mcpellmos-ai/n8n-manager-mcpellmos-ai-n8n-managerserver.json and mcpName metadata for io.github.ellmos-ai/n8n-manager-mcp; some ecosystem directories still expose the legacy io.github.lukisch/n8n-manager-mcp name until their indexes refresh.n8n MCP server, n8n workflow management MCP, AI assistant n8n workflows, and ellmos-ai n8n-manager-mcp.
n8n mcp server claude codeai assistant n8n workflow managementlocal-first n8n mcp stdiosafe n8n automated workflow mutationn8n multi-server workflow sync mcpn8n describe nodes offline catalogn8n MCP stdio with configured server endpointsmodelcontextprotocol n8n typescript
These reference IDs group implementation areas; they are not external certifications or guarantees.
Add to claude_desktop_config.json:
After installation, use these prompts in your AI assistant. Before registering a server, securely configure N8N_MANAGER_API_KEY and the matching N8N_MANAGER_SERVER_URL in the MCP host environment. Do not include the API key in a prompt or tool argument:
Add your n8n server:
"Add an n8n server profile named production at http://localhost:5678 using the already configured host credentials"
List workflows:
"Show me all workflows on my n8n server"
Inspect nodes offline:
"Show the action node types and descriptions from the bundled offline catalog"
Create a workflow:
"Create an n8n workflow that triggers on a webhook, fetches data from an API, and sends a Slack message"
Check executions:
"Show me the last 10 workflow executions on production"
Import a copy across environments:
"Export workflow 42 from staging and import a new inactive copy into production"
Note: n8n_import_workflow creates a new workflow; it does not create a pre-import backup or return a rollback handle. The copy stays inactive unless activation is requested.
Below is a step-by-step walkthrough of server configuration, offline catalog lookup, workflow mutation with backup, restore, and read-only behavior. Examples show tool-argument shapes and illustrative MCP text responses.
Before registering a new server, configure N8N_MANAGER_API_KEY and a matching N8N_MANAGER_SERVER_URL in the MCP host environment using the client's sensitive settings or an OS secret facility. Never pass the API key in a chat prompt or tool argument. The local server profile stores the key as plaintext; new files request mode 0600 on POSIX, while Windows access follows the directory ACL.
Call n8n_add_server:
Illustrative MCP text response (the server name and URL follow the request):
Call n8n_ping_server:
Illustrative MCP text response (response time varies):
n8n_describe_nodes filters the bundled catalog by category. It returns text descriptions, not full node schemas or a selected list of node names.
Call n8n_describe_nodes:
Illustrative response text:
When backup_before_mutations is enabled (default: true), n8n_update_workflow saves a timestamped snapshot before sending the update to n8n. This example shows the argument shape only: replace the placeholder with the complete, JSON-serialized updated workflow.
Call n8n_update_workflow:
Illustrative MCP text response when the default backup is enabled:
To overwrite workflow 42, pass its backup path and target_workflow_id. With backup_before_mutations enabled, the current target is backed up before it is overwritten. Omitting target_workflow_id creates a new workflow instead.
Call n8n_restore_workflow:
Illustrative MCP text response when the pre-restore backup is enabled:
If audit_log is enabled (default: true), a blocked mutation is appended to the audit log; an append error can make the tool call fail. If N8N_MANAGER_READ_ONLY=1 is set in the MCP host environment, it is a monotonic ceiling: n8n_set_safety_mode cannot disable it. Remove the environment variable and restart the MCP server to lift that ceiling. The runtime's generic text below still mentions n8n_set_safety_mode; that suggestion does not apply while the environment ceiling is active.
Call n8n_delete_workflow:
Illustrative runtime text response when read-only mode is active:
n8n itself keeps no record of why a workflow changed. The sibling project
n8n-workflow-manager does: it
stores versions, a mandatory decision per mutation, and a sync history in a local
database. n8n_manager_history makes that record readable from this MCP server.
The seam is opt-in and read-only:
N8N_MCP_MANAGER_URL, nothing changes — every tool talks to n8n directly, as before.http://127.0.0.1:8100), n8n_manager_history reads from the
running manager. Omit workflow_id to list the manager's workflows, pass it for full history.n8n_safety_status reports the measured state of the seam (configured, reachable,
manager version), not just the environment variable.Setup: pip install n8n-workflow-manager, then n8n-manager serve (binds 127.0.0.1:8100).
The manager API is unauthenticated and binds to loopback by default; its host is configurable.
A non-loopback URL is flagged in n8n_safety_status.
Numeric guardrails are part of the MCP schemas: workflow, execution, and
backup list limits are finite positive integers from 1 to 1000 (the existing
defaults remain 100, 20, and 20), and workflow connection from_output/
to_input indices are finite non-negative integers from 0 to 1000. Invalid
values are rejected by the MCP input schemas or workflow validation before the corresponding operation proceeds. Configuration loading may access the local filesystem before a mutation check.
Server connections and safety settings are stored in ~/.n8n-manager-mcp/servers.json.
Set N8N_MANAGER_API_KEY and N8N_MANAGER_SERVER_URL in the MCP host process environment before starting the server. Use your client's sensitive user configuration or an OS secret facility when available; check whether your client writes environment values to a plaintext configuration file. N8N_MANAGER_SERVER_URL must match the URL passed to n8n_add_server (trailing slashes are normalized). Do not include an API key in a chat prompt or tool argument.
n8n_add_server reads the key from the host environment, validates it, and saves it with the server profile in local servers.json. The file is plaintext, not encrypted; new files request mode 0600 on POSIX, while Windows access follows the directory ACL. The MCP tool schema, outgoing tool results, and server list contain no configured key value. API calls send the key in the X-N8N-API-KEY header to the configured n8n URL; redirects are not followed. Use HTTPS for remote n8n servers. Echoed keys in successful and failed upstream responses are redacted at the MCP output and audit boundaries, including JSON object keys and workflow IDs.
Existing servers.json profiles keep working. Updating a profile at the same URL preserves its stored key even when an environment key is present. To rotate a key or change a profile URL, set the new key and matching URL in the host environment, restart the MCP server, then call n8n_add_server with rotate_key: true. A URL change without rotation is refused. For multiple servers, configure and add each server with its own environment key/URL pair, restarting the MCP process between pairs; already stored keys are not silently replaced. After onboarding, the environment pair can be removed on restart because the key remains in the local profile. Remove any old prompts or client calls that supplied api_key as a tool argument.
Safety defaults:
backup_before_mutations: true saves workflow JSON before update, delete, activate/deactivate, and overwrite-restore operations.audit_log: true appends mutation outcomes to ~/.n8n-manager-mcp/audit.log.read_only: false can be enabled with n8n_set_safety_mode or N8N_MANAGER_READ_ONLY=1.
The environment flag is an enforcement ceiling: while it is enabled,
persisted settings and n8n_set_safety_mode cannot turn read-only mode off.~/.n8n-manager-mcp/backups/ and can be listed/restored with the backup tools. Backup path segments are sanitized and real-path/symlink checks are used in backup, listing, and restore handling. Listing exposes regular .json backups. These checks are scoped to those operations, not a general filesystem guarantee.n8n_add_server validates server connection input before saving: URLs must be http or https base URLs without embedded credentials, query strings, or fragments, and API keys must not contain whitespace.n8n_add_server default semantics are explicit: the first server becomes default; an update without is_default preserves the existing flag; true promotes the server; false intentionally removes its flag, after which default lookup falls back to the first configured server.
The test suite covers URL building, server input validation, server management, safety settings, backup path handling, workflow JSON construction, export/import validation, i18n language packs, repository hygiene, and error handling. The manager seam is tested against a local stub HTTP server, including its refusal to fall back to a direct n8n query.
The recorded verification covers Windows locally and Ubuntu Linux in GitHub Actions; GitHub Actions runs build, test, and npm package checks on Node.js 20 and 22. The commit-specific local record is kept in CHANGELOG.md. The smoke runner starts dist/index.js through the MCP SDK client, verifies all 19 tool registrations and secret-free server setup with synthetic credentials, and uses loopback stubs to test key redaction and redirect refusal. It does not contact a real n8n server.
Contributions are welcome! Please review CONTRIBUTING.md and our CODE_OF_CONDUCT.md for full guidelines, including:
INV-LOCAL-01 to INV-SLA-10): stdio transport, read-only mode, configurable backups and audit logging, validation, and the published security policy; see the documented scope and limits above.origin/main.SECURITY.md; coordinated disclosure contacts include [email protected] and [email protected].MIT
This MCP server is part of the ellmos-ai ecosystem — AI infrastructure, MCP servers, and intelligent tools.
Our partner organization open-bricks and sister suites bundle AI-native desktop applications and developer utilities:
This project is licensed under the MIT License with attribution declared in NOTICE. The dependency table below lists selected direct and development dependencies declared for this project. License details are provided in the repository inventory; this table does not claim continuous auditing or certify supply-chain security:
THIRD_PARTY_LICENSES.md.THIRD_PARTY_LICENSES.txt; it is not a runtime audit trail or privilege certification.
For marketing positioning, target persona definitions, governance invariant mappings, and the 3-phase discoverability roadmap, see MARKETING-LOG.txt.
See CHANGELOG.md for detailed version history, release notes, and past migration milestones.
Dieses Projekt ist eine unentgeltliche Open-Source-Schenkung im Sinne der §§ 516 ff. BGB. Die Haftung des Urhebers ist gemäß § 521 BGB auf Vorsatz und grobe Fahrlässigkeit beschränkt. Ergänzend gilt der Haftungsausschluss der MIT-Lizenz.
Nutzung auf eigenes Risiko. Keine Wartungszusage, keine Verfügbarkeitsgarantie, keine Gewähr für Fehlerfreiheit oder Eignung für einen bestimmten Zweck.
This project is an unpaid open-source donation under the MIT License. Liability is limited to intent and gross negligence (§ 521 German Civil Code). Use at your own risk. No warranty, no maintenance guarantee, no fitness-for-purpose assumed.
As stated in SECURITY.md, the published security policy makes these response, triage, and remediation commitments:
INV-SLA-10).These are policy commitments; this document does not report measured response performance.
来源:README.md,提交 c32bef4
Show n8n Manager safety settings, backup directory, audit log location, and whether the optional n8n-workflow-manager seam is configured and reachable.
无需输入参数。
Read version history, recorded decisions, and sync history from a running n8n-workflow-manager. Requires the N8N_MCP_MANAGER_URL environment variable; without it, this MCP talks to n8n directly and no such history exists. Read-only.
limitworkflow_idConfigure local safety settings: read-only mode, backup-before-mutation, and audit logging.
audit_logread_onlybackup_before_mutationsList all workflows on an n8n server. Returns workflow names, IDs, active status, and node counts.
limitserver_nameGet detailed information about a specific n8n workflow including all nodes, connections, and settings.
server_nameworkflow_id必填Create a new n8n workflow. Provide the full workflow JSON including nodes and connections.
name必填nodes必填activateconnectionsserver_nameUpdate an existing n8n workflow. Send the full updated workflow JSON.
server_nameworkflow_id必填workflow_json必填Delete a workflow from an n8n server. By default, a JSON backup is saved before deletion.
server_nameworkflow_id必填Activate or deactivate an n8n workflow.
active必填server_nameworkflow_id必填List recent workflow executions on an n8n server. Shows status, timing, and errors.
limitstatusserver_nameworkflow_idAdd or update an n8n server connection. For a new profile or key rotation, set N8N_MANAGER_API_KEY and N8N_MANAGER_SERVER_URL in the MCP host environment. Existing keys are preserved unless rotate_key is true.
url必填name必填is_defaultrotate_keyList all configured n8n server connections.
无需输入参数。
Test the connection to an n8n server.
server_nameRemove an n8n server from the configuration.
server_name必填Export a workflow from an n8n server as JSON. Returns the complete workflow definition that can be imported into another n8n instance.
server_nameworkflow_id必填List local workflow backups created before n8n mutations.
limitserver_nameworkflow_idRestore a workflow from a local backup. By default creates a new workflow; pass target_workflow_id to overwrite an existing workflow.
activatebackup_path必填server_nametarget_workflow_idImport a workflow JSON onto an n8n server. Takes a full n8n workflow JSON and creates it on the server.
activateserver_nameworkflow_json必填Get information about common n8n node types. Useful for understanding which nodes to use when building workflows.
category已满足适用检查项的 90%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
+========================================================================================================+| [VIEW 1: CALLER RUNTIMES & AGENT ECOSYSTEM] || Claude Code CLI | Claude Desktop | Cursor IDE / Windsurf | Antigravity / Gemini / Codex || (JSON-RPC 2.0 Stdio) | (stdio MCP Client) | (Dev Environments) | (Autonomous Orchestrator Swarms) |+===================================================+====================================================+ | v+========================================================================================================+| [VIEW 2: N8N-MANAGER-MCP CORE ENGINE & MUTATION CHECKS] || +----------------------------------------------------------------------------------------------------+ || | Tool Dispatcher (19 Registered MCP Tools: CRUD, Execution Inspect, Backup/Restore, Node Catalog) | || +----------------------------------------------------------------------------------------------------+ || | Read-Only Check: persisted setting or N8N_MANAGER_READ_ONLY=1 process ceiling | || | Input Bounds and Backup-Path Checks (scope limited to the implemented handlers) | || | Multi-Instance Routing: configured profiles and endpoints | || | Bundled Offline Node Catalog: Common Node Types & Descriptions (INV-NODE-09) | || +----------------------------------------------------------------------------------------------------+ |+===================================================+====================================================+ | v+========================================================================================================+| [VIEW 3: RUNTIME PERSISTENCE, BACKUP SNAPSHOTS & LOCAL AUDIT LOG] || +------------------------------------+----------------------------------+----------------------------+ || | Conditional Workflow Snapshots | Local Append-Only Audit Log | Multi-Server Config Store | || | ~/.n8n-manager-mcp/backups/ | ~/.n8n-manager-mcp/audit.log | ~/.n8n-manager-mcp/ | || | ({server}/{id}-{timestamp}-{reason}.json) | (Timestamped JSON entries) | (servers.json; POSIX 0600 requested) | || +------------------------------------+----------------------------------+----------------------------+ |+===================================================+====================================================+ | v+========================================================================================================+| [VIEW 4: STDIO TRANSPORT, CONFIGURED ENDPOINTS & LAUNCHER PRIVILEGES] || Inherits launcher process privileges | Configured n8n/manager requests; interactive update check may run || No MCP listening port (stdio transport) | Published security policy and reporting contacts |+========================================================================================================+flowchart TD Client["AI Client (Claude Code / Desktop / Cursor / Windsurf)"] -->|"MCP Stdio Protocol (JSON-RPC 2.0)"| Router["Tool Router (19 Tools)"] subgraph MCPServer["n8n Manager MCP Server (Local Stdio Process)"] Router --> Safety["Mutation Checks (Read-Only Gate & Backup-Path Checks)"] Safety --> Backup["Conditional Pre-Mutation Snapshot"] Safety --> MultiServer["Multi-Server Manager"] Safety --> Catalog["Offline Node Catalog (n8n_describe_nodes)"] Router --> Audit["Local Audit Append"] end MultiServer -->|"REST API (API Key / Auth Header)"| LocalInst["Configured n8n Instance (local or remote URL)"] MultiServer -->|"REST API (HTTPS / Token)"| CloudInst["Remote / Cloud n8n Instance"] Backup --> BackupFS[("Backups (~/.n8n-manager-mcp/backups/)")] Audit --> AuditFS[("Audit Log (~/.n8n-manager-mcp/audit.log)")]sequenceDiagram autonumber actor AI as AI Assistant (Claude / Cursor) participant MCP as n8n-manager-mcp Router participant Safety as Safety & Read-Only Gate participant Snapshot as Backup Engine participant Store as Local Storage (~/.n8n-manager-mcp) participant N8N as n8n REST API Instance participant Audit as Local Audit Logger
AI->>MCP: Call n8n_update_workflow or n8n_delete_workflow MCP->>Safety: Check read-only enforcement alt Read-only active (INV-READ-02) opt audit_log enabled (default true) Safety->>Audit: Append blocked mutation attempt end Safety-->>AI: Return text explaining that the mutation is blocked (or an error if audit append fails) else Mutation permitted opt backup_before_mutations enabled (default true) Safety->>Snapshot: Trigger pre-mutation snapshot (INV-BACK-03) Snapshot->>N8N: GET /workflows/{id} N8N-->>Snapshot: Current workflow JSON Snapshot->>Store: Save ~/.n8n-manager-mcp/backups/{server}/{id}-{timestamp}-{reason}.json Snapshot-->>Safety: Backup path end Safety->>N8N: PUT /workflows/{id} or DELETE /workflows/{id} N8N-->>Safety: Mutation result opt audit_log enabled (default true) Safety->>Audit: Append structured outcome to audit log (INV-AUDIT-04) end Safety-->>AI: Return text; include backup path when a backup was saved endsequenceDiagram autonumber actor AI as AI Assistant (Claude / Cursor) participant MCP as n8n-manager-mcp Router participant Staging as Staging n8n Instance participant Prod as Production n8n Instance participant Audit as Local Audit Logger
Note over AI,MCP: Phase 1: Export from staging AI->>MCP: n8n_export_workflow(workflow_id=42, server_name=staging) MCP->>Staging: GET /workflows/42 Staging-->>MCP: Workflow JSON MCP-->>AI: Cleaned workflow JSON as text
Note over AI,MCP: Phase 2: Offline node-type catalog AI->>MCP: n8n_describe_nodes(category=action) MCP-->>AI: Text list of node types and descriptions
Note over AI,MCP: Phase 3: Import a new inactive copy AI->>MCP: n8n_import_workflow(workflow_json=serialized export, server_name=production, activate=false) MCP->>Prod: POST /workflows Prod-->>MCP: Created workflow JSON with a new ID; inactive opt audit_log enabled (default true) MCP->>Audit: Append import outcome (INV-AUDIT-04) end MCP-->>AI: Text response with the new workflow ID; no rollback handle{ "mcpServers": { "n8n-manager": { "command": "npx", "args": ["-y", "n8n-manager-mcp"] } }}claude mcp add --scope user n8n-manager npx -y n8n-manager-mcpnpm install -g n8n-manager-mcp{ "name": "staging", "url": "http://127.0.0.1:5678", "is_default": true}Server "staging" added (http://127.0.0.1:5678). Set as default.{ "server_name": "staging"}Server "staging" (http://127.0.0.1:5678) is reachable. Response time: <N>ms{ "category": "action"}n8n Node Types (action):
[ACTION] n8n-nodes-base.httpRequest Name: HTTP Request Make HTTP requests. Params: url, method, headers, body
[ACTION] n8n-nodes-base.emailSend Name: Send Email Send emails via SMTP. Params: fromEmail, toEmail, subject, text
[ACTION] n8n-nodes-base.slack Name: Slack Send messages to Slack channels
[ACTION] n8n-nodes-base.telegram Name: Telegram Send messages via Telegram bot
[ACTION] n8n-nodes-base.googleSheets Name: Google Sheets Read/write Google Sheets data{ "workflow_id": "42", "server_name": "staging", "workflow_json": "<complete JSON-serialized updated workflow>"}Workflow 42 updated successfully on staging. Backup saved: <backup path>{ "backup_path": "<path returned by n8n_list_backups or a mutation response>", "server_name": "staging", "target_workflow_id": "42"}Workflow restored (overwritten) on staging: "Customer Webhook Ingest [v2]" (ID: 42). Pre-restore backup saved: <backup path>{ "workflow_id": "42", "server_name": "staging"}Blocked: n8n Manager is in read-only mode. Disable read_only via n8n_set_safety_mode before delete_workflow.npm installnpm run build # One-time buildnpm run dev # Watch modenpm start # Start servernpm test # Run test suite (vitest)npm run smoke # Start the built MCP server and verify tool discoverynpm test # Run all testsnpx vitest run # Same as abovenpx vitest --watch # Watch modenpm run smoke # Manual stdio MCP smoke test (requires npm run build first)