n8n工作流管理服务器

一个MCP(模型上下文协议)服务器,使Claude能够与自托管的n8n工作流交互,提供列出、检查和监控工作流的功能。

  • by Jaskey15
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 Jaskey15/n8n-mcp-server

使用说明

n8n MCP服务器

MCP(模型上下文协议)服务器,使Claude能够与您的自托管n8n工作流进行交互。此服务器提供直接从Claude列出、检查和监视n8n工作流的工具。

特性

  • list_workflows -获取所有工作流及其ID、名称和活动状态
  • get_workflow -检索完整的工作流定义,包括节点和连接
  • getexecutions -查看最近的执行历史记录,包括状态和错误详细信息

先决条件

  • Node.js 18或更高版本
  • 启用了API访问的自托管n8n实例
  • n8n API密钥

安装

  1. 克隆此存储库:
git clone <repository-url>
cd n8n-mcp-server
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

配置

获取n8n API密钥

  1. 登录您的n8n实例
  2. 前往设置→ API
  3. 如果没有,请单击“创建API密钥”
  4. 复制API密钥

设置环境变量

创建 .env 在项目根目录中创建文件或直接设置环境变量:

N8N_URL=https://your-n8n-instance.com
N8N_API_KEY=your-api-key-here

重要提示:

  • 这 N8N_URL 应该是您的完整n8n实例URL(例如。, https://n8n.example.com)
  • 不要在URL中包含尾随斜线
  • 确保API密钥的安全,并且永远不要将其提交给版本控制

配置Claude桌面

将此服务器添加到您的Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

窗户: %APPDATA%\Claude\claude_desktop_config.json

Linux: ~/.config/Claude/claude_desktop_config.json

添加以下配置:

{
  "mcpServers": {
    "n8n": {
      "command": "node",
      "args": ["/absolute/path/to/n8n-mcp-server/build/index.js"],
      "env": {
        "N8N_URL": "https://your-n8n-instance.com",
        "N8N_API_KEY": "your-api-key-here"
      }
    }
  }
}

替换 /absolute/path/to/n8n-mcp-server 与这个项目的实际路径。

用法

配置后,重新启动Claude Desktop。现在,您可以让Claude与您的n8n工作流进行交互:

示例提示

  • “列出我的所有n8n工作流”
  • “显示工作流ID abc123的详细信息”
  • “获取我的数据同步工作流的最近执行历史记录”
  • “我有哪些当前处于活动状态的工作流?”
  • “检查我的Slack通知工作流是否已成功运行”

可用工具

1.列表_工作流

列出n8n实例中的所有工作流。

退货:

{
  "success": true,
  "count": 5,
  "workflows": [
    {
      "id": "1",
      "name": "My Workflow",
      "active": true,
      "createdAt": "2024-01-01T00:00:00.000Z",
      "updatedAt": "2024-01-02T00:00:00.000Z",
      "tags": []
    }
  ]
}

2.获取工作流

获取完整的工作流定义,包括所有节点和连接。

参数:

  • workflow_id (string,必填):要获取的工作流的ID

退货:

{
  "success": true,
  "workflow": {
    "id": "1",
    "name": "My Workflow",
    "active": true,
    "nodes": [...],
    "connections": {...},
    "settings": {...}
  }
}

3.get_executions

获取工作流的最近执行历史记录。

参数:

  • workflow_id (字符串,必填):工作流的ID
  • limit (number,可选):要返回的执行次数(默认值:10,最大值:100)

退货:

{
  "success": true,
  "workflowId": "1",
  "count": 3,
  "executions": [
    {
      "id": "exec1",
      "workflowId": "1",
      "finished": true,
      "mode": "manual",
      "startedAt": "2024-01-01T00:00:00.000Z",
      "stoppedAt": "2024-01-01T00:01:00.000Z",
      "status": "success",
      "error": null
    }
  ]
}

局限性

此MCP服务器专注于 工作流检查和监控,而不是执行。

此服务器的功能:

  • ✅ 列出并检查工作流配置
  • ✅ 监控执行历史和状态
  • ✅ 通过检查执行数据调试工作流问题
  • ✅ 了解工作流结构(节点、连接、设置)

此服务器不做什么:

  • ❌ 以编程方式触发工作流执行
  • ❌ 修改工作流配置
  • ❌ 创建或删除工作流

为什么没有工作流触发?

工作流应通过其本机触发器类型触发:

  • Webhooks: 将webhook URL用于HTTP触发的工作流
  • 手动触发器: 使用n8n UI中的“测试工作流”或“执行工作流”按钮
  • 计划触发因素: 在n8n中配置cron表达式
  • 其他触发因素: 使用n8n的内置触发机制

程序化工作流执行很复杂,因为不同的触发器类型需要不同的数据格式和处理。该服务器通过专注于检查和监控来保持简单可靠。

Claude使用示例

这是一个真实的对话,显示了MCP服务器的运行情况:

用户: “你能给我看看我所有的n8n工作流吗?”

克劳德: [使用list_workflows工具]

“您有5个工作流:

  1. “客户入职电子邮件”(ID:1,活动)
  2. “松弛通知管道”(ID:3,活动)
  3. “数据同步到Airtable”(ID:7,未激活)
  4. “周报生成器”(ID:12,活动)
  5. '测试工作流'(ID:15,未激活)”

用户: “显示Slack通知工作流的详细信息”

克劳德: [使用ID为3的get_workflow工具]

“Slack通知管道工作流有4个节点:

  1. Webhook触发器(监听/Webhook/lack警报)
  2. 筛选器节点(检查严重性是“高”还是“严重”)
  3. 设置节点(为Slack设置消息格式)
  4. Slack节点(发送到#警报通道)

工作流当前处于活动状态,将在收到对webhook URL的POST请求时触发。”


用户: “此工作流是否已成功运行?检查最近10次执行情况”

克劳德: [使用ID为3的get_executions工具,限制为10]

“Slack通知管道的最近执行历史:

✅ 8次成功执行 ❌ 2次执行失败

失败发生在2025年12月13日14:23和15:45。两者都在Slack节点上失败,错误为:“channel_not_found-channel#警报不存在”

建议:检查Slack工作区中是否存在#alerts频道,或更新工作流以使用其他频道。"

发展

建筑

npm run build

观看模式

npm run watch

发展模式

npm run dev

错误处理

服务器包括全面的错误处理:

  • 身份验证错误(401/403):API密钥无效或丢失
  • 未发现错误(404):工作流或资源不存在
  • 网络错误:n8n实例的连接问题
  • 无效参数:缺少或无效的工具参数

所有错误都以结构化格式返回,并带有清晰的消息。

安全注意事项

  • 永远不要将API密钥提交到版本控制
  • 使用环境变量或安全配置管理
  • 确保您的n8n实例在生产环境中使用HTTPS
  • 定期旋转API键
  • 如果可能,限制API密钥权限

故障排除

“N8N_URL环境变量是必需的”

确保您已设置 N8N_URL 在您的Claude Desktop配置中。

“身份验证失败”

请检查您的API密钥是否正确并具有必要的权限。

“找不到资源”

请验证工作流ID是否存在,以及您的API密钥是否有权访问该ID。

连接超时

确保您的n8n实例是可访问的,并且不在阻止请求的防火墙后面。

许可证

麻省理工学院

贡献

欢迎投稿!请随时提交拉取请求。