第 23 期:角色反转 — 把 n8n 工作流暴露为 MCP Server

⏱ 预计阅读 7 分钟 更新于 2026/4/9

为什么要把 n8n 变成 MCP Server?

到目前为止,n8n 一直扮演 "消费者" 角色——使用别人的 MCP Server。但如果你已经在 n8n 中构建了强大的工作流(如 RAG 知识库、CRM 查询、订单处理),为什么不把它们暴露给其他 Agent使用?

graph LR
    subgraph "外部 Agent 生态"
        Claude[Claude Desktop]
        Cursor[Cursor IDE]
        Custom[自定义 Agent]
    end
    
    subgraph "n8n 作为 MCP Server"
        MCPTrigger[🔌 MCP Server Trigger]
        MCPTrigger --> WF1[📋 查询订单状态]
        MCPTrigger --> WF2[🔍 搜索知识库]
        MCPTrigger --> WF3[📧 发送通知邮件]
    end
    
    Claude & Cursor & Custom -->|"MCP 协议"| MCPTrigger
    
    style MCPTrigger fill:#22c55e,stroke:#16a34a,color:#fff

1. MCP Server Trigger 配置

graph TB
    subgraph "n8n MCP Server 工作流"
        Trigger[🔌 MCP Server Trigger
监听 MCP 请求] --> Router{根据 Tool Name 路由} Router -->|"query_order"| Order[查询订单逻辑
→ 调用数据库] Router -->|"search_docs"| Search[RAG 检索逻辑
→ 查询 Qdrant] Router -->|"send_email"| Email[发送邮件
→ 调用 SMTP] Order --> Response[📤 返回结果给 MCP Client] Search --> Response Email --> Response end style Trigger fill:#22c55e,stroke:#16a34a,color:#fff
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// MCP Server Trigger 节点配置
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

// Tool Name: "query_order_status"
// Tool Description:
//   "查询客户订单的当前状态。
//    输入: orderId (字符串,如 'ORD-2026-0042')
//    输出: {status, estimatedDelivery, trackingNumber}
//    仅在需要查询订单物流信息时使用。"

// Input Schema (JSON Schema):
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "description": "订单编号,格式: ORD-YYYY-XXXX"
    }
  },
  "required": ["orderId"]
}

// 工作流后续节点:
// 1. Code 节点: 从 MCP 请求中提取 orderId
//    const orderId = $json.toolCallArguments.orderId;
// 2. Database 节点: 查询订单表
// 3. Set 节点: 格式化返回结果
// 4. Respond to MCP: 返回结果给调用方

2. 在 Claude Desktop 中调用

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Claude Desktop 的 claude_desktop_config.json
// 添加 n8n 作为 MCP Server
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
{
  "mcpServers": {
    "n8n-tools": {
      "url": "https://your-n8n-domain.com/mcp/sse",
      "transport": "sse"
    }
  }
}

// 配置后,在 Claude 对话中可以直接:
// 用户: "帮我查一下订单 ORD-2026-0042 的状态"
// Claude 自动发现 n8n 暴露的 query_order_status 工具
// → 调用 n8n 工作流 → 查数据库 → 返回结果给 Claude

3. 多工具 MCP Server

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 一个 n8n 实例可以暴露多个 MCP 工具
// 每个工具对应一个独立的工作流
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

// 工作流 1: query_order_status
// 工作流 2: search_knowledge_base
// 工作流 3: create_support_ticket
// 工作流 4: get_product_pricing

// 外部 Agent 连接后,自动看到所有 4 个工具
// 并根据用户问题自主选择调用哪一个

下一步

Ep 24 将构建一个 MCP 服务编排层——管理多个 MCP Server 的发现、注册与健康检查。