本地 Docker 部署 n8n + MCP 协议实战:打造你的全能 AI 自动化中枢
作者:nyzhhd 机器人工程师 · AI 自动化爱好者 · 本地优先(Local-First)倡导者
在具身智能(Embodied Intelligence)和 AI Agent 时代,自动化不再只是“定时任务”,而是由自然语言驱动、跨平台协同、能感知-决策-执行的智能体。
今天,我将手把手带你完成一个高价值实战项目: ✅ 在本地 Docker 环境部署 n8n ✅ 通过 Ngrok 暴露本地服务 ✅ 构建 MCP Server/Client 架构 ✅ 实现 GitHub + Gmail 自动化 ✅ 无缝集成 Cherry Studio / Trae 等 AI 工具
这一切,无需云服务、数据不出本地、成本为零。
一、为什么选择本地部署 n8n?
n8n 是一个开源、可扩展的工作流自动化工具,支持 300+ 应用集成。但云部署存在数据隐私、API 调用限制、成本不可控等问题。
本地 Docker 部署优势:
- 🛡️ 数据完全私有:邮件、代码、项目信息不经过第三方
- 🧪 调试自由:可随时修改、重启、查看日志
- 💰 零成本:无需订阅 n8n.cloud
- 🤖 为 AI Agent 提供可靠工具链:MCP 协议让大模型“有手有脚”
但挑战也很明显:localhost 无法被外网访问。
二、Ngrok:为本地服务开一扇“任意门”
1. 安装与配置
# macOS (Homebrew)
brew install ngrok
# Windows (Scoop)
scoop install ngrok
# Linux (官方脚本)
curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null && \\
echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list && \\
sudo apt update && sudo apt install ngrok
获取 AuthToken(ngrok dashboard):
ngrok config add-authtoken <YOUR_TOKEN>
2. 启动隧道
ngrok http http://localhost:5678
输出示例:
Forwarding https://a1b2-112-12-185-57.ngrok-free.app -> http://localhost:5678
⚠️ 重要:免费版域名每次重启会变!生产环境建议用固定域名或自建隧道(如 Cloudflare Tunnel)。
三、Docker 启动 n8n:注入公网地址
n8n 需要知道它的公网入口地址,才能生成正确的 Webhook URL。
docker run -it –rm \\
–name n8n \\
-p 5678:5678 \\
-v n8n_data:/home/node/.n8n \\
-e WEBHOOK_TUNNEL_URL=https://a1b2-112-12-185-57.ngrok-free.app \\
-e N8N_HOST="a1b2-112-12-185-57.ngrok-free.app" \\
docker.n8n.io/n8nio/n8n
🔑 关键环境变量:
- WEBHOOK_TUNNEL_URL:n8n 生成 Webhook 时使用的前缀
- N8N_HOST:设置 Host Header,避免某些服务(如 GitHub)拒绝回调
四、构建 MCP Server:让 n8n 成为 AI 的“工具手”
MCP(Model Context Protocol)是一种标准化协议,允许 AI 模型调用外部工具。n8n 原生支持 MCP Server。
步骤 1:创建 MCP Server Trigger
- 节点类型:MCP Server Trigger
- 自动生成一个 SSE(Server-Sent Events)端点
步骤 2:添加 GitHub 工具(创建 Issue)
配置 GitHub Credential
- 路径:GitHub Settings → Developer settings → Personal access tokens (classic)
- 权限:repo(读写仓库)、read:org(组织信息)
- 安全建议:设置 90 天过期,命名如 n8n-mcp-token
节点配置
Resource: Issue
Operation: Create
Repository Owner: your_username
Repository Name: {{ $input.item.json.repo }} # 由 AI 动态传入
Title: {{ $input.item.json.title }}
Body: {{ $input.item.json.body }}
步骤 3:添加 Gmail 工具(读取/发送邮件)
配置 Google OAuth
- 项目:Google Cloud Console → 启用 Gmail API
- 关键:在“已授权的重定向 URI”中添加 Ngrok 域名https://a1b2-112-12-185-57.ngrok-free.app/oauth2/callback
- 应用类型:Web 应用
- 测试用户:添加你的 Gmail 账号
节点配置
- 操作:Get Email / Send Email
- 支持按主题、发件人过滤
💡 技巧:在节点参数中使用 {{}} 表达式,让 AI 动态传参。
步骤 4:激活并获取 MCP Server URL
- 复制 Production URL,格式如:https://a1b2-112-12-185-57.ngrok-free.app/mcp/xxxx-xxxx/sse
- 此 URL 即为 MCP Server 地址,供客户端调用
五、构建 MCP Client:让 AI 能“指挥”你的工具
MCP Client 是 AI 与工具之间的“翻译官”。
1. 创建 MCP Client Trigger
- 触发方式:Chat Message(接收自然语言指令)
2. 添加 AI Agent 节点
- 系统提示(System Prompt):
你是一个专业的自动化助手。请将用户的自然语言指令解析为结构化操作,调用 MCP 工具,并返回简洁结果。
- 模型选择:DeepSeek / Claude / GPT-4(需 API Key)
- 关键能力:理解工具参数、填充动态字段(如 repo、title)
3. 添加 MCP Client Tool 节点
- SSE 地址:填入上一步的 MCP Server URL
- Docker 注意:若 Client 也在本地 Docker 中,需用 host.docker.internal 访问宿主机
六、实战测试:让 AI 为你打工!
🎯 用例 1:GitHub 自动化
用户指令:
“在 GitHub 的 awesome-project 项目下,新建一个 issue。标题是:n8n 的学习路径。内容是:n8n 的环境搭建,跑通 n8n demo。请润色内容。”
AI Agent 执行流程:
🎯 用例 2:Gmail 智能处理
用户指令:
“查找最近来自 boss@company.com 的邮件,摘要发给我。”
结果:AI 自动调用 Gmail 节点,返回邮件摘要。
七、集成到 Cherry Studio / Trae 等 AI 工具
这些工具通常支持 自定义 MCP Server:
- Name: My n8n Tools
- URL: https://a1b2-…ngrok-free.app/mcp/…/sse
🌐 效果:你的本地 n8n 工作流,瞬间成为 AI 的“超能力”!
八、安全与优化建议
| Ngrok 域名变动 | 使用 ngrok authtoken + 固定子域名(付费) |
| GitHub Token 泄露 | 定期轮换,权限最小化 |
| Docker 网络隔离 | 使用 –network host 或 host.docker.internal |
| 性能瓶颈 | 为 n8n 容器分配更多 CPU/Memory |
结语:本地智能体的崛起
通过 n8n + MCP + Ngrok,我们构建了一个私有、可控、强大的 AI 自动化中枢。
- 你可以让 AI 自动提交代码 Issue
- 让 AI 监控重要邮件并摘要
- 甚至让 AI 控制你的机械臂(通过自定义 n8n 节点!)
这正是 具身智能(Embodied Intelligence) 的核心:AI 不只是聊天,而是能行动的智能体。
最后提醒: 本地部署是起点,不是终点。下一步,你可以:
- 用 Cloudflare Tunnel 替代 Ngrok(免费固定域名)
- 将 n8n 工作流打包为 Docker Compose
- 开发自定义 n8n 节点,集成 ROS / STM32 / 数据库
现在,就去启动你的 n8n,开启 AI 自动化之旅吧!🚀
附:资源链接
- n8n 官方文档:https://docs.n8n.io
- MCP 协议规范:https://modelcontextprotocol.io
- 工作流模板(含 GitHub/Gmail):点击下载
- Ngrok 免费账号:https://ngrok.com
作者:nyzhhd|一个相信“本地优先”的机器人工程师


