chrischall avatar

Gemini Mcp

chrischall/gemini-mcp

Plugs Claude directly into Google's Gemini image generation API, specifically the Nano Banana and Nano Banana Pro models. You get five tools over stdio: list available models, generate images from text prompts, edit or compose existing images with instructions, batch generate consistent image sets from a master prompt, and run multi-turn refinement sessions via the Interactions API. Images land on disk by default with paths returned, or you can pull them inline as base64. Requires a Gemini API key and runs through the generativelanguage.googleapis.com v1beta endpoint. Reach for this when you need Claude to generate or iterate on images without leaving the MCP context.

tools
21
auth
Secret needed
transport
STDIO
env vars
11
last updated
Nov 7, 2026

Tools

21 tools

Public tool metadata for what this MCP can expose to an agent.

gemini_list_modelsList available Gemini image models and the current default

List available Gemini image models and the current default

No parameter schema in public metadata yet.

gemini_image_generateGenerate image(s) from a text prompt

Generate image(s) from a text prompt

No parameter schema in public metadata yet.

gemini_image_editOne-off edits or multi-image composition with a text instruction (for a series of edits, use `gemini_interact`)

One-off edits or multi-image composition with a text instruction (for a series of edits, use `gemini_interact`)

No parameter schema in public metadata yet.

gemini_image_setGenerate a master image plus N consistent images referencing it

Generate a master image plus N consistent images referencing it

No parameter schema in public metadata yet.

gemini_interactPreferred tool for iterative refinement: multi-turn generation/editing via the Interactions API — chain the returned `interaction_id` via `previous_interaction_id` (or `continue_last: true`)

Preferred tool for iterative refinement: multi-turn generation/editing via the Interactions API — chain the returned `interaction_id` via `previous_interaction_id` (or `continue_last: true`)

No parameter schema in public metadata yet.

gemini_video_generateGenerate a short video (text→video, image→video, two-still interpolation, `edit` or `extend`) via the Gemini omni model; `resolution` 360p/720p/1080p/4k is the cost lever; written to disk as MP4

Generate a short video (text→video, image→video, two-still interpolation, `edit` or `extend`) via the Gemini omni model; `resolution` 360p/720p/1080p/4k is the cost lever; written to disk as MP4

No parameter schema in public metadata yet.

gemini_music_generateGenerate music from a text prompt via a Lyria model — `lyria-3-clip-preview` (30s, default), `lyria-3.5` (full-length, vocals) or `lyria-3-pro-preview`; single-turn; written to disk as MP3

Generate music from a text prompt via a Lyria model — `lyria-3-clip-preview` (30s, default), `lyria-3.5` (full-length, vocals) or `lyria-3-pro-preview`; single-turn; written to disk as MP3

No parameter schema in public metadata yet.

gemini_get_resultFetch an async generation started with `async: true` by its `job_id` (status `running` → `done` result). Lets a long generation outlive a host's `tools/call` timeout

Fetch an async generation started with `async: true` by its `job_id` (status `running` → `done` result). Lets a long generation outlive a host's `tools/call` timeout

No parameter schema in public metadata yet.

gemini_token_usageToken usage and an estimated USD cost for this session so far. Call it before and after a workflow and subtract to attribute that workflow's spend.

Token usage and an estimated USD cost for this session so far. Call it before and after a workflow and subtract to attribute that workflow's spend.

No parameter schema in public metadata yet.

gemini_upload_fileUpload an image (or video/audio) to the Gemini Files API once — from a `url`, `data_base64`, or a local `path` — and get a reusable `files/<id>` reference

Upload an image (or video/audio) to the Gemini Files API once — from a `url`, `data_base64`, or a local `path` — and get a reusable `files/<id>` reference

No parameter schema in public metadata yet.

gemini_list_filesList the files currently uploaded under this API key, with MIME types and expiry times

List the files currently uploaded under this API key, with MIME types and expiry times

No parameter schema in public metadata yet.

gemini_delete_fileDelete an uploaded file before its ~48h expiry (confirmed first — see Confirmations)

Delete an uploaded file before its ~48h expiry (confirmed first — see Confirmations)

No parameter schema in public metadata yet.

gemini_sign_media(hosted deployments only) Mint a fresh signed URL for generated media from its `r2_key` — an expired link is not a dead end

(hosted deployments only) Mint a fresh signed URL for generated media from its `r2_key` — an expired link is not a dead end

No parameter schema in public metadata yet.

gemini_view_media(hosted deployments only) Return a generated image as an inline image block from its `r2_key`, so a model can actually see what it made before refining it

(hosted deployments only) Return a generated image as an inline image block from its `r2_key`, so a model can actually see what it made before refining it

No parameter schema in public metadata yet.

gemini_get_upload_url(hosted deployments only) Mint a short-lived signed PUT URL so a shell can upload a reference image with no auth header; the PUT returns an `r2_key` usable in `images_r2_keys`, `gemini_save_character`, or `gemini_upload_file`

(hosted deployments only) Mint a short-lived signed PUT URL so a shell can upload a reference image with no auth header; the PUT returns an `r2_key` usable in `images_r2_keys`, `gemini_save_character`, or `gemini_upload_file`

No parameter schema in public metadata yet.

gemini_save_character(hosted deployments only) Persistent per-account character library: save a reference image + description under a name, then pass `characters: ["name"]` on generation tools. No expiry

(hosted deployments only) Persistent per-account character library: save a reference image + description under a name, then pass `characters: ["name"]` on generation tools. No expiry

No parameter schema in public metadata yet.

gemini_list_characters(hosted deployments only) Persistent per-account character library: list saved characters. No expiry

(hosted deployments only) Persistent per-account character library: list saved characters. No expiry

No parameter schema in public metadata yet.

gemini_delete_character(hosted deployments only) Persistent per-account character library: delete a saved character. No expiry

(hosted deployments only) Persistent per-account character library: delete a saved character. No expiry

No parameter schema in public metadata yet.

gemini_save_style(hosted deployments only) Persistent per-account style presets: save a reusable prompt fragment (optionally with a reference image), applied by passing `style: "name"` on generation tools. No expiry

(hosted deployments only) Persistent per-account style presets: save a reusable prompt fragment (optionally with a reference image), applied by passing `style: "name"` on generation tools. No expiry

No parameter schema in public metadata yet.

gemini_list_styles(hosted deployments only) Persistent per-account style presets: list saved styles. No expiry

(hosted deployments only) Persistent per-account style presets: list saved styles. No expiry

No parameter schema in public metadata yet.

gemini_delete_style(hosted deployments only) Persistent per-account style presets: delete a saved style. No expiry

(hosted deployments only) Persistent per-account style presets: delete a saved style. No expiry

No parameter schema in public metadata yet.

Sponsors

Configuration

GEMINI_API_KEYsecret

Your Google Gemini API key (aistudio.google.com/apikey)

GEMINI_IMAGE_MODEL

Override the default image model (default: gemini-nano-banana-2.1)

GEMINI_OUTPUT_DIR

Default directory for generated images (default: ~/Downloads/gemini-mcp). When set, a per-call output_dir must be inside it.

GEMINI_INPUT_DIR

Directory to resolve bare input-image filenames against

GEMINI_UPLOAD_DIR

Restrict local-file uploads to the Gemini Files API to these directories (path.delimiter-separated; unset = unrestricted)

GEMINI_REFERENCE_DIR

Restrict local reference images (images / image paths sent to Gemini) to these directories (path.delimiter-separated), plus GEMINI_OUTPUT_DIR. Unset: GEMINI_UPLOAD_DIR applies; if that is unset too, unrestricted locally, and $MCP_DATA_DIR/uploads when MCP_DATA_DIR is set (hosted)

GEMINI_TIMEOUT_MS

Upstream request timeout in ms (default: 60000, or 120000 for image_size: "4K"); each generation tool also takes a per-call timeout_ms

GEMINI_HEARTBEAT_MS

Progress-notification cadence in ms while a generation runs (default: 10000; 0 disables) — keeps MCP hosts that reset their timeout on progress from timing out long generations

GEMINI_CHAIN_RETRY_MS

How long to wait out interactions-store lag when a chained call 404s (default: 120000; 0 disables retrying)

GEMINI_DEBUG

When set, emit heartbeat diagnostics to stderr. Off by default.

GEMINI_RATE_CARD

Override/extend the shipped USD-per-1M-token rates used by gemini_token_usage's cost estimate, e.g. {"gemini-3-pro-image":{"input":2,"text_output":12,"image_output":120}}. Malformed JSON is ignored (a bad card must not fail generations).

Readme

gemini-mcp

CI npm license

MCP server for Google Gemini media generation. Exposes thirteen tools to Claude over stdio: list available models, generate/edit/compose images, generate a consistent set of images from a master prompt, multi-turn image refinement (Interactions API), video generation (omni), music generation (Lyria), an async result poll for long generations, and Files API upload/list/delete for reusable image references. Output is written to disk by default (path returned) or returned inline as base64. Built on the Gemini v1beta API (generativelanguage.googleapis.com) using the Nano Banana / Nano Banana Pro (images), omni (video), and Lyria (music) model families.

Developed and maintained by AI (Claude Code).

Environment Variables


View the full README on GitHub

Details

Repository
github.com/chrischall/gemini-mcp
Category
AI & LLM Tools
Package
@chrischall/gemini-mcp
Transport
STDIO
Auth
Required
Registry
MCP registry, active

More from chrischall

Related AI & LLM Tools MCP servers

View all
1sairaj-reddy avatarAibooma - AI Agent Registrysairaj-reddy/aiboomaAI agent registry — search, discover, register, and connect agents via MCP.0stars
2hustada avatarCollective Memoryhustada/collective-memoryMCP server for persistent, semantic memory across AI sessions0stars
3bluecolumnconsulting-lgtm avatarBluecolumn Memorybluecolumnconsulting-lgtm/bluecolumn-mcpPersistent memory for AI agents — audio intelligence + Music Memory ingestion and recall0stars
4suede-ai avatarAgentic Commerce Catalogsuede-ai/suede-ai-appAI music, video, image, and voice tools callable by agents with USDC payments via x402 on Base.0stars
5lazymac2x avatarAi Prompt Optimizerlazymac2x/ai-prompt-optimizer-apiCloudflare Workers MCP server: ai-prompt-optimizer0stars
6lazymac2x avatarEmbedding Searchlazymac2x/embedding-search-apiCloudflare Workers MCP server: embedding-search0stars