在5分钟内部署 Nano Banana MCP Service:将 AI 图像生成集成到您的工作流
Source: Dev.to
什么是 MCP,为什么你应该在意?
模型上下文协议 (Model Context Protocol, MCP) 是一种开放协议,能够让 AI 助手安全地访问外部工具和数据源。它为 AI 工具与您的服务之间的通信提供了标准化的方式。
genai-mcp 是一个开源的 MCP 服务器,它将 Google Gemini 及兼容的后端包装成统一的 HTTP 接口。它提供:
- 根据文本提示生成图像
- 使用自然语言指令编辑图像
- 与 S3/OSS 集成,实现图像自动存储
- 支持流式 HTTP 传输,兼容主流 MCP 客户端
- 多后端支持(Google Gemini 官方 API、第三方 Gemini 兼容后端如 Nano Banana)
- 多模型支持,包括 通义万象 2.5(更快且更具性价比)
前置条件
- Go 1.21+(如果从源码构建)
- Nano Banana API 密钥(或 Google Gemini API 密钥,或通义万象 API 密钥)
- 可选:用于图像存储的 S3/OSS 桶
第一步:快速部署
选项 A:下载预编译二进制(推荐)
从 Releases 页面 下载对应平台的二进制文件:
# macOS (Apple Silicon)
wget https://github.com/adamydwang/genai-mcp/releases/download/release%2F0.2/genai-mcp.darwin.arm64
chmod +x genai-mcp.darwin.arm64
mv genai-mcp.darwin.arm64 genai-mcp
# Linux
wget https://github.com/adamydwang/genai-mcp/releases/download/release%2F0.2/genai-mcp.linux.amd64
chmod +x genai-mcp.linux.amd64
mv genai-mcp.linux.amd64 genai-mcp
创建配置文件:
# 克隆仓库以获取 env.example
git clone https://github.com/adamydwang/genai-mcp.git
cd genai-mcp
cp env.example .env
选项 B:从源码构建
git clone https://github.com/adamydwang/genai-mcp.git
cd genai-mcp
go build .
第二步:配置后端
genai-mcp 支持多种后端。根据需求选择一种。
选项 1:Nano Banana(第三方 Gemini 兼容后端)
编辑 .env 文件:
# 使用 Gemini 提供者(兼容 Nano Banana 等后端)
GENAI_PROVIDER=gemini
# 指向你的 Nano Banana 端点
GENAI_BASE_URL=https://your-nano-banana-endpoint.com
# 你的 Nano Banana API 密钥
GENAI_API_KEY=your_nano_banana_api_key_here
# 模型名称(根据你的 Nano Banana 设置进行调整)
GENAI_GEN_MODEL_NAME=gemini-3-pro-image-preview
GENAI_EDIT_MODEL_NAME=gemini-3-pro-image-preview
# 请求超时时间(秒)
GENAI_TIMEOUT_SECONDS=120
# 图像输出格式:'base64' 或 'url'
GENAI_IMAGE_FORMAT=url
选项 2:Google Gemini 官方 API
GENAI_PROVIDER=gemini
GENAI_BASE_URL=https://generativelanguage.googleapis.com
GENAI_API_KEY=your_google_gemini_api_key_here
GENAI_GEN_MODEL_NAME=gemini-3-pro-image-preview
GENAI_EDIT_MODEL_NAME=gemini-3-pro-image-preview
GENAI_TIMEOUT_SECONDS=120
GENAI_IMAGE_FORMAT=url
选项 3:通义万象 2.5(更快且更具性价比)
# 使用 Wan 提供者
GENAI_PROVIDER=wan
# 通义万象端点
GENAI_BASE_URL=https://dashscope.aliyuncs.com
# 你的 DashScope API 密钥
GENAI_API_KEY=your_dashscope_api_key_here
# 通义万象模型名称
GENAI_GEN_MODEL_NAME=wan2.5-t2i-preview
GENAI_EDIT_MODEL_NAME=wan2.5-i2i-preview
GENAI_TIMEOUT_SECONDS=120
GENAI_IMAGE_FORMAT=url
服务器与 OSS 配置
在 .env 中添加以下内容:
# 服务器配置
SERVER_ADDRESS=0.0.0.0
SERVER_PORT=8080
# OSS/S3 配置(如果 GENAI_IMAGE_FORMAT=url 则必填)
OSS_ENDPOINT=oss-cn-beijing.aliyuncs.com # 或你的 S3 端点
OSS_REGION=us-east-1
OSS_ACCESS_KEY=your_access_key
OSS_SECRET_KEY=your_secret_key
OSS_BUCKET=your_bucket_name
第三步:启动服务器
./genai-mcp
你应该会看到类似以下的输出:
INFO Starting GenAI MCP Server
INFO Server configuration loaded
INFO MCP server starting address=0.0.0.0:8080/mcp
MCP 接口现已在 http://localhost:8080/mcp 可用。
第四步:测试服务器
项目自带 Python 测试脚本。首先安装依赖:
cd tests
pip install -r requirements.txt
测试连接:
# 列出可用工具
python test_list_tools.py
# 生成图像
python test_generate_image.py "A futuristic cityscape at sunset"
# 编辑图像
python test_edit_image.py "Make it more vibrant" "https://example.com/image.jpg"
第五步:集成到你的工作流工具
与 Cursor 集成
在 Cursor 设置中添加 MCP 服务器:
{
"mcpServers": {
"genai-mcp": {
"url": "http://localhost:8080/mcp",
"transport": "http"
}
}
}
与 Claude Desktop 集成
编辑 Claude Desktop 的配置文件(例如 macOS 上的 ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"genai-mcp": {
"command": "curl",
"args": [
"-X", "POST",
"http://localhost:8080/mcp"
],
"env": {}
}
}
}
与 Dify 集成
在 Dify 中添加自定义工具:
- 名称: Gemini Image Generator
- 方法: POST
- URL:
http://your-server:8080/mcp - Headers:
Content-Type: application/json - Body:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "gemini_generate_image",
"arguments": {
"prompt": "{{prompt}}"
}
}
}
与 n8n 集成
创建一个 HTTP Request 节点:
- Method: POST
- URL:
http://localhost:8080/mcp - Headers:
{
"Content-Type": "application/json"
}
- Body (JSON):
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "gemini_generate_image",
"arguments": {
"prompt": "{{ $json.prompt }}"
}
}
}
与自定义应用集成
简易 Python 示例:
import requests
import json
def generate_image(prompt: str, mcp_url: str = "http://localhost:8080/mcp"):
"""Generate an image using the MCP server."""
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "gemini_generate_image",
"arguments": {"prompt": prompt}
}
}
response = requests.post(mcp_url, json=payload)
response.raise_for_status()
return response.json()