drzamarian/n8n-mcp-community

GitHub: drzamarian/n8n-mcp-community

面向自托管 n8n Community Edition 的安全优先型 MCP 服务器,通过 44 个受限工具实现默认只读、数据最小化和本地确定性内省的 AI 辅助管理。

Stars: 0 | Forks: 0

# n8n MCP Community **一个专注于安全的 Model Context Protocol server,专为自托管 n8n Community Edition 设计。** 通过 44 个经过严格限定的工具,将 MCP client 连接到 n8n,涵盖 workflows、executions、credentials、tags、users、diagnostics 和 instance metadata。该 server 默认离线启动,默认为只读模式,使用受支持的 n8n Public API,且绝不会将 workflow 数据发送给外部 AI provider。 [阅读合成的终端演示记录](docs/demo-transcript.md)。它展示了计划中的精确版本启动、44 个工具的清单,以及仅使用合成标识符和已记录输出格式的本地 Introspect diagnostics。 [![展示计划中的精确版本启动、MCP 清单和本地 Introspect 结果的动画合成终端演示](https://static.pigsec.cn/wp-content/uploads/repos/cas/22/22d1f631aea02c2c0dd9fd88b188d02845e9d17dcfc95d7f275f415528da5acd.gif)](docs/demo-transcript.md) ## 为什么要有这个项目 - **Community Edition 优先。** 发布面专为自托管 n8n Community Edition 设计,不会将仅限付费的功能展示为可用。 - **44 个实用工具,一份明确契约。** 每个工具都有受控的输入、已记录的副作用、MCP 安全注解和契约测试。 - **默认安全。** 只读模式是默认设置。写入以及破坏性或外部联系操作需要逐步升级的更强的权限门槛。 - **确定性的 Introspect。** `n8n_introspect` 运行本地的 23 条规则引擎;它不执行 workflows、不调用 agent,也不联系外部 model。 - **精准的 node 更新。** `n8n_update_node` 仅更改一个经过验证的 node 路径,同时保留 workflow 的其余部分,并披露 Public API 的非原子性限制。 - **真实的发现。** `n8n_list_node_types` 仅报告在可访问的 workflows 中观察到的类型。它不声称自己是完整的已安装 catalog。 - **数据最小化。** 通用公开工具不会返回 credential 值、原始 execution 值、pin data 和静态 workflow 数据。 ## 当前验证 当前的源码候选版本已通过以下验证: - 在真实的 stdio 上确有 **44 个工具**、**5 个 resources** 和 **4 个 prompts**; - 在 Node.js 22.23.1 和 24.18.0 上通过了 **271 项测试**并完成了完整的验证关卡; - Gitleaks、Semgrep、Trivy 以及生产/完整环境下的 `npm audit` 运行均未发现任何问题;所有三个源码扫描器均在 CI 中重现,并具有不可变的扫描器/action 身份; - 可重现的依赖许可证关卡覆盖了 224 个已安装的包路径; - 受限的同源 HTTP 契约和零请求策略拒绝测试; - 在配置了出口隔离、撤销密钥、清理且零残留的临时 n8n Community 2.30.5 和 2.30.7 实例上,测试了全部 44 个已编译工具的生命周期;以及 - 全新安装的 npm tarball,加上一个可逐字节重现的未签名 MCPB,包含相同的已编译 runtime 和完整的生产环境依赖声明。 发布仅通过经过审查的发布流程进行:仓库绑定的 MCPB 签名身份、人工生成的 artifact-baseline 回执、tag 范围内的受保护环境批准,以及一个经过外部签名的 MCPB 移交,并针对已审查的未签名候选版本逐字节验证。 ## 从源码快速开始 要求:Node.js 22 或 24、npm、一个自托管的 n8n Community Edition 实例,以及一个仅包含您所需权限的 n8n Public API key。 ``` npm ci npm run build ``` 配置您的 MCP client 运行已编译的 stdio 入口点: ``` { "mcpServers": { "n8n-community": { "command": "node", "args": ["/absolute/path/to/n8n-mcp-community/dist/index.js"], "env": { "N8N_API_URL": "https://n8n.example.com", "N8N_API_KEY": "replace-with-your-api-key", "N8N_MCP_MODE": "read-only" } } } } ``` 重启 MCP client 并列出工具。该 server 可以在没有 n8n credentials 的情况下初始化并公开其清单;只有在被调用时,已连接的工具才会验证 URL 和 API key。 该版本提供了一个适用于兼容 client 的已签名 MCPB,以及用于可移植性的精确版本 `npx` 配置。`@latest`、全局安装和 `curl | shell` 不是可重现的默认设置。有关发布策略和特定 client 的指导,请参阅[安装说明](docs/installation.md)。 ## 安全模式 | 模式 | 允许的内容 | 所需配置 | | --------- | ----------------------------------------------------------------- | ---------------------------------------------------------- | | Read-only | 仅限只读工具 | 默认,或 `N8N_MCP_MODE=read-only` | | Write | 不包含 unsafe 确认门槛的只读和变更工具 | `N8N_MCP_MODE=write` | | Unsafe | 所有工具 | `N8N_MCP_MODE=unsafe` 加上精确的每次调用确认 | Unsafe 模式是必要的,但还不够。每次 unsafe 调用还需要确认,例如 `DELETE wf_123`、`STOP exec_123` 或 `TEST cred_123`。 n8n API key 仍然是最终的上游权限边界。 对于 loopback URL,仅会自动接受纯 HTTP。非 loopback 的 HTTP 实例还需要 `N8N_ALLOW_INSECURE_HTTP=1`,这表示您接受在传输过程中暴露 API key 和数据的风险。 ## 工具目录 每个条目都链接到其完整的输入、输出、endpoint、兼容性、故障和安全参考。 ### Workflows | Tool | 模式 | 用途 | | ---------------------------------------------------------------------- | --------- | ---------------------------------------------------------------------- | | [`n8n_workflows_list`](docs/tools.md#n8n_workflows_list) | Read-only | 列出具有受限过滤器和分页的可访问 workflows。 | | [`n8n_workflows_get`](docs/tools.md#n8n_workflows_get) | Read-only | 读取一个 workflow,同时保留 pin 和静态数据值。 | | [`n8n_workflows_create`](docs/tools.md#n8n_workflows_create) | Write | 通过 Public API 创建一个已验证的 workflow。 | | [`n8n_workflows_update`](docs/tools.md#n8n_workflows_update) | Write | 防护并更新选定字段,同时保留省略的字段。 | | [`n8n_update_node`](docs/tools.md#n8n_update_node) | Write | 在具有非原子并发防护的情况下更改一个已验证的 node 属性。 | | [`n8n_workflows_delete`](docs/tools.md#n8n_workflows_delete) | Unsafe | 在精确确认后永久删除一个 workflow。 | | [`n8n_workflows_activate`](docs/tools.md#n8n_workflows_activate) | Unsafe | 在精确确认后激活一个 workflow。 | | [`n8n_workflows_deactivate`](docs/tools.md#n8n_workflows_deactivate) | Unsafe | 在精确确认后停用一个 workflow。 | | [`n8n_workflows_get_version`](docs/tools.md#n8n_workflows_get_version) | Read-only | 检索一个保留的历史 workflow 版本。 | | [`n8n_workflows_get_tags`](docs/tools.md#n8n_workflows_get_tags) | Read-only | 列出分配给一个 workflow 的 tags。 | | [`n8n_workflows_update_tags`](docs/tools.md#n8n_workflows_update_tags) | Write | 替换一个 workflow 的完整 tag 分配。 | | [`n8n_workflows_archive`](docs/tools.md#n8n_workflows_archive) | Unsafe | 在精确确认后归档一个 workflow。 | | [`n8n_workflows_unarchive`](docs/tools.md#n8n_workflows_unarchive) | Unsafe | 在精确确认后恢复一个已归档的 workflow。 | | [`n8n_workflows_diff`](docs/tools.md#n8n_workflows_diff) | Read-only | 比较 nodes 和 connections,不返回原始值。 | ### Executions | Tool | 模式 | 用途 | | -------------------------------------------------------------- | --------- | ------------------------------------------------------------------ | | [`n8n_executions_list`](docs/tools.md#n8n_executions_list) | Read-only | 列出 execution 元数据,提供不包含值的数据存在性摘要。 | | [`n8n_executions_get`](docs/tools.md#n8n_executions_get) | Read-only | 读取一个 execution 的元数据,不返回 workflow payloads。 | | [`n8n_executions_delete`](docs/tools.md#n8n_executions_delete) | Unsafe | 永久删除一个已保存的 execution。 | | [`n8n_executions_retry`](docs/tools.md#n8n_executions_retry) | Unsafe | 重试符合条件的已保存 execution。 | | [`n8n_executions_stop`](docs/tools.md#n8n_executions_stop) | Unsafe | 停止一个正在运行的 execution,并从经过验证的输入中绑定身份。 | ### Credentials | Tool | 模式 | 用途 | | ---------------------------------------------------------------- | --------- | ---------------------------------------------------------------------- | | [`n8n_credentials_create`](docs/tools.md#n8n_credentials_create) | Write | 创建一个 credential,但不返回其值。 | | [`n8n_credentials_delete`](docs/tools.md#n8n_credentials_delete) | Unsafe | 永久删除一个 credential。 | | [`n8n_credentials_schema`](docs/tools.md#n8n_credentials_schema) | Read-only | 读取一种 credential 类型的公开 schema。 | | [`n8n_credentials_list`](docs/tools.md#n8n_credentials_list) | Read-only | 列出在 n8n 2.30.5 和 2.30.7 上验证过的 credential 元数据。 | | [`n8n_credentials_get`](docs/tools.md#n8n_credentials_get) | Read-only | 读取一个 credential 的公开元数据。 | | [`n8n_credentials_update`](docs/tools.md#n8n_credentials_update) | Write | 更新 credential 元数据或值,不回显 secrets。 | | [`n8n_credentials_test`](docs/tools.md#n8n_credentials_test) | Unsafe | 测试一个已存储的 credential,可能会联系其外部 service。 | | [`n8n_credentials_usage`](docs/tools.md#n8n_credentials_usage) | Read-only | 在一个受限的 workflow 页面中查找确切的 credential-ID 引用。 | ### Tags | Tool | 模式 | 用途 | | -------------------------------------------------- | --------- | ------------------------------------------------ | | [`n8n_tags_list`](docs/tools.md#n8n_tags_list) | Read-only | 列出 workflow tags。 | | [`n8n_tags_get`](docs/tools.md#n8n_tags_get) | Read-only | 读取一个 tag。 | | [`n8n_tags_create`](docs/tools.md#n8n_tags_create) | Write | 以实时的 1-24 个字符限制创建一个 tag。 | | [`n8n_tags_update`](docs/tools.md#n8n_tags_update) | Write | 以实时的 1-24 个字符限制重命名一个 tag。 | | [`n8n_tags_delete`](docs/tools.md#n8n_tags_delete) | Unsafe | 永久删除一个 tag。 | ### Users | Tool | 模式 | 用途 | | ---------------------------------------------------- | --------- | ----------------------------------------------------------------- | | [`n8n_users_list`](docs/tools.md#n8n_users_list) | Read-only | 列出该 API key 可见的 users。 | | [`n8n_users_get`](docs/tools.md#n8n_users_get) | Read-only | 通过稳定的 ID 或精确的 email 读取一个 user。 | | [`n8n_users_create`](docs/tools.md#n8n_users_create) | Unsafe | 在精确确认 email 后邀请一个 member 或 admin。 | | [`n8n_users_delete`](docs/tools.md#n8n_users_delete) | Unsafe | 删除一个 API 兼容的 user,不支持不支持的转移声明。 | ### Diagnostics 和 instance metadata | Tool | 模式 | 用途 | | -------------------------------------------------------------------------- | --------- | ------------------------------------------------------------------- | | [`n8n_health`](docs/tools.md#n8n_health) | Read-only | 执行受限的同源健康检查。 | | [`n8n_insights_summary`](docs/tools.md#n8n_insights_summary) | Read-only | 读取官方 insights 摘要,支持可选的日期过滤器。 | | [`n8n_audit_generate`](docs/tools.md#n8n_audit_generate) | Unsafe | 在精确确认后生成 n8n 的 instance 安全审计。 | | [`n8n_search_workflows`](docs/tools.md#n8n_search_workflows) | Read-only | 按名称、node 类型或 tag 在本地搜索一个 workflow 页面。 | | [`n8n_get_node_docs`](docs/tools.md#n8n_get_node_docs) | Read-only | 读取四个不可变的离线 core-node 参考之一。 | | [`n8n_list_node_types`](docs/tools.md#n8n_list_node_types) | Read-only | 清点在受限的可访问 workflow 页面中观察到的 node 类型。 | | [`n8n_introspect`](docs/tools.md#n8n_introspect) | Read-only | 运行确定性的本地 workflow 和 execution diagnostics。 | | [`n8n_community_packages_list`](docs/tools.md#n8n_community_packages_list) | Read-only | 列出已安装的 community-package 元数据,不包含变更路径。 | ## Resources 和 prompts 该 server 还公开了五个静态 resources: - `n8n://usage-guide` - `n8n://node-docs/webhook` - `n8n://node-docs/code` - `n8n://node-docs/http-request` - `n8n://node-docs/if` 四个 prompts 指导安全的 workflow 创建、调试、优化和 credential 管理:`create-workflow`、`debug-workflow`、`optimize-work` 和 `manage-credentials`。 ## 一分钟了解安全模型 - 该 server 使用本地 stdio;它不公开入站 HTTP 监听器。 - 已连接的请求是同源的,并仅限于配置的 n8n host。 - 重定向被拒绝;请求和响应主体被限制在 2 MiB 以内。 - 通用输出经过验证、清理、限制在 256 KiB 以内,并包装为 `{ "data": ..., "redacted": boolean, "untrusted": true }`。 - 永远不会返回原始 credential 值和通用 execution payload 值。 - `n8n_introspect` 使用固定的本地规则,没有外部 model 的代码路径。 - 安全控制降低了风险;它们并不能使不受信任的 n8n 内容可以安全地执行或授予更广泛的 API-key 权限。 阅读完整的[安全模型](docs/security-model.md)并使用 [SECURITY.md](SECURITY.md) 私下报告漏洞。 ## 文档 - [文档地图](docs/README.md) - [入门指南](docs/getting-started.md) - [安装和升级](docs/installation.md) - [配置](docs/configuration.md) - [完整的工具参考](docs/tools.md) - [已测试的示例](docs/examples.md) - [常见问题解答](docs/faq.md) - [Client 配置](docs/clients.md) - [架构](docs/architecture.md) - [安全模型](docs/security-model.md) - [兼容性](docs/compatibility.md) - [故障排除](docs/troubleshooting.md) - [出处](docs/provenance.md) - [路线图](ROADMAP.md) - [更新日志](CHANGELOG.md) ## 开发 ``` npm ci npm run check npm run sbom > sbom.cdx.json ``` `npm run check` 验证格式、依赖项许可证/声明、严格的 TypeScript、所有测试、已编译的 runtime 以及文档清单一致性。 在提交更改之前,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 范围和非附属关系 本项目不隶属于、不受认可、也不受 n8n GmbH 赞助。 “n8n”仅用于标识与 n8n 产品和 Public API 的兼容性。该项目不分发 `n8n-nodes-base` catalog,也不使用浏览器 cookies、交互式 session 路由或 runtime 包下载来构建它。 v0.1.0 版本面有意排除了任意 workflow 执行、credential/workflow 转移、文件夹、数据表、beta 评估 endpoints 以及 execution 注释。有关保留在发布目标之外的注释提案,请参阅[路线图](ROADMAP.md)。 ## 许可证和维护者 该项目根据 [MIT License](LICENSE) 发布。第三方依赖保留其各自的许可证。 由 [Dr. Walter Zamarian Jr.](https://www.walterzamarianjr.com/) 创建和维护。
标签:API集成, LLM集成, MCP服务器, MITM代理, SOC Prime, 可观测性, 工作流引擎, 开发工具, 自动化攻击, 自动化运维