Skip to main content
Glama
README.md
# gemini-image-mcp

一个基于 **MCP (Model Context Protocol)** 的 Node.js 服务:通过本地 `OpenAI-compatible` 网关(默认 `http://127.0.0.1:8317`)调用 Gemini 图片模型 `gemini-3-pro-image-preview` 生成图片,供 Claude Code/Claude Desktop 等 IDE 工具动态使用。

## 1) 安装

```bash
npm install
```

## 2) 环境变量(可选)

- `OPENAI_BASE_URL`:OpenAI-compatible 服务地址(默认 `http://127.0.0.1:8317`)
- `OPENAI_API_KEY`:如果你的网关需要鉴权就填(可留空)
- `OPENAI_MODEL`:默认 `gemini-3-pro-image-preview`
- `OPENAI_IMAGE_SIZE`:可选,仅作为未传入 `size` 时的默认值;建议让客户端在调用 `generate_image` 时自己传 `size`
- `OPENAI_IMAGE_MODE`:`chat|images|auto`,默认 `chat`(CLIProxyAPI 这类网关通常用 `/v1/chat/completions` 出图;若你的网关支持 `/v1/images/generations` 可设为 `images`)
- `OPENAI_IMAGE_RETURN`:`path|image`,默认 `path`(`path` 会把图片保存到本地并返回文件路径,避免 base64 导致 token 暴涨;`image` 返回 MCP `image` content)
- `OPENAI_IMAGE_OUT_DIR`:保存目录(默认 `debug-output/`;相对路径以项目根目录为基准)
- `OPENAI_DEBUG`:设为 `1` 时会在 stderr 打印上游请求信息(不打印 key)
- `OPENAI_TIMEOUT_MS`:默认 `120000`

可参考 `.env.example`。

## 3) 本地调试(不用放进 Claude Code)

推荐把 `.env.example` 复制成 `.env`,然后在 `.env` 里填好 `OPENAI_API_KEY`(`.gitignore` 已忽略 `.env`)。

- 直连上游调试(确认你的 `http://127.0.0.1:8317` 是否能出图):
  - `npm run debug:upstream -- --prompt "A beautiful sunset over mountains" --size 1024x1024`
- 走 MCP 工具调试(等价于 Claude Code 调用 `generate_image`):
  - `npm run debug:mcp -- --prompt "A beautiful sunset over mountains" --n 1 --size 1024x1024`

图片会输出到 `debug-output/`。

## 4) 作为 MCP Server 使用(stdio)

该项目是 **stdio** 传输方式的 MCP Server,不建议直接在终端手动运行(会等待客户端请求)。

在 Claude Code / Claude Desktop 的 MCP 配置里添加类似如下(按你的实际路径修改):

```json
{
  "mcpServers": {
    "gemini-image": {
      "command": "node",
      "args": ["d:/task/myself/nodejs/geminiimagemcp/src/index.js"],
      "env": {
        "OPENAI_BASE_URL": "http://127.0.0.1:8317",
        "OPENAI_API_KEY": "<YOUR_KEY>",
        "OPENAI_MODEL": "gemini-3-pro-image-preview"
      }
    }
  }
}
```

也可以直接参考 `mcp.example.json`。

## 5) 可用工具

- `generate_image`
  - 入参:`prompt`(必填), `size`(可选), `n`(可选,1-4), `output`(可选:`path|image`), `outDir`(可选)
  - 返回:默认返回保存后的图片文件路径(多行);`output=image` 时返回 MCP `image` content(base64 + mimeType)

TDQS

A4.2/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion between tools. The single tool has a clearly defined purpose.

Naming Consistency5/5

Only one tool exists, so naming conventions are inherently consistent. The name 'generate_image' is clear and verbs are used appropriately.

Tool Count4/5

The server focuses on image generation, and one tool is reasonable for this narrow scope. While it is minimal, it fully covers the core functionality without unnecessary complexity.

Completeness5/5

The tool covers all essential aspects of image generation: it offers both local file saving and MCP image content output. No obvious gaps for the intended purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues