前言
作为一个热爱自动化但又经常被自动化折磨的程序员,当我听说可以让 Claude 直接操控 n8n 工作流时,我的第一反应是:"这不就是让AI帮我写自动化脚本的自动化吗?"
然后我就开始了这段充满坑的旅程。
本文将记录如何将 n8n-mcp 与 Claude Desktop 集成,以及我在过程中踩过的那些"看起来很简单但实际上能让你debug到凌晨三点"的坑。
什么是 MCP?
MCP(Model Context Protocol)是 Anthropic 推出的一个协议,允许 AI 模型与外部工具和服务进行交互。简单来说,就是给 Claude 装上了"手和脚",让它不再只是一个"嘴炮选手"。
整体架构
在深入配置之前,让我们先看看整个系统是如何协作的:
环境准备
前置条件
在开始之前,请确保你的环境满足以下条件:
| 组件 | 版本要求 | 检查命令 |
|---|---|---|
| Node.js | >= 18.x | node -v |
| npm | >= 8.x | npm -v |
| n8n | >= 1.0 | n8n --version |
| Claude Desktop | 最新版 | 检查 About |
n8n 服务准备
首先确保你的 n8n 服务已经运行:
# 如果还没安装 n8n
npm install -g n8n
# 启动 n8n 服务
n8n start
# 或者使用 Docker
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n获取 n8n API Key
- 打开 n8n 界面 (默认 http://localhost:5678)
- 点击右上角头像 → Settings
- 进入 API 选项卡
- 点击 Create an API key
- 复制生成的 API Key(只显示一次,务必保存好!)
安装 n8n-mcp
终于到了激动人心的安装环节!(flag 已立)
# 全局安装 n8n-mcp
sudo npm install -g n8n-mcp
# 验证安装
npx n8n-mcp --version如果你看到版本号输出,恭喜你,你已经完成了整个流程中最简单的一步。
配置 Claude Desktop
配置文件位置
Claude Desktop 的配置文件位于:
| 操作系统 | 配置文件路径 |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
完整配置示例
创建或编辑配置文件:
# macOS
mkdir -p ~/Library/Application\ Support/Claude
vim ~/Library/Application\ Support/Claude/claude_desktop_config.json写入以下内容:
{
"mcpServers": {
"n8n": {
"command": "npx",
"args": ["-y", "n8n-mcp"],
"env": {
"N8N_API_URL": "http://localhost:5678/api/v1",
"N8N_BASE_URL": "http://localhost:5678",
"MCP_MODE": "stdio",
"N8N_API_KEY": "你的n8n-api-key"
}
}
}
}配置说明
用于 API 调用"] B["N8N_BASE_URL"] --> B1["n8n 服务基础地址
⚠️ 必须配置,否则只读模式"] C["MCP_MODE"] --> C1["通信模式
⚠️ 必须设为 stdio"] D["N8N_API_KEY"] --> D1["API 认证密钥
从 n8n 设置获取"] end style B fill:#ffcdd2 style C fill:#ffcdd2 style B1 fill:#ffebee style C1 fill:#ffebee
🕳️ 踩坑实录
坑点一:MCP_MODE 未配置导致 JSON 解析错误
症状描述:
配置完成后重启 Claude Desktop,发现 MCP 插件无法加载,控制台疯狂报错:
Error: Unexpected token in JSON at position xxx
SyntaxError: JSON.parse: unexpected character at line x column y原因分析:
当未设置 MCP_MODE: "stdio" 时,n8n-mcp 会将调试日志和运行时信息直接输出到标准输出流。而 Claude Desktop 期望通过 stdio 接收的是纯净的 JSON 格式数据,混入的日志信息直接破坏了 JSON 结构。
解决方案:
确保配置中包含:
"MCP_MODE": "stdio"坑点二:缺少 N8N_BASE_URL 导致只读模式
症状描述:
Claude 能识别到 n8n-mcp 插件,也能列出工作流,但是:
- 无法创建新工作流
- 无法修改现有工作流
- 无法执行工作流
- Claude 提示插件处于"只读模式"
原因分析:
N8N_API_URL 和 N8N_BASE_URL 看起来很像,但它们的作用完全不同:
| 配置项 | 作用 | 缺失后果 |
|---|---|---|
N8N_API_URL | 指定 API 端点 | 完全无法连接 |
N8N_BASE_URL | 指定服务基础地址,用于构建完整URL | 部分功能失效,只读模式 |
解决方案:
两个配置都要有:
{
"N8N_API_URL": "http://localhost:5678/api/v1",
"N8N_BASE_URL": "http://localhost:5678"
}坑点三:API Key 权限不足
症状描述:
某些操作返回 403 Forbidden。
解决方案:
在 n8n 中创建 API Key 时,确保授予足够的权限:
- ✅ workflow:read
- ✅ workflow:write
- ✅ workflow:execute
- ✅ execution:read
实战示例
配置完成后,让我们来看看 Claude + n8n-mcp 能做什么骚操作。
示例一:创建定时备份工作流
对话示例:
👤 用户:帮我创建一个工作流,每天凌晨2点自动备份数据库,并发送邮件通知
🤖 Claude:好的,我来帮你创建这个工作流...
每天 02:00] --> B[🗄️ MySQL
执行备份命令] B --> C{备份成功?} C -->|是| D[📧 发送成功邮件] C -->|否| E[📧 发送失败告警] D --> F[✅ 结束] E --> F style A fill:#e3f2fd style B fill:#fff3e0 style D fill:#e8f5e9 style E fill:#ffebee
示例二:监控 API 健康状态
对话示例:
👤 用户:创建一个工作流,每5分钟检查我的API是否正常,如果异常就发送Slack通知
GET /health] B --> C{状态码 = 200?} C -->|是| D[📝 记录正常日志] C -->|否| E[🔔 Slack 告警] E --> F[📊 记录异常到数据库] D --> G[结束] F --> G style A fill:#e3f2fd style E fill:#ffcdd2 style D fill:#c8e6c9
示例三:自动化内容发布
对话示例:
👤 用户:当我在 Notion 添加新文章时,自动发布到我的博客并同步到各个平台
新文章触发] --> B[🔄 格式转换
Markdown] B --> C[📤 发布到博客] C --> D[并行分发] D --> E[掘金] D --> F[知乎] D --> G[CSDN] D --> H[cnblogs] E --> I[📊 汇总结果] F --> I G --> I H --> I I --> J[📧 发送报告] style A fill:#fff3e0 style D fill:#e8f5e9
示例四:智能客服工单处理
类型:技术问题 alt 紧急工单 N8N->>Slack: 立即通知值班人员 N8N->>Jira: 创建高优先级Issue else 普通工单 N8N->>Jira: 创建普通Issue end N8N->>User: 发送确认邮件
常用命令速查
n8n-mcp 提供的能力
| 功能 | 说明 | 使用场景 |
|---|---|---|
| 列出工作流 | 获取所有工作流列表 | 查看现有自动化 |
| 创建工作流 | 基于描述创建新工作流 | 快速搭建自动化 |
| 更新工作流 | 修改现有工作流配置 | 迭代优化 |
| 执行工作流 | 手动触发工作流运行 | 测试或临时执行 |
| 查看执行记录 | 获取历史执行结果 | 问题排查 |
| 管理凭证 | 配置第三方服务认证 | 集成外部服务 |
调试技巧
# 查看 Claude Desktop 日志 (macOS)
tail -f ~/Library/Logs/Claude/mcp*.log
# 直接测试 n8n-mcp 连接
N8N_API_URL=http://localhost:5678/api/v1 \
N8N_BASE_URL=http://localhost:5678 \
N8N_API_KEY=your-key \
MCP_MODE=stdio \
npx n8n-mcp
# 测试 n8n API 连通性
curl -H "X-N8N-API-KEY: your-key" \
http://localhost:5678/api/v1/workflows完整配置流程图
最佳实践
1. 安全建议
2. 工作流设计原则
- 单一职责:每个工作流只做一件事
- 错误处理:添加 Error Trigger 节点
- 日志记录:关键节点记录执行状态
- 版本管理:定期导出工作流备份
3. 性能优化
- 避免在循环中调用外部 API
- 合理设置 Cron 触发间隔
- 大数据量处理时使用批处理
总结
经过以上一番折腾,我们终于实现了 Claude + n8n 的梦幻联动。现在你可以:
- 🗣️ 用自然语言描述需求,让 Claude 帮你创建工作流
- 🔍 让 Claude 帮你分析和优化现有工作流
- 🐛 出问题时让 Claude 帮你排查执行记录
- 🚀 实现真正的"自动化的自动化"
当然,如果你在配置过程中遇到了本文没有提到的坑...
恭喜你,你已经具备了写续集的资格! 🎉
参考资料
本文属于「从入门到放弃」系列,如果你真的放弃了,记得在评论区留下你的故事。
如果你成功了...那你一定是看了这篇文章。 😏