Nano Banana MCP
# 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
Scored across 7 tools
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.
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.
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.
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.