← 返回教程列表 GitHub Trending 热门项目

OpenClaw MCP与n8n工作流集成完全指南

AI Agent遇见可视化自动化:当OpenClaw的MCP协议遇到n8n的节点式工作流,一切复杂的业务流程都变成了拖拽就能完成的事。

目录

  1. 为什么需要MCP + n8n
  2. 架构设计
  3. 环境搭建
  4. 创建MCP Server
  5. n8n工作流设计
  6. OpenClaw侧集成
  7. 常用工作流模式
  8. 最佳实践
  9. 常见问题
  10. 总结

为什么需要MCP + n8n

世界上有一种痛苦叫"业务流程变更了,代码得改三天"。n8n解决了可视化编排的问题,但AI Agent的逻辑怎么办?MCP(Model Context Protocol)的出现,让OpenClaw的Agent能力与n8n的工作流引擎实现了真正的双向通信。

关键洞察:n8n-mcp项目(czlonkowski/n8n-mcp)在GitHub上获得20,800+星标,证明了"AI Agent + 可视化工作流"是当前最受开发者欢迎的集成模式之一。

这个组合能解决三大核心问题:

架构设计

整体架构采用三层设计:

┌─────────────────────────────────────────────┐
│              OpenClaw Agent                   │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  │
│  │ Skill A  │  │ Skill B  │  │ Skill C  │  │
│  └────┬─────┘  └────┬─────┘  └────┬─────┘  │
│       │              │              │        │
│       └──────────────┼──────────────┘        │
│                      │                       │
│              MCP Client                      │
└──────────────────────┼───────────────────────┘
                       │ MCP Protocol
┌──────────────────────┼───────────────────────┐
│              MCP Server                       │
│         (n8n-connector)                       │
└──────────────────────┼───────────────────────┘
                       │ REST/Webhook
┌──────────────────────┼───────────────────────┐
│              n8n Workflow Engine              │
│  ┌──────┐  ┌──────┐  ┌──────┐  ┌──────┐    │
│  │HTTP  │─>│条件  │─>│执行  │─>│通知  │    │
│  │触发  │  │判断  │  │动作  │  │推送  │    │
│  └──────┘  └──────┘  └──────┘  └──────┘    │
└─────────────────────────────────────────────┘

环境搭建

前提条件

安装n8n

# 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
安全提示:生产环境请务必配置HTTPS、使用环境变量管理密码,并启用n8n的认证机制。不要将n8n直接暴露到公网。

创建MCP Server

首先创建一个连接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);

n8n工作流设计

示例:客户咨询自动处理

工作流节点设计:

[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侧集成

在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批量任务邮件群发、数据迁移

最佳实践

实践1:保持职责分离
OpenClaw负责"想"(分析、决策、对话),n8n负责"做"(执行、调度、通知)。不要让n8n做复杂的AI推理,也不要让Agent处理大量确定性操作。
实践2:设计幂等工作流
n8n工作流应该支持重复执行而不产生副作用。为每个工作流添加去重机制。
实践3:超时和重试
MCP调用n8n时设置合理的超时时间(建议30秒),并实现指数退避重试机制。
// 带重试的调用封装
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));
    }
  }
}

常见问题

1. MCP连接超时

检查n8n是否在运行,MCP Server的stdio传输是否正确配置。常见原因是Docker网络配置导致localhost无法访问。

# 解决方案:使用host网络或正确映射端口
docker run -d --name n8n --network host n8nio/n8n

2. 工作流执行失败

通过n8n的Execution Log查看详细错误信息。确保API Key有正确的权限。

3. 数据格式不匹配

OpenClaw传递给n8n的数据需要经过序列化。建议在MCP Server中添加数据校验层。

总结

MCP + n8n的组合就像给AI Agent装了一双"会拖拽的手"。OpenClaw负责智能决策,n8n负责确定性执行,MCP协议让两者无缝沟通。这种架构特别适合需要频繁调整业务流程的团队——业务人员改n8n,技术人员改Agent,各司其职,效率拉满。

最后更新:2026-05-16 | 妙趣AI - AI工具导航与教程平台