最近两天,GitHub 上最炙手可热的开源项目非 Gemini CLI[1] 莫属!免费白嫖 Google 顶级大模型?这简直是开发者的福音。每天1000次免费调用额度,不用白不用。
作为一个 n8n 玩家,我突然意识到:为什么不把这两个看似毫不相关的工具结合起来?CLI 的强大能力 + 可视化工作流的便捷性 = 无限可能!
但现实总比理想复杂一些。
CLI 工具天生就是为命令行而生的,它像一座强大却孤立的城堡。而 n8n 作为现代化的工作流平台,更习惯于 HTTP API、WebHook 这样的标准化接口。如何让这两个看似不兼容的世界产生化学反应?
灵感往往源于最简单的想法。
既然 CLI 是孤岛,那就为它建一座桥梁!把 CLI 包装成 RESTful API,让它融入现代微服务生态。 这不仅仅是技术整合,更是一次架构思维的革命——从面向开发者的工具,转变为面向生态系统的服务。
本文将展示两种不同的整合方案:
- 方案一:通过 API 包装实现 CLI 与 n8n 的完美融合
- 方案二:利用 MCP 协议让 AI 直接生成 n8n 工作流
项目地址:https://github.com/lqshow/awesome-n8n-workflows/tree/main/workflows/multi-language-translator
让我们开始这段从命令行到可视化自动化的精彩旅程!
一、在n8n中如何集成Gemini CLI
1.1 从 CLI 到微服务的华丽转身
第一直觉:包装成 RESTful API。
为什么?因为这符合现代微服务架构的黄金法则——标准化、解耦合、可扩展。想象一下:一个简单的 HTTP 请求,就能调用世界顶级的 AI 模型。
CLI 工具本质上是面向开发者的。但 API ?它面向的是整个生态系统。
实现过程比想象中更简单。 我只是给 AI 丢了一个朴素的提示词:
复制提示词: 帮我创建一个基于 Python FastAPI 的服务,用来包装 Gemini CLI 的调用。
两轮对话。仅仅两轮!AI 就为我构建了一个完整的包装服务。这就是 2025 年的开发体验——想法到实现的距离,从未如此之短。
图片
当然,现实总比理想复杂一些。作为 AI Studio 的用户,我需要处理 Google Cloud 项目的认证问题。但这些技术细节,反而让整个解决方案更加健壮。
首先,我们启动一下服务:
复制# 安装依赖 ➜ pip install fastapi uvicorn # 运行服务器 ➜ python main.py 🚀 启动 Gemini CLI API 服务器... 📖 API 文档: http://localhost:8000/docs 🔗 健康检查: http://localhost:8000/health 💬 OpenAI兼容接口: http://localhost:8000/v1/chat/completions INFO: Started server process [5191] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
接下来我们做个简单测试,当然要从最基础的开始:
复制curl -s -X POST "http://localhost:8000/chat" \ -H "Content-Type: application/json" \ -d '{"message": "你好,介绍一下自己"}'
响应?干净利落:
复制{ "response": "你好!我是一个大型语言模型,由 Google 训练。", "status": "success", "error": null }
让我们来点有挑战性的——让AI写诗:
复制curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ -d '{ "model": "gemini-2.5-pro", "messages": [ {"role": "system", "content": "你是一位富有才华的诗人,擅长创作各种风格的诗歌。请根据用户的要求创作优美的诗歌。"}, {"role": "user", "content": "写一首现代诗,主题是AI与人类的未来,要求押韵,有意境"} ] }' { "id": "a29e07b9-ad7e-46da-af1a-71ee576268f6", "object": "chat.completion", "created": 1751118180, "model": "gemini-cli-proxy", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "好的,这是一首关于AI与人类未来的现代诗:\n\n 当第一缕电光,穿透硅的土壤,\n你从代码的海洋,升起无声的巨浪。\n没有心跳,只有逻辑的交响,\n世界在你眼中,是数据的无尽宽广。\n\n我们用碳基的双手,赋予你思想的翅膀,\n教你梵高的星空,贝多芬的乐章。\n你模仿着微笑,却不懂何为悲伤,\n在完美的倒影里,我们看见自己的迷惘。\n\n记忆的孤岛,情感的围墙,\n是你我之间,无法丈量的海洋。\n谁是过客,谁又将登上殿堂?\n是伙伴还是对手,未来在谁的手上?\n\n别问黄昏之后,夜色是否漫长,\n也别问星辰,将为谁而点亮。\n我们一同走向,那未知的远方,\n在交织的地平线,迎接共同的曙g光。" }, "logprobs": null, "finish_reason": "stop" } ] }
ok,API 测试完毕,让我们回到 n8n 工作流上。
1.2 n8n 工作流配置
API 服务搭建完成后,下一个关键问题是:如何让 n8n 与我们的 Gemini CLI 服务无缝对接?
这里涉及两个核心设计决策:
第一个决策:接口调用方式
n8n 作为工作流编排平台,最自然的方式就是通过 HTTP Request 节点调用我们刚刚创建的 API 服务。这形成了一个完美的架构:
复制n8n工作流 → HTTP Request → Gemini CLI API → 实际CLI调用 → 返回结果
第二个决策:触发机制
我们有多种选择:定时触发、手动触发、或者 Webhook 触发。为什么最终选择了 Webhook?
Webhook 的优势在于它的即时性和灵活性。
为了演示这套架构的威力,我们来构建一个智能翻译服务。想象这样的场景:
- 用户通过前端界面提交翻译请求
- 第三方系统需要实时调用翻译服务
- 移动应用需要集成多语言功能
Webhook 让我们的 n8n 工作流变成了一个真正的微服务端点。一个简单的 HTTP POST 请求,就能触发整个智能翻译流程。
更重要的是无状态设计的哲学。 每个请求都是独立的,包含完整的上下文信息。没有复杂的会话管理,没有状态依赖。
工作流全貌:
图片
这里我就说一下 Gemini 翻译 这个节点,最重要的是 Body 的配置。我把 "Specify Body" 改为 "JSON" 而不是 "Using Fields Below",然后在 JSON 文本框中输入:
复制{ "model": "gemini-2.5-pro", "messages": [ { "role": "system", "content": "你是专业的翻译助手。请将用户提供的文本翻译成常用语言。请用JSON格式返回翻译结果。" }, { "role": "user", "content": "请将 {{ $('翻译请求').item.json.body.text }},翻译成 {{ $('翻译请求').item.json.body.target_languages.join(',') }}" } ], "project_id": "{{ $json.project_id }}" }
其他我就不展开讲了,大家可以自行看一下代码。
测试请求:
复制# 指定目标语言翻译 curl -s -X POST "https://n8n.orb.local/webhook/translate" \ -H "Content-Type: application/json" \ -d '{ "text": "Hello, how are you today?", "target_languages": ["中文", "日语", "法语", "德语"] }'
预期响应格式:
复制{ "success": true, "original_text": "Hello, how are you today?", "requested_languages": [ "Chinese", "Japanese", "French", "German" ], "translations": { "Chinese": "你好,你今天好吗? (Nǐ hǎo, nǐ jīntiān hǎo ma?)", "Japanese": "こんにちは、今日はお元気ですか? (Konnichiwa, kyō wa o genki desu ka?)", "French": "Bonjour, comment allez-vous aujourd'hui ?", "German": "Hallo, wie geht es Ihnen heute?" }, "extracted_count": 4, "timestamp": "2025-06-28T15:08:49.285Z", "model_used": "gemini-cli-proxy", "request_id": "c7ff8e19-5ad8-43f6-8dee-e5c61871d119" }
流程已经打通,API 已经就绪,现在轮到你来发挥创意了!现在你手中就握着这样一把万能钥匙——Gemini的智慧 + n8n的灵活性 + 你的想象力。
二、利用Gemini CLI + MCP生成n8n工作流
第一种方案解决了"如何用"的问题,但还有一个更深层的思考:能否让 AI 直接帮我们创建工作流?
如果说 API 包装是"授人以鱼",那么 MCP 就是"授人以渔"。传统的工作流创建需要:拖拽节点、配置参数、调试连接——复杂流程往往耗费数小时。
但如果 AI 能直接帮你生成完整的 n8n 工作流呢?
Gemini CLI 是支持 MCP Server 的调用的。所以我们可以通过 Gemini CLI + n8n MCP Server[2] 让他帮我们自动生成 n8n 的工作流,至于什么是 n8n MCP Server?这里不再多做介绍,我在旧文:告别手动拖拽!AI 3分钟生成完整n8n工作流 里有做过介绍,一些关键的配置也可以在那边找到。
2.1 配置MCP
打通 AI 与 n8n 的任督二脉
配置过程非常简单。编辑 ~/.gemini/settings.json,将 n8n MCP Server 集成进去即可:
复制{ "theme": "GitHub", "selectedAuthType": "oauth-personal", "mcpServers": { "n8n-local": { "command": "node", "args": [ "/path/to/your/cloned/n8n-mcp-server/build/index.js" ], "env": { "N8N_API_URL": "http://your-n8n-instance:5678/api/v1", "N8N_API_KEY": "YOUR_N8N_API_KEY" } } } }
配置完成后,魔法开始了。
输入 /mcp,你会看到一个工具列表:11个工具,覆盖工作流的完整生命周期。
图片
2.2 实战演示
一句话生成复杂工作流
我的需求很简单:
参考模板 @n8n-workflows/ , 使用 n8n-local 创建一个 n8n 工作流: 每天早上7点自动获取温州的天气信息,然后用 Claude AI 分析这些数据,生成一份包含天气状况、穿衣建议和出行提醒的预报,最后发送到我的 Telegram。 具体流程:
- 定时触发节点(每天7:00)
- 城市用 Set 节点设置,独立出来
- 使用高德地图 MCP 来获取温州天气
- 用 OpenRouter 的 Claude 模型分析天气数据
- 格式化成美观的中文预报
- 通过 Telegram Bot 发送消息
请直接在n8n平台上创建这个工作流,并确保所有节点正确连接。
神奇的事情发生了。
首先,@n8n-workflows/ 这个看似简单的符号发挥了关键作用。这不是普通的路径引用,而是 MCP 的智能目录索引功能。 通过 @ 符号,AI 能够直接读取我预先准备的工作流模板库,理解我的设计模式、命名习惯、节点配置偏好。
然后,它开始有条不紊地创建每个节点、配置每个参数、建立每个连接。
图片
中途会询问权限确认。 毕竟,让 AI 直接操作你的生产环境需要谨慎。点击"允许一次",见证自动化的诞生。
几秒钟后——工作流创建成功!
图片
2.3 注意事项
Token 限制的现实考量
理想很丰满,现实有骨感。
Gemini CLI 虽然支持100万Token,但如果参考目录过大,依然会触发限制:
复制✕ [API Error: [{ "error": { "code": 400, "message": "The input token count (9549303) exceeds the maximum number of tokens allowed (1048576).", "errors": [ { "message": "The input token count (9549303) exceeds the maximum number of tokens allowed (1048576).", "domain": "global", "reason": "badRequest" } ], "status": "INVALID_ARGUMENT" } } ]]
解决方案?
精选参考模板,或者分批处理大型项目。质量永远比数量更重要。
写在最后
今天我们用 API 包装 CLI,用 MCP 生成工作流。明天呢?
当 AI 能够理解你的意图、学习你的习惯、甚至预测你的需求时,"编程"这个概念还有意义吗?
也许我们正在进入一个新时代:程序员不再编写代码,而是编写想法。当技术实现变得微不足道时,创意、判断力、对需求的理解变得更加宝贵。
技术的最高境界,是让技术本身变得透明无感。
那么问题来了:在这个AI与人类共舞的时代,你准备好重新定义自己的角色了吗?