AI image generation and editing for Claude Code via Gemini. Generate, edit, and iteratively refine images using text prompts without leaving your terminal.
npx claudepluginhub dojocodinglabs/nanobanana-mcpAI image generation and editing for Claude Code via Gemini. Generate, edit, and iteratively refine images using text prompts without leaving your terminal.
Official prompts.chat marketplace - AI prompts, skills, and tools for Claude Code
Behavioral guidelines to reduce common LLM coding mistakes, derived from Andrej Karpathy's observations
Claude Code plugins for the Slidev presentation framework
Share bugs, ideas, or general feedback.
A hardened MCP server for Gemini image generation. Fork of ConechoAI/Nano-Banana-MCP with security fixes, strict TypeScript, and model selection.
generate_image, edit_image, continue_editingNANOBANANA_MODEL env var with whitelist validationany types, Zod validation on all inputsAdd to ~/.claude/settings.json:
{
"mcpServers": {
"nanobanana": {
"command": "npx",
"args": ["tsx", "/path/to/nanobanana-mcp/src/index.ts"],
"env": {
"GEMINI_API_KEY": "your-api-key",
"NANOBANANA_MODEL": "gemini-2.5-flash-image"
}
}
}
}
GEMINI_API_KEY=your-key npx tsx src/index.ts
The server communicates over stdio using the MCP protocol.
generate_imageGenerate a new image from a text prompt.
prompt (required): Text describing the image to create (max 10,000 chars)
edit_imageEdit an existing image with a text prompt.
imagePath (required): Full file path to the image to edit
prompt (required): Text describing the modifications (max 10,000 chars)
referenceImages (optional): Array of file paths to reference images
continue_editingContinue editing the last generated/edited image in the current session.
prompt (required): Text describing changes to make (max 10,000 chars)
referenceImages (optional): Array of file paths to reference images
All configuration is via environment variables. No config files are written to disk.
| Variable | Required | Description |
|---|---|---|
GEMINI_API_KEY | Yes | Google Gemini API key |
NANOBANANA_GEMINI_API_KEY | No | Override for GEMINI_API_KEY (takes priority) |
NANOBANANA_MODEL | No | Model to use (see below) |
| Model ID | Description |
|---|---|
gemini-2.5-flash-image | Fast generation, good for high-volume use (default) |
gemini-3-pro-image-preview | Pro quality, complex prompts, better text rendering |
gemini-3.1-flash-image-preview | Latest model, advanced features |
Generated images are saved to ~/nanobanana-images/ with unique filenames. The tool response includes both the file path and the image data inline.
This fork addresses the following security issues from the original:
| Issue | Fix |
|---|---|
| API key saved to disk in plaintext | Removed config file persistence entirely |
configure_gemini_token tool accepts key via MCP | Tool removed; keys only via env vars |
Path traversal in editImage | validatePath() checks paths resolve within $HOME or $TMPDIR |
| No prompt length validation | Capped at 10,000 chars via Zod |
| Hardcoded model | NANOBANANA_MODEL env var with whitelist |
| Silent swallowing of reference image errors | Errors now thrown and reported |
Math.random() for filenames | crypto.randomUUID() |
| No file size limit on reads | Max 20MB |
| Verbose errors leak internal paths | Sanitized error messages |
process.cwd() fallback for output dir | Fixed to ~/nanobanana-images/ |
npm install
npm run typecheck # Type check without emitting
npm run dev # Run with tsx (hot reload)
npm run build # Compile to dist/
src/
index.ts # MCP server entry point (3 tool handlers)
gemini-client.ts # Gemini API wrapper with model selection
file-handler.ts # Secure file I/O with path validation
types.ts # TypeScript interfaces and Zod schemas
MIT - Based on ConechoAI/Nano-Banana-MCP