# MCP应用

## 📚 参考资源

!!! info "核心学习资源"
    - **官方模板**: [Build your own n8n workflows MCP server](https://n8n.io/workflows/3770-build-your-own-n8n-workflows-mcp-server/)
    - **深度教程**: [n8n+MCP知乎专栏](https://zhuanlan.zhihu.com/p/1913630305291567877)
    - **MCP协议文档**: [官方文档](https://modelcontextprotocol.io/)
    - **视频教程**: [n8n+MCP实战教程](https://www.bilibili.com/video/BV11QX8YNEjU)
    - **实战案例**: [n8n+MCP+DeepSeek案例](https://blog.csdn.net/m0_59235245/article/details/147950398)
    - **社区节点**: [n8n-nodes-mcp](https://github.com/nerding-io/n8n-nodes-mcp)

---

模型上下文协议（MCP）定义了AI代理与外部工具的标准化通信框架，允许在不同LLM之间无缝切换工具集成逻辑。

## 🔍 MCP架构概览

MCP架构包含三大核心组件：

**Host 主机（Claude Desktop, Cursor）** → **Client 客户端（MCP通信端点）** → **Server 服务器（n8n工作流服务）** → **Tools 工具 + Resources 资源 + Prompts 提示**

### 组件说明

| 组件 | 功能 | 示例 |
|------|------|------|
| **Host (主机)** | 承载MCP连接的LLM应用 | Claude Desktop、Cursor IDE |
| **Client (客户端)** | 作为对接MCP服务器的通信端点 | MCP客户端库 |
| **Server (服务器)** | 为主机提供工具、数据或提示资源 | n8n工作流、API服务 |

## 🛠️ n8n的MCP角色

n8n能以两种角色接入MCP生态：

### 1. 作为MCP服务器

**功能**: 将n8n工作流封装为AI代理可调用的"工具"

**价值**:
- 让AI能够执行复杂的自动化任务
- 将现有工作流转化为AI工具
- 构建强大的端到端智能工作流

### 2. 作为MCP客户端

**功能**: 在n8n中调用其他MCP服务器的能力

**价值**:
- 集成第三方MCP服务
- 扩展n8n的功能边界
- 构建混合式智能工作流

## 🚀 n8n MCP服务器部署

### 使用官方模板

**官方模板**: [Build your own n8n workflows MCP server](https://n8n.io/workflows/3770-build-your-own-n8n-workflows-mcp-server/)

### 部署步骤

=== "1. 导入模板"
    1. 访问官方模板链接
    2. 点击"Use this template"
    3. 在n8n中导入工作流
    4. 更新Webhook URL

=== "2. 配置Redis"
    ```yaml
    # Redis配置用于存储"可用"工作流信息
    Redis连接:
      host: localhost
      port: 6379
      database: 0
      password: your-redis-password
    ```

=== "3. 设置工作流标签"
    ```yaml
    # 通过标签标记可用工作流
    工作流标签: "mcp-available"
    
    # 或使用其他过滤方式
    工作流前缀: "MCP_"
    ```

=== "4. 部署MCP服务器"
    ```bash
    # 启动n8n MCP服务器
    cd your-n8n-project
    npm install @n8n/mcp-server
    
    # 配置环境变量
    export N8N_MCP_WEBHOOK_URL="your-webhook-url"
    export REDIS_URL="redis://localhost:6379"
    
    # 启动服务
    npm run mcp-server
    ```

### 配置示例

```json
{
  "name": "n8n-mcp-server",
  "version": "1.0.0",
  "mcpServers": {
    "n8n-workflows": {
      "command": "node",
      "args": ["mcp-server.js"],
      "env": {
        "N8N_WEBHOOK_URL": "https://your-n8n.com/webhook/mcp",
        "REDIS_URL": "redis://localhost:6379"
      }
    }
  }
}
```

## 🎯 实际应用案例

### 案例1：智能客服工作流

**场景**: 将客服处理流程转换为MCP工具

**工作流设计**：MCP触发器 → 客户信息查询 → 问题分类 → AI回复生成 → 回复发送 → 工单创建

**MCP工具定义**:
```json
{
  "name": "customer_service_handler",
  "description": "处理客户咨询并生成智能回复",
  "inputSchema": {
    "type": "object",
    "properties": {
      "customer_id": {"type": "string"},
      "message": {"type": "string"},
      "channel": {"type": "string"}
    }
  }
}
```

### 案例2：数据分析工作流

**场景**: 将复杂数据分析转换为AI可调用的分析工具

**核心功能**:
- 数据清洗和预处理
- 统计分析和可视化
- 报告生成和发送

**使用方式**:
```javascript
// AI代理调用示例
const analysisResult = await mcpClient.call('data_analysis_tool', {
  dataset: 'sales_data_2024',
  analysis_type: 'trend_analysis',
  date_range: '2024-01-01 to 2024-12-31'
});
```

### 案例3：内容创作工作流

**场景**: AI辅助内容创作和发布

**工作流能力**:
- 内容主题研究
- 多平台内容生成
- 自动化发布调度
- 效果跟踪分析

## 🔧 高级配置技巧

### 输入模式设计

**最佳实践**:
```json
{
  "inputSchema": {
    "type": "object",
    "properties": {
      "required_field": {
        "type": "string",
        "description": "必需参数的详细描述"
      },
      "optional_field": {
        "type": "string",
        "description": "可选参数的用途说明",
        "default": "默认值"
      }
    },
    "required": ["required_field"]
  }
}
```

### 错误处理机制

```javascript
// 在MCP工作流中添加错误处理
try {
  const result = await executeWorkflow(input);
  return {
    success: true,
    data: result,
    timestamp: new Date().toISOString()
  };
} catch (error) {
  return {
    success: false,
    error: error.message,
    error_code: error.code || 'UNKNOWN_ERROR',
    timestamp: new Date().toISOString()
  };
}
```

### 性能优化

**缓存策略**:
```javascript
// Redis缓存实现
const cacheKey = `workflow_${workflowId}_${JSON.stringify(input)}`;
const cachedResult = await redis.get(cacheKey);

if (cachedResult) {
  return JSON.parse(cachedResult);
}

const result = await executeWorkflow(input);
await redis.setex(cacheKey, 3600, JSON.stringify(result)); // 1小时缓存

return result;
```

## 🌟 MCP生态集成

### 与Claude Desktop集成

**配置文件**: `~/.config/claude-desktop/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "n8n-workflows": {
      "command": "node",
      "args": ["/path/to/n8n-mcp-server/index.js"],
      "env": {
        "N8N_WEBHOOK_URL": "https://your-n8n.com/webhook/mcp"
      }
    }
  }
}
```

### 与Cursor IDE集成

**配置步骤**:
1. 安装MCP扩展
2. 配置n8n MCP服务器连接
3. 在代码中调用n8n工作流

### 社区MCP节点

**推荐MCP节点**: [n8n-nodes-mcp](https://github.com/nerding-io/n8n-nodes-mcp)

**安装方式**:
```bash
# 在n8n中安装MCP社区节点
npm install n8n-nodes-mcp
```

## 💡 进阶提示

### MCP最佳实践

- **模块化设计**: 将复杂工作流拆分为可复用的MCP服务
- **错误处理**: 确保MCP服务具备完善的异常处理机制
- **性能优化**: 合理使用缓存和批处理提升响应速度
- **安全考虑**: 实施适当的身份验证和权限控制

## 🚀 未来发展方向

### MCP技术趋势

1. **标准化程度提升**: MCP协议将更加成熟和标准化
2. **生态系统扩展**: 更多工具和平台将支持MCP
3. **AI能力增强**: AI代理将具备更强的工具调用能力
4. **企业级应用**: MCP将广泛应用于企业AI解决方案

### n8n在MCP生态的优势

- **丰富的集成能力**: 400+节点支持
- **可视化工作流**: 降低AI工具开发门槛
- **企业级部署**: 支持私有化和大规模部署
- **活跃的社区**: 持续的功能更新和支持

---

通过MCP协议，n8n不仅是自动化工具，更成为了AI时代的智能工作流引擎！

[上一章：模板套用](templates.md){ .md-button } [下一章：自然语言编程](natural-language.md){ .md-button .md-button--primary }
