Skip to main content
Glama
caoshuo594

NanoBanana MCP Server

by caoshuo594
README.md
# NanoBanana MCP Server

一个封装 OpenRouter API 的 MCP (Model Context Protocol) 服务器,可供 Claude Code CLI、Claude Desktop 等 MCP 客户端使用。

## 功能特性

- 🚀 通过 MCP 协议访问 OpenRouter API
- 🤖 默认使用 Google Gemini 3 Pro Image Preview 模型
- 💬 支持聊天补全(Chat Completion)
- 📋 支持列出所有可用模型
- 🖼️ 支持文本和图像输入

## 📦 安装

### 方式 1: 通过 uvx(推荐)

使用 `uvx` 直接从 GitHub 运行,无需克隆仓库:

```bash
# 首先安装 uv(如果还没有)
pip install uv
```

#### 在 Claude Code CLI 中配置

编辑 Claude Code 配置文件并添加:

```json
{
  "mcpServers": {
    "nano-banana": {
      "command": "uvx",
      "args": ["nano-banana-mcp@git+https://github.com/caoshuo594/nano_banana.git"],
      "env": {
        "OPENROUTER_API_KEY": "sk-or-v1-your-actual-key-here"
      }
    }
  }
}
```

#### 在 Claude Desktop 中配置

使用相同的配置格式。

### 方式 2: 克隆仓库(用于开发)

```bash
# 1. 克隆仓库
git clone https://github.com/caoshuo594/nano_banana.git
cd nano_banana

# 2. 安装依赖
pip install -r requirements.txt
```

#### 在 Claude Code CLI 中配置

```json
{
  "mcpServers": {
    "nano-banana": {
      "command": "python",
      "args": ["-m", "mcp_server"],
      "cwd": "/path/to/nano_banana",
      "env": {
        "OPENROUTER_API_KEY": "sk-or-v1-your-actual-key-here"
      }
    }
  }
}
```

#### 在 Claude Desktop 中配置

使用相同的配置格式。

### 🔑 获取 OpenRouter API Key

⚠️ **必需步骤**:

1. 访问 [OpenRouter](https://openrouter.ai/)
2. 注册/登录账号
3. 在 [API Keys 页面](https://openrouter.ai/keys) 创建新的 API Key
4. 复制您的 API Key(格式:`sk-or-v1-...`)
5. 在 Claude Desktop 配置的 `env` 部分填入

### 配置说明

- **API URL**: https://openrouter.ai/api/v1
- **默认模型**: google/gemini-3-pro-image-preview

**配置文件位置:**

- **Claude Code CLI**:
  - **Windows**: `%APPDATA%\Claude Code\config.json`
  - **macOS**: `~/Library/Application Support/Claude Code/config.json`
  - **Linux**: `~/.config/claude-code/config.json`

- **Claude Desktop**:
  - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
  - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
  - **Linux**: `~/.config/Claude/claude_desktop_config.json`

⚠️ **重要**: 
- 将 `sk-or-v1-your-actual-key-here` 替换为您的实际 API Key
- 如果使用方式 2,将 `/path/to/nano_banana` 替换为实际路径
- 配置完成后重启 Claude Code CLI 或 Claude Desktop

## 🎨 使用方法

### 在 Claude Code CLI 中使用

配置完成后,在终端中启动 Claude Code,直接描述您的需求:

```bash
claude-code
# 或
claude code

# 然后输入:
帮我生成一张熊猫武士的图片
```

Claude 会自动:
1. 理解您的需求
2. 生成详细的提示词
3. 调用 MCP 图像生成工具
4. 返回 2 张高质量图片(base64 格式)

### 在 Claude Desktop 中使用

使用方式与 Claude Code CLI 相同,直接用自然语言描述需求即可。

### 直接测试(开发用)

可以使用 MCP Inspector 进行测试:

```bash
npx @modelcontextprotocol/inspector python mcp_server.py
```

## 可用工具

### 1. chat_completion

发送聊天补全请求到 OpenRouter API。

**参数**:
- `messages` (必需): 消息数组,每个消息包含 `role` 和 `content`
  - `role`: "user", "assistant", 或 "system"
  - `content`: 消息内容(文本或图像 URL)
- `model` (可选): 使用的模型,默认为 `google/gemini-3-pro-image-preview`
- `temperature` (可选): 采样温度 (0-2),默认为 1
- `max_tokens` (可选): 生成的最大 token 数
- `stream` (可选): 是否流式返回,默认为 false

**示例**:
```json
{
  "messages": [
    {
      "role": "user",
      "content": "你好,请介绍一下自己"
    }
  ],
  "temperature": 0.7
}
```

### 2. list_models

列出 OpenRouter API 上所有可用的模型。

**参数**: 无

## 可用资源

### nano-banana://config

返回 NanoBanana MCP Server 的配置信息,包括 API URL 和默认模型。

## 架构说明

```
┌─────────────────┐
│  MCP 客户端     │
│ (Claude/Gemini) │
└────────┬────────┘
         │ MCP Protocol
         │ (stdio)
┌────────▼────────┐
│  MCP Server     │
│  (mcp_server.py)│
└────────┬────────┘
         │ HTTPS
         │
┌────────▼────────┐
│  OpenRouter API │
│  (Gemini 3 Pro) │
└─────────────────┘
```

## 开发说明

### 项目结构

```
nano_banana/
├── mcp_server.py              # MCP 服务器主程序
├── requirements.txt           # Python 依赖
├── claude_desktop_config.json # Claude Desktop 配置示例
├── README.md                  # 本文档
├── nano_banana.md            # API 配置信息
└── prompt.md                 # 项目需求说明
```

### 修改配置

如需修改 API Key 或默认模型,请编辑 `mcp_server.py` 中的以下常量:

```python
OPENROUTER_API_URL = "https://openrouter.ai/api/v1"
OPENROUTER_API_KEY = "your-api-key-here"
DEFAULT_MODEL = "google/gemini-3-pro-image-preview"
```

### 添加新工具

在 `mcp_server.py` 中:

1. 在 `list_tools()` 函数中添加新工具的定义
2. 在 `call_tool()` 函数中添加工具调用逻辑
3. 实现具体的工具函数

## 故障排除

### 问题:Claude Desktop 无法连接到 MCP 服务器

**解决方案**:
1. 检查 Python 是否在系统 PATH 中
2. 确认 `mcp_server.py` 的路径正确
3. 查看 Claude Desktop 的日志文件
4. 尝试手动运行 `python mcp_server.py` 检查是否有错误

### 问题:API 请求失败

**解决方案**:
1. 检查 API Key 是否有效
2. 确认网络连接正常
3. 查看 OpenRouter API 状态页面
4. 检查是否超出 API 配额

### 问题:依赖安装失败

**解决方案**:
```bash
# 升级 pip
python -m pip install --upgrade pip

# 重新安装依赖
pip install -r requirements.txt --force-reinstall
```

## 许可证

MIT License

## 贡献

欢迎提交 Issue 和 Pull Request!

## 相关链接

- [Model Context Protocol](https://modelcontextprotocol.io/)
- [OpenRouter API](https://openrouter.ai/)
- [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk)