该项目提供了一个 MCP(模型上下文协议)服务器,用于管理 n8n 工作流。它允许您通过 Claude AI 和 Cursor IDE 中可用的一系列工具来创建、更新、删除、激活和停用工作流。
请注意,如果您不限制 MCP 动作的权限,可能会删除您的工作流
关键特性:
您可以直接从 npm 安装该包:
# 全局安装
npm install -g @kernel.salacoste/n8n-workflow-builder
# 或作为本地依赖项
npm install @kernel.salacoste/n8n-workflow-builder
安装后,您需要配置环境变量(见步骤 3)。
或者,您可以从 GitHub 克隆仓库:
git clone https://github.com/salacoste/mcp-n8n-workflow-builder.git
然后导航到项目目录:
cd mcp-n8n-workflow-builder
使用 npm 安装必要的依赖项:
npm install
您有两个配置选项:
在项目根目录中创建一个 .config.json 文件以管理多个 n8n 环境:
{
"environments": {
"production": {
"n8n_host": "https://n8n.example.com/api/v1/",
"n8n_api_key": "n8n_api_key_for_production"
},
"staging": {
"n8n_host": "https://staging-n8n.example.com/api/v1/",
"n8n_api_key": "n8n_api_key_for_staging"
},
"development": {
"n8n_host": "http://localhost:5678/api/v1/",
"n8n_api_key": "n8n_api_key_for_development"
}
},
"defaultEnv": "development"
}
在项目根目录中创建一个 .env 文件,包含以下变量:
N8N_HOST=https://your-n8n-instance.com/api/v1/
N8N_API_KEY=your_api_key_here
注意: 如果未找到 .config.json,系统会自动回退到 .env 配置,确保向后兼容性。
如果您是全局安装的,可以使用以下命令运行服务器:
n8n-workflow-builder
或者使用 JSON-RPC 模式:
n8n-workflow-builder --json-rpc
如果您克隆了仓库或作为本地依赖项安装,使用以下命令:
构建项目:
npm run build
以独立模式启动 MCP 服务器:
npm start
以 JSON-RPC 模式启动进行测试:
npm run start -- --json-rpc
服务器将启动并根据模式接受通过 stdio 或 JSON-RPC 的请求。
要与 Claude 应用集成,您需要创建一个配置文件 cline_mcp_settings.json。您可以复制 cline_mcp_settings.example.json 并编辑它:
cp cline_mcp_settings.example.json cline_mcp_settings.json
然后编辑文件,提供正确的环境变量值:
{
"n8n-workflow-builder": {
"command": "node",
"args": ["path/to/your/project/build/index.js"],
"env": {
"N8N_HOST": "https://your-n8n-instance.com/api/v1/",
"N8N_API_KEY": "your_api_key_here",
"MCP_PORT": "58921"
},
"disabled": false,
"alwaysAllow": [
"list_workflows",
"get_workflow",
"list_executions",
"get_execution"
],
"autoApprove": [
"create_workflow",
"update_workflow",
"activate_workflow",
"deactivate_workflow",
"delete_workflow",
"delete_execution"
]
}
}
重要注意事项:
MCP_PORT 参数是可选的,但建议使用以避免端口冲突cline_mcp_settings.json,因为它包含您的个人访问凭据以下工具可通过 MCP 协议获得:
新于 v0.8.0:所有 MCP 工具现在支持可选的 instance 参数以指定要针对哪个 n8n 环境:
{
"name": "list_workflows",
"arguments": {
"instance": "production"
}
}
instance 参数,则使用默认环境.config.json 文件中定义.env),忽略实例参数所有工具都经过测试和优化,适用于 n8n 版本 1.82.3。使用的节点类型和 API 结构与此版本兼容。
当使用 n8n 版本 1.82.3 时,请注意以下重要要求:
scheduleTrigger(推荐用于自动化)webhook(用于 HTTP 触发的工作流)activate_workflow 工具在检测不到触发节点时自动添加 scheduleTrigger 节点manualTrigger 节点类型不被 n8n API v1.82 识别为有效触发activate_workflow 工具实现了对触发节点的智能检测,并添加必要的属性以确保与 n8n API 兼容。
在使用 n8n 版本 1.82.3 进行测试时,我们发现了一些用户应了解的 API 限制:
n8n API 对工作流激活有严格的强制要求,这些要求并未明确记录:
状态:400
错误:工作流没有开始节点 - 至少需要一个触发器、轮询器或 webhook 节点
影响:
manualTrigger 节点不被视为有效触发group: ['trigger'] 属性到 manualTrigger 也无法解决问题我们的解决方案:
activate_workflow 函数自动检测缺失的触发节点scheduleTrigger当更新已存在的标签时,API 返回一个 409 冲突错误:
状态:409
错误:已存在同名标签
影响:
我们的解决方案:
执行 API 对某些触发类型有限制:
建议:
对于需要通过 API 执行的工作流,请使用带有所需间隔设置的 scheduleTrigger。
服务器提供了以下资源以更有效地访问上下文:
服务器通过提示系统提供预定义的工作流模板:
每个提示都有可以在生成工作流时自定义的变量,例如工作流名称、计划表达式、webhook 路径等。
如果您当前使用的是单实例设置(使用 .env),并且想要迁移到多实例:
创建 .config.json,包含您现有的配置:
{
"environments": {
"default": {
"n8n_host": "https://your-existing-n8n.com/api/v1/",
"n8n_api_key": "your_existing_api_key"
}
},
"defaultEnv": "default"
}
根据需要添加其他环境:
{
"environments": {
"default": {
"n8n_host": "https://your-existing-n8n.com/api/v1/",
"n8n_api_key": "your_existing_api_key"
},
"staging": {
"n8n_host": "https://staging-n8n.com/api/v1/",
"n8n_api_key": "staging_api_key"
}
},
"defaultEnv": "default"
}
保留您的 .env 文件以确保向后兼容性(可选)
在需要时使用实例参数调用 MCP
// 列出默认环境中的工作流
await listWorkflows();
// 列出特定环境中的工作流
await listWorkflows("production");
// 在预发布环境中创建工作流
await createWorkflow(workflowData, "staging");
您现在可以在与 Claude 的对话中指定要针对哪个 n8n 实例:
在 examples 目录中,您会找到设置和使用 n8n 工作流构建器与 Claude 应用的示例和说明:
您可以使用提供的测试脚本来验证功能:
test-mcp-tools.js 脚本提供了对所有 MCP 工具的全面测试,以验证您的 n8n 实例。这是验证您的设置并确保所有功能正常工作的推荐方法。
# 运行所有测试
node test-mcp-tools.js
该脚本执行以下测试:
测试脚本创建临时测试工作流和标签,这些会在测试结束后自动清理。您可以通过修改脚本顶部的测试配置变量来自定义测试行为。
// test-mcp-tools.js 中的配置选项
const config = {
mcpServerUrl: 'http://localhost:3456/mcp',
healthCheckUrl: 'http://localhost:3456/health',
testWorkflowName: 'Test Workflow MCP',
// ... 其他选项
};
// 测试标志以启用/禁用特定测试套件
const testFlags = {
runWorkflowTests: true,
runTagTests: true,
runExecutionTests: true,
runCleanup: true
};
# 测试与 Claude 的基本功能
node test-claude.js
# 测试提示功能
node test-prompts.js
# 测试工作流的创建和管理
node test-workflow.js
npm run clean && npm run build
.env 和 cline_mcp_settings.json 文件中的环境变量是否正确设置。cline_mcp_settings.json 文件的位置。--json-rpc 标志运行,并使用 curl 发送测试请求到端口 3000。如果在日志中看到以下错误:
Error: listen EADDRINUSE: 地址已在使用中 :::3456
这意味着端口 3456(MCP 服务器的默认端口)已被另一个进程占用。要解决此问题:
选项 1:使用环境变量指定自定义端口
从版本 0.7.2 开始,您可以使用 MCP_PORT 环境变量指定自定义端口:
# 在您的代码中
MCP_PORT=58921 npm start
# 或直接运行
MCP_PORT=58921 node build/index.js
如果使用 Claude Desktop,请更新您的 cline_mcp_settings.json 文件以包含新端口:
{
"n8n-workflow-builder": {
"command": "node",
"args": ["path/to/your/project/build/index.js"],
"env": {
"N8N_HOST": "https://your-n8n-instance.com/api/v1/",
"N8N_API_KEY": "your_api_key_here",
"MCP_PORT": "58921"
},
// ...
}
}
选项 2:查找并终止使用该端口的进程
# 在 macOS/Linux 上
lsof -i :3456
kill -9 <PID>
# 在 Windows 上
netstat -ano | findstr :3456
taskkill /PID <PID> /F
关于版本 0.7.2+ 的注意事项:从版本 0.7.2 开始,服务器包含了改进的端口冲突处理,自动检测端口已被占用的情况,并优雅地继续操作而不抛出错误。这对于 Claude Desktop 尝