AI Agent遇见可视化自动化:当OpenClaw的MCP协议遇到n8n的节点式工作流,一切复杂的业务流程都变成了拖拽就能完成的事。
世界上有一种痛苦叫"业务流程变更了,代码得改三天"。n8n解决了可视化编排的问题,但AI Agent的逻辑怎么办?MCP(Model Context Protocol)的出现,让OpenClaw的Agent能力与n8n的工作流引擎实现了真正的双向通信。
这个组合能解决三大核心问题:
整体架构采用三层设计:
┌─────────────────────────────────────────────┐
│ OpenClaw Agent │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Skill A │ │ Skill B │ │ Skill C │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │
│ └──────────────┼──────────────┘ │
│ │ │
│ MCP Client │
└──────────────────────┼───────────────────────┘
│ MCP Protocol
┌──────────────────────┼───────────────────────┐
│ MCP Server │
│ (n8n-connector) │
└──────────────────────┼───────────────────────┘
│ REST/Webhook
┌──────────────────────┼───────────────────────┐
│ n8n Workflow Engine │
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │HTTP │─>│条件 │─>│执行 │─>│通知 │ │
│ │触发 │ │判断 │ │动作 │ │推送 │ │
│ └──────┘ └──────┘ └──────┘ └──────┘ │
└─────────────────────────────────────────────┘
# Docker方式(推荐) docker run -d --name n8n \ -p 5678:5678 \ -v ~/.n8n:/home/node/.n8n \ -e N8N_BASIC_AUTH_ACTIVE=true \ -e N8N_BASIC_AUTH_USER=admin \ -e N8N_BASIC_AUTH_PASSWORD=your-secure-password \ n8nio/n8n # npm方式 npm install -g n8n n8n start
首先创建一个连接n8n的MCP Server:
// mcp-n8n-server/index.ts
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
const N8N_BASE_URL = process.env.N8N_BASE_URL || 'http://localhost:5678';
const N8N_API_KEY = process.env.N8N_API_KEY;
const server = new McpServer({
name: 'n8n-workflow-connector',
version: '1.0.0',
});
// 工具1: 触发工作流
server.tool(
'trigger_workflow',
'触发指定的n8n工作流',
{
workflowId: { type: 'string', description: '工作流ID' },
data: { type: 'object', description: '传入数据' },
},
async ({ workflowId, data }) => {
const response = await fetch(
`${N8N_BASE_URL}/api/v1/workflows/${workflowId}/execute`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-N8N-API-KEY': N8N_API_KEY,
},
body: JSON.stringify({ data }),
}
);
const result = await response.json();
return { content: [{ type: 'text', text: JSON.stringify(result) }] };
}
);
// 工具2: 列出可用工作流
server.tool(
'list_workflows',
'列出所有可用的n8n工作流',
{},
async () => {
const response = await fetch(`${N8N_BASE_URL}/api/v1/workflows`, {
headers: { 'X-N8N-API-KEY': N8N_API_KEY },
});
const workflows = await response.json();
return { content: [{ type: 'text', text: JSON.stringify(workflows) }] };
}
);
// 工具3: 查询工作流执行历史
server.tool(
'get_execution_history',
'查询工作流的执行历史',
{
workflowId: { type: 'string', description: '工作流ID' },
limit: { type: 'number', description: '返回条数', default: 10 },
},
async ({ workflowId, limit }) => {
const response = await fetch(
`${N8N_BASE_URL}/api/v1/executions?workflowId=${workflowId}&limit=${limit}`,
{ headers: { 'X-N8N-API-KEY': N8N_API_KEY } }
);
const history = await response.json();
return { content: [{ type: 'text', text: JSON.stringify(history) }] };
}
);
const transport = new StdioServerTransport();
await server.connect(transport);
工作流节点设计:
[Webhook接收] ─> [OpenClaw AI分析] ─> [条件路由]
│
┌──────────┬──────────┬──┴──┐
│ │ │ │
[技术问题] [销售咨询] [投诉反馈] [其他]
│ │ │ │
[写入知识库] [CRM更新] [工单创建] [人工转接]
│ │ │ │
└──────────┴──────────┴─────┘
│
[飞书/邮件通知]
// Webhook节点 - 接收OpenClaw Agent的请求
{
"method": "POST",
"path": "/agent-webhook",
"authentication": "headerAuth",
"headerAuth": {
"name": "X-Agent-Token",
"value": "{{$env.AGENT_WEBHOOK_TOKEN}}"
}
}
// Function节点 - 格式化AI分析结果
const aiResult = $input.first().json.aiAnalysis;
const category = aiResult.category;
const confidence = aiResult.confidence;
if (confidence < 0.7) {
return [{ json: { category: 'manual_review', data: aiResult } }];
}
return [{ json: { category, data: aiResult } }];
在OpenClaw的Agent配置中添加MCP连接:
# openclaw.yaml 中的MCP配置
mcp:
servers:
n8n:
command: node
args: ["./mcp-n8n-server/index.js"]
env:
N8N_BASE_URL: "http://localhost:5678"
N8N_API_KEY: "${N8N_API_KEY}"
在Skill中使用n8n工具:
// SKILL.md - 客服处理技能 ## 客户咨询智能路由 当收到客户咨询时: 1. 使用 `trigger_workflow` 触发n8n分析工作流 2. 传入客户消息和上下文信息 3. 根据返回的路由结果执行对应操作 4. 使用 `get_execution_history` 确认处理状态
| 模式 | 说明 | 适用场景 |
|---|---|---|
| AI前置分析 | Agent先分析,n8n执行 | 客服路由、内容分类 |
| 数据管道 | n8n采集,Agent处理 | 数据清洗、报告生成 |
| 混合编排 | Agent和n8n交替执行 | 复杂审批流 |
| 事件驱动 | n8n触发Agent回调 | 监控告警、定时任务 |
| 批量处理 | Agent调度n8n批量任务 | 邮件群发、数据迁移 |
// 带重试的调用封装
async function callN8nWithRetry(workflowId, data, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
const result = await triggerWorkflow(workflowId, data);
return result;
} catch (error) {
if (i === maxRetries - 1) throw error;
const delay = Math.pow(2, i) * 1000;
await new Promise(r => setTimeout(r, delay));
}
}
}
检查n8n是否在运行,MCP Server的stdio传输是否正确配置。常见原因是Docker网络配置导致localhost无法访问。
# 解决方案:使用host网络或正确映射端口 docker run -d --name n8n --network host n8nio/n8n
通过n8n的Execution Log查看详细错误信息。确保API Key有正确的权限。
OpenClaw传递给n8n的数据需要经过序列化。建议在MCP Server中添加数据校验层。
MCP + n8n的组合就像给AI Agent装了一双"会拖拽的手"。OpenClaw负责智能决策,n8n负责确定性执行,MCP协议让两者无缝沟通。这种架构特别适合需要频繁调整业务流程的团队——业务人员改n8n,技术人员改Agent,各司其职,效率拉满。
最后更新:2026-05-16 | 妙趣AI - AI工具导航与教程平台