Skip to main content
Glama
README.md
# Nano Banana MCP

MCP server for AI image generation and editing using Google Gemini image models.

## Models

| Product | Model ID | Default |
|---------|----------|---------|
| Nano Banana 2 | `gemini-3.1-flash-image-preview` | Yes |
| Nano Banana | `gemini-2.5-flash-image` | No |
| Nano Banana Pro | `gemini-3-pro-image-preview` | No |

## Setup

```bash
npx nano-banana-mcp setup
```

This interactive wizard lets you choose:
1. **Google OAuth** (default) -- opens browser for one-click authorization
2. **API Key** -- paste your key from [Google AI Studio](https://aistudio.google.com/apikey)

## MCP Client Configuration

### Claude Code

```json
{
  "mcpServers": {
    "nano-banana": {
      "command": "npx",
      "args": ["nano-banana-mcp"]
    }
  }
}
```

### Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "nano-banana": {
      "command": "npx",
      "args": ["nano-banana-mcp"]
    }
  }
}
```

## Tools

### `generate_image`

Create an image from a text prompt.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `prompt` | string | Yes | Text description of the image to generate |
| `model` | string | No | Model ID (defaults to `gemini-3.1-flash-image-preview`) |
| `aspectRatio` | string | No | One of `1:1`, `16:9`, `9:16`, `4:3`, `3:4` (default: `1:1`) |

### `edit_image`

Edit an existing image using a text prompt.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `prompt` | string | Yes | Instructions for how to edit the image |
| `imagePath` | string | Yes | Path to the source image |
| `referenceImages` | string[] | No | Paths to reference images for style/context |
| `model` | string | No | Model ID |

### `continue_editing`

Refine the last generated or edited image.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `prompt` | string | Yes | Refinement instructions |
| `model` | string | No | Model ID |

### `configure_auth`

Set a Gemini API key at runtime.

### `get_status`

Check auth state, current model, and output directory.

### `get_last_image`

Get metadata about the most recently generated/edited image.

### `list_models`

List available models with current default.

## Environment Variables

| Variable | Description |
|----------|-------------|
| `NANO_BANANA_CLIENT_ID` | Override embedded OAuth client ID |
| `NANO_BANANA_CLIENT_SECRET` | Override embedded OAuth client secret |
| `GEMINI_API_KEY` | Gemini API key (skips stored credentials) |
| `NANO_BANANA_OUTPUT_DIR` | Custom image output directory |
| `NANO_BANANA_CONFIG_DIR` | Custom config directory |

## Development

```bash
npm install
npm run build
npm test
npm run test:coverage
```

## License

MIT

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation4/5

Each tool has a distinct role, but edit_image and continue_editing both modify an image based on a prompt, so an agent might briefly hesitate between them. The dependency note on continue_editing and the 'existing image' wording in edit_image reduces but does not eliminate this overlap.

Naming Consistency5/5

All tool names use a consistent snake_case verb-first pattern: list_models, generate_image, edit_image, configure_auth, get_status, get_last_image. continue_editing fits the same pattern despite using a gerund rather than a simple noun.

Tool Count5/5

Seven tools is well-scoped for a focused image-generation/editing server. Each tool covers a necessary part of the workflow without redundancy or bloat.

Completeness5/5

The surface covers authentication, model discovery, generation, editing, iterative refinement, status checking, and access to the latest output metadata. There are no obvious dead ends; model selection is handled via parameters, and image files are returned as paths.

Maintenance

ActivityInactive
ResponsivenessNo issues