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。
[](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, 可观测性, 工作流引擎, 开发工具, 自动化攻击, 自动化运维