n8n MCP+Claude代码Docker设置
此存储库包含 沙盒Docker环境 其中n8n MCP服务器和MCP客户端一起运行,完全隔离在Docker容器中。
建筑
- n8n mcp:通过模型上下文协议提供n8n工作流管理的MCP服务器
- mcp客户端:通过HTTP与n8n-MCP通信的MCP客户端
- 这两个服务都运行在同一个Docker网络上,并在内部进行通信
设置
先决条件
- 已安装Docker和Docker Compose
- 正在运行的n8n实例(本地或远程)
- 你的
.env配置了n8n凭据的文件
快速开始
- 确保您的
.env文件已配置:
N8N_API_URL=https://your-n8n-instance.com/api/v1
N8N_API_KEY=your-api-key-here
ANTHROPIC_API_KEY=your-anthropic-api-key # Optional, for Claude API integration
LOG_LEVEL=info
DISABLE_CONSOLE_OUTPUT=false
N8N_MCP_TELEMETRY_DISABLED=true- 启动这两项服务:
docker-compose up -d- 检查状态:
docker-compose ps- 查看日志:
# View all logs
docker-compose logs -f
# View n8n-mcp logs
docker-compose logs -f n8n-mcp
# View mcp-client logs
docker-compose logs -f mcp-client服务
n8n-mcp服务
- 图像:
ghcr.io/czlonkowski/n8n-mcp:latest - 端口:3000(暴露于主机)
- 模式:HTTP(用于容器间通信)
- 网络:
claude-n8n-network
mcp客户端服务
- 图像:
node:20-alpine(使用MCP SDK) - 目的:连接到n8n MCP的MCP客户端
- 网络:
claude-n8n-network - 取决于:n8n mcp服务
用法
在Docker中运行Claude代码
简易方法(推荐): 使用提供的脚本:
./run-claude.sh脚本将:
- 负载
ANTHROPIC_API_KEY来自你的.env文件 - 检查Docker网络是否存在(需要时启动Docker compose)
- 如果Claude Code映像不存在,则构建它
- 使用所有正确的设置在Docker中启动Claude Code
手动方式: 直接运行Docker命令:
docker run -it \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-v $(pwd)/workspace:/workspace \
-v $(pwd)/claude-code-config:/root/.config/claude-code \
-v /var/run/docker.sock:/var/run/docker.sock \
--network claude-n8n_claude-n8n-network \
claude-code \
claude # ← Just "claude", not "claude-code"访问n8n-mcp HTTP API
n8n mcp服务器可在以下位置访问:
- 来自主机:
http://localhost:3001 - 来自其他容器:
http://n8n-mcp:3000
与服务互动
您可以通过多种方式与服务交互:
- 在容器中执行命令:
# Execute command in mcp-client
docker-compose exec mcp-client sh
# Execute command in n8n-mcp
docker-compose exec n8n-mcp sh- 访问HTTP端点 (在HTTP模式下):
# Health check
curl http://localhost:3000/health
# List available tools
curl http://localhost:3000/tools- 查看实时日志:
docker-compose logs -f切换到stdio模式
如果您更喜欢stdio模式而不是HTTP模式:
- 编辑
docker-compose.yml:
- 发表评论 ports n8n mcp部分 - 改变 MCP_MODE=http 到 MCP_MODE=stdio - 移除 PORT=3000 - 取消注释 stdin_open: true 和 tty: true
- 更新mcp客户端以使用stdio传输而不是HTTP
故障排除
容器无法启动
# Check logs
docker-compose logs
# Check container status
docker-compose ps
# Restart services
docker-compose restart连接问题
# Verify network connectivity
docker-compose exec mcp-client ping n8n-mcp
# Check if n8n-mcp is listening
docker-compose exec n8n-mcp netstat -tlnp健康检查失败
# Check n8n-mcp health
curl http://localhost:3000/health
# View detailed logs
docker-compose logs n8n-mcp环境变量
N8N_API_URL:n8n实例的URL(必填)N8N_API_KEY:n8n身份验证的API密钥(必需)MCP_MODE:要么stdio或http(默认值:httpDocker)PORT:HTTP模式的端口(默认值:3000)LOG_LEVEL:日志记录级别-debug,info,warn,error(默认值:info)DISABLE_CONSOLE_OUTPUT:禁用控制台输出(默认值:false)N8N_MCP_TELEMETRY_DISABLED:禁用遥测(默认值:false)ANTHROPIC_API_KEY:Anthropic API键(可选,用于Claude集成)
网络
这两个服务都在自定义Docker网络上运行(claude-n8n-network)用于安全的内部通信。
停止服务
# Stop services
docker-compose stop
# Stop and remove containers
docker-compose down
# Stop, remove containers, and remove volumes
docker-compose down -v