# gemini-image-studio [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/udhaykumarbala/gemini-image-studio-mcp  
**GitHub Stars:** 1  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/gemini-image-studio

## Description
AI image generation and editing with Google Gemini. Structured JSON editing.

## Tools
Capabilities this server exposes over MCP:

- **generate_image** — Create a new image from text or structured JSON prompts.
- **decompose_image** — Analyze an image into a structured JSON blueprint — the first step of the edit workflow.
- **edit_image** — Edit an image using JSON changes or natural language.
- **get_presets** — List available asset presets with dimensions, tips, and conventions.
- **list_generated** — Browse previously generated images.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "gemini-image-studio": {
    "command": "npx",
    "args": ["-y","gemini-image-studio-mcp"]
  }
}
```

## Documentation & README

# gemini-image-studio-mcp

MCP server for AI image generation and editing with Google Gemini. Create web assets, ad creatives, and brand visuals — with structured JSON editing for precise, repeatable control.

[![npm version](https://img.shields.io/npm/v/gemini-image-studio-mcp.svg)](https://www.npmjs.com/package/gemini-image-studio-mcp)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

## What Makes This Different

Most Gemini image MCP servers are basic text-to-image wrappers. This one adds a **structured editing pipeline**:

1. **Generate** an image from text or JSON prompts
2. **Decompose** it into a structured JSON blueprint (every visual component mapped)
3. **Edit** by changing specific fields — `subject[0].hair.color: "platinum_blonde"` — and regenerating

This means precise, isolated changes without affecting the rest of the image. Change a hair color without touching the background. Swap clothing without altering the pose. All through dot-notation JSON paths.

## Features

- **5 MCP Tools** — generate, decompose, edit, presets, list
- **Structured JSON Editing** — decompose images into blueprints, edit specific fields with dot-notation
- **Natural Language Editing** — or just describe the change in plain English
- **10 Built-in Presets** — Facebook ads, Instagram stories, hero images, OG images, YouTube thumbnails, and more
- **Reference Image Support** — up to 14 reference images for character/object consistency
- **Dual Model Support** — Gemini 3.1 Flash (fast) or Gemini 3 Pro (best quality)
- **Blueprint Caching** — decomposed blueprints cached alongside images for instant re-edits
- **Google Search Grounding** — real-world accuracy via web search
- **Smart Error Handling** — retry on rate limits, clear safety block messages, file size warnings

## Quick Start

### 1. Get a Gemini API Key

Get one free at [Google AI Studio](https://aistudio.google.com/apikey).

### 2. Install

```bash
npm install -g gemini-image-studio-mcp
```

### 3. Add to Claude Code

```bash
claude mcp add gemini-image-studio-mcp -e GEMINI_API_KEY=your-key-here -- gemini-image-studio-mcp
```

Or add to your project's `.claude/mcp.json`:

```json
{
  "mcpServers": {
    "gemini-image-studio-mcp": {
      "command": "npx",
      "args": ["-y", "gemini-image-studio-mcp"],
      "env": {
        "GEMINI_API_KEY": "your-key-here"
      }
    }
  }
}
```

### 4. Use It

Ask Claude to generate images:

> "Create a Facebook ad for a coffee shop with warm lighting"

> "Generate a hero image for a tech startup landing page"

> "Edit the hero image — change the background to a sunset beach"

## Tools

### `generate_image`

Create a new image from text or structured JSON prompts.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `prompt` | string | Yes | Text description or JSON prompt |
| `prompt_format` | `"text"` \| `"json"` | No | Prompt format (default: `"text"`) |
| `preset` | string | No | Asset preset (e.g., `"facebook_ad"`, `"hero_image"`) |
| `aspect_ratio` | string | No | Override ratio (`"1:1"`, `"16:9"`, `"9:16"`, etc.) |
| `image_size` | `"1K"` \| `"2K"` \| `"4K"` | No | Resolution (default: `"1K"`) |
| `model` | `"flash"` \| `"pro"` | No | Gemini model (default: `"flash"`) |
| `reference_images` | string[] | No | Paths to reference images for consistency |
| `output_name` | string | No | Custom filename |
| `enable_search_grounding` | boolean | No | Use Google Search for accuracy |

### `decompose_image`

Analyze an image into a structured JSON blueprint — the first step of the edit workflow.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `image_path` | string | Yes | Path to the image |
| `detail_level` | `"basic"` \| `"detailed"` \| `"exhaustive"` | No | Granularity (default: `"detailed"`) |

Returns a full blueprint with `subject`, `scene`, `technical`, `composition`, `text_rendering`, `style_modifiers`, and `meta` sections — each field precisely describing the image's visual components.

### `edit_image`

Edit an image using JSON changes or natural language.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `image_path` | string | Yes | Path to the image |
| `edit_type` | `"json"` \| `"natural_language"` | Yes | Edit mode |
| `changes` | object | For JSON edits | Dot-notation paths to change |
| `instruction` | string | For NL edits | Natural language instruction |
| `blueprint` | object | No | Blueprint (auto-loaded from cache if omitted) |
| `model` | `"flash"` \| `"pro"` | No | Model (default: `"flash"`) |
| `output_name` | string | No | Custom filename |

**JSON edit example** — change hair color and add sunglasses:
```json
{
  "image_path": "/output/portrait.png",
  "edit_type": "json",
  "changes": {
    "subject[0].hair.color": "platinum_blonde",
    "subject[0].accessories": [
      { "item": "sunglasses", "material": "metal", "color": "#C0C0C0" }
    ]
  }
}
```

**Natural language edit example:**
```json
{
  "image_path": "/output/portrait.png",
  "edit_type": "natural_language",
  "instruction": "Change the background to a tropical beach at sunset. Keep the person exactly the same."
}
```

### `get_presets`

List available asset presets with dimensions, tips, and conventions.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `category` | `"ad"` \| `"web"` \| `"social"` \| `"all"` | No | Filter (default: `"all"`) |

### `list_generated`

Browse previously generated images.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `filter` | string | No | Search by filename |
| `limit` | number | No | Max results (default: 20) |
| `include_blueprints` | boolean | No | Include cached blueprints |

## JSON Editing Workflow

The key differentiator — precise, field-level image editing:

```
Step 1: Generate
  generate_image(prompt: "Professional headshot, navy blazer", preset: "linkedin_post")
  → /output/headshot.png

Step 2: Decompose
  decompose_image(image_path: "/output/headshot.png")
  → JSON blueprint with every visual component mapped

Step 3: Edit (precise)
  edit_image(
    image_path: "/output/headshot.png",
    edit_type: "json",
    changes: {
      "subject[0].clothing[0].color": "#8B0000",
      "scene.lighting.type": "studio_softbox"
    }
  )
  → /output/headshot-edit-1.png (blazer changed to dark red, lighting adjusted)

Step 4: Edit (creative)
  edit_image(
    image_path: "/output/headshot-edit-1.png",
    edit_type: "natural_language",
    instruction: "Add warm bokeh to the background"
  )
  → /output/headshot-edit-1-edit-1.png
```

### Dot-Notation Paths

```
subject[0].hair.color          → Hair color
subject[0].hair.style          → Hair style
subject[0].clothing[0].color   → First clothing item color
subject[0].accessories         → Add/change accessories
scene.lighting.type            → Lighting type
scene.location                 → Location/background
text_rendering.text_content    → Text in image
technical.lens                 → Camera lens
composition.framing            → Shot framing
style_modifiers.aesthetic      → Aesthetic style
```

## Built-in Presets

| Preset | Category | Aspect Ratio | Dimensions | Best For |
|--------|----------|-------------|------------|----------|
| `facebook_ad` | Ad | 1:1 | 1080x1080 | Facebook/Instagram feed ads |
| `instagram_story_ad` | Ad | 9:16 | 1080x1920 | Instagram/Facebook story ads |
| `google_display_banner` | Ad | 16:9 | 1200x628 | Google Display Network |
| `hero_image` | Web | 21:9 | 2560x1080 | Above-the-fold hero sections |
| `og_image` | Web | 16:9 | 1200x630 | Social share / link previews |
| `product_card` | Web | 4:5 | 800x1000 | E-commerce product grids |
| `email_header` | Web | 3:1 | 600x200 | Email marketing headers |
| `linkedin_post` | Social | 1:1 | 1080x1080 | LinkedIn feed posts |
| `twitter_post` | Social | 16:9 | 1200x675 | Twitter/X posts |
| `youtube_thumbnail` | Social | 16:9 | 1280x720 | YouTube thumbnails |

## Configuration

| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `GEMINI_API_KEY` | Yes | — | [Google AI Studio](https://aistudio.google.com/apikey) API key |
| `OUTPUT_DIR` | No | `./output` | Where generated images are saved |

## Integration

### Claude Code

```bash
claude mcp add gemini-image-studio-mcp -e GEMINI_API_KEY=your-key -- gemini-image-studio-mcp
```

### Cursor

Add to `.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "gemini-image-studio-mcp": {
      "command": "npx",
      "args": ["-y", "gemini-image-studio-mcp"],
      "env": {
        "GEMINI_API_KEY": "your-key-here"
      }
    }
  }
}
```

### Any MCP Client

```bash
GEMINI_API_KEY=your-key npx gemini-image-studio-mcp
```

The server communicates over stdio using the [Model Context Protocol](https://modelcontextprotocol.io/).

## MCP Prompt & Resource

This server also exposes:

- **Prompt: `nano_banana_expert`** — invoke this to give Claude full knowledge of the JSON schema, editing best practices, and asset creation guidelines
- **Resource: `nanobanana://schema/prompt`** — the raw JSON schema with all enum values for programmatic access

## Models

| Model | ID | Best For |
|-------|------|----------|
| Flash (default) | `gemini-3.1-flash-image-preview` | Fast generation, high volume, cost-effective |
| Pro | `gemini-3-pro-image-preview` | Best quality, complex scenes, professional assets |

## Contributing

Contributions welcome! Please:

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/my-feature`)
3. Run tests (`npm test`)
4. Commit your changes
5. Push and open a PR

## License

[MIT](https://github.com/udhaykumarbala/gemini-image-studio-mcp/blob/HEAD/LICENSE)

