Skip to main content
Glama

Gemini Nano Banana MCP

An MCP (Model Context Protocol) server for AI-powered image generation, editing, and video generation using Google Gemini and Veo. Works with Claude Code, Cursor, and any MCP-compatible client.

Features

  • Text-to-Image Generation - Generate images from text prompts via Gemini AI

  • Image Editing - Edit existing images with natural language instructions

  • Reference Images - Use reference images for style and content guidance

  • Text-to-Video Generation - Generate videos from text prompts using Veo (veo-3.1, veo-3, veo-2)

  • Image-to-Video - Use an image as the first frame for video generation

  • First & Last Frame Interpolation - Generate videos between two keyframe images

  • Session Memory - Continue editing the last image without re-specifying the path

  • Configurable Models - Choose any Gemini model for images, any Veo model for videos

  • Media History - Track and browse recently generated images and videos

  • Cross-Platform - Works on macOS, Windows, and Linux

Related MCP server: Gemini Media MCP

Quick Start

1. Get a Gemini API Key

Get your free API key from Google AI Studio.

2. Install

npm install -g @seungmanchoi/nano-banana-mcp

Or install from source:

git clone https://github.com/seungmanchoi/nano-banana-mcp.git
cd nano-banana-mcp
npm install
npm run build

3. Configure Your MCP Client

Claude Code

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "nano-banana": {
      "command": "npx",
      "args": ["-y", "@seungmanchoi/nano-banana-mcp"],
      "env": {
        "GEMINI_API_KEY": "your-api-key-here"
      }
    }
  }
}

Cursor

Add to your MCP settings:

{
  "mcpServers": {
    "nano-banana": {
      "command": "npx",
      "args": ["-y", "@seungmanchoi/nano-banana-mcp"],
      "env": {
        "GEMINI_API_KEY": "your-api-key-here"
      }
    }
  }
}

From Source

If installed from source, use the absolute path:

{
  "mcpServers": {
    "nano-banana": {
      "command": "node",
      "args": ["/absolute/path/to/nano-banana-mcp/dist/index.js"],
      "env": {
        "GEMINI_API_KEY": "your-api-key-here"
      }
    }
  }
}

You can also skip the env field and configure the API key at runtime using the configure_api_key tool.

Authentication Modes

This server supports two authentication modes. The default is API key mode (above).

Mode A — API key (official, default)

Uses a Gemini API key from Google AI Studio. Supports image generation, image editing, and video (Veo). Note that image generation models are largely a paid feature.

Drives your logged-in gemini.google.com session via its session cookies instead of an API key. Free, and supports image generation + editing only (no video).

⚠️ This mode is unofficial. It talks to an undocumented internal endpoint, not the official API. It may break when Google changes things, cookies expire periodically and must be re-extracted, and use is a Terms-of-Service gray area. Intended for personal use with your own account.

1. Extract your cookies from a browser where you're logged into gemini.google.com:

  1. Open https://gemini.google.com and sign in.

  2. DevTools (F12) → ApplicationCookieshttps://gemini.google.com.

  3. Copy the value of __Secure-1PSID (required) and __Secure-1PSIDTS (recommended).

2a. Configure via environment variables:

{
  "mcpServers": {
    "nano-banana": {
      "command": "npx",
      "args": ["-y", "@seungmanchoi/nano-banana-mcp"],
      "env": {
        "GEMINI_AUTH_MODE": "gemini-web",
        "GEMINI_SECURE_1PSID": "your-__Secure-1PSID-value",
        "GEMINI_SECURE_1PSIDTS": "your-__Secure-1PSIDTS-value"
      }
    }
  }
}

2b. Or configure at runtime with the configure_google_login tool:

Use configure_google_login with secure1psid "<...>" and secure1psidts "<...>"

This switches the active mode to gemini-web and persists to ~/.nano-banana/config.json. Run configure_api_key again at any time to switch back to API key mode.

Model Configuration

Image Models

The default image model is gemini-2.0-flash-preview-image-generation. You can change it in several ways:

Option 1: Environment Variable

Set GEMINI_MODEL in your MCP client config:

{
  "mcpServers": {
    "nano-banana": {
      "command": "npx",
      "args": ["-y", "@seungmanchoi/nano-banana-mcp"],
      "env": {
        "GEMINI_API_KEY": "your-api-key-here",
        "GEMINI_MODEL": "gemini-2.0-flash-preview-image-generation"
      }
    }
  }
}

Option 2: Runtime Tool

Use the configure_model tool to change the default model at runtime. The setting persists across sessions in ~/.nano-banana/config.json.

Set the model to imagen-3.0-generate-002

Option 3: Per-Request Override

Pass the model parameter directly to generate_image, edit_image, or continue_editing to override the default for a single request:

Generate an image of a cat using model imagen-3.0-generate-002

Model Priority

  1. Per-request model parameter (highest priority)

  2. GEMINI_MODEL environment variable

  3. Config file (~/.nano-banana/config.json)

  4. Default: gemini-2.0-flash-preview-image-generation

Available Image Models

Model

Tier

Description

gemini-2.0-flash-preview-image-generation

Free

Default. Native image generation via Gemini 2.0 Flash.

imagen-3.0-generate-002

Paid

Best quality. Google's dedicated image generation model.

imagen-3.0-fast-generate-001

Paid

Fast variant of Imagen 3, optimized for speed.

Note: Free-tier API keys support gemini-2.0-flash-preview-image-generation. Imagen models require billing enabled on your Google Cloud project.

Available Video Models

Model

Description

veo-3.1-generate-preview

Latest. Native audio, scene extension, reference images, 4K support.

veo-3-generate-preview

Previous generation with audio support.

veo-2-generate-preview

Older generation, stable.

For the latest list of models, see Google AI documentation.

Tools

Image Tools

Tool

Description

configure_api_key

Set or update the Gemini API key (switches to apiKey mode). Persists across sessions.

configure_google_login

Switch to free, unofficial gemini-web mode using consumer Gemini cookies (secure1psid, optional secure1psidts). Image generation + editing only.

configure_model

Set the default Gemini model for images (apiKey mode). Persists across sessions.

generate_image

Generate a new image from a text description. Supports optional model override.

edit_image

Edit an existing image with text instructions, optional reference images, and optional model override.

continue_editing

Continue editing the last generated/edited image in the session. Supports optional model override.

list_history

List recently generated and edited images with prompts and timestamps.

Video Tools

Tool

Description

generate_video

Generate a video from a text prompt. Supports text-to-video, image-to-video, and frame interpolation.

list_video_history

List recently generated videos with prompts, models, and timestamps.

Utility Tools

Tool

Description

get_status

Check configuration status, active models, output directories, and last image/video info.

Usage Examples

Image Generation

Generate an image of a sunset over mountains with a lake reflection
Edit the image at ~/nano-banana-images/gen_2025-01-01.png to add a boat on the lake
Continue editing - make the sky more vibrant with orange and pink tones

Video Generation

Generate a video of ocean waves crashing on a rocky shore at sunset
Generate a video of a cat playing with yarn, model veo-3.1-generate-preview, resolution 1080p, duration 8 seconds

Image-to-Video (First Frame)

Generate a video starting from the image at ~/nano-banana-images/gen_2025-01-01.png showing the scene coming to life with wind blowing through the trees

First + Last Frame Interpolation

Generate a video transitioning from the image at ~/images/start.png to ~/images/end.png with a smooth camera pan

Portrait Video

Generate a video of a person walking through a garden, aspect ratio 9:16

History & Status

Show me the last 5 images I generated
Show me recent video history
Check the current status
Switch to imagen-3.0-generate-002 model for higher quality

Video Generation Details

Configuration Options

Parameter

Options

Default

Description

model

veo-3.1-generate-preview, veo-3-generate-preview, veo-2-generate-preview

veo-3.1-generate-preview

Veo model to use

aspectRatio

16:9, 9:16

16:9

Landscape or portrait

resolution

720p, 1080p, 4k

720p

Output resolution

durationSeconds

4, 6, 8 (number)

Varies by model

Video length

numberOfVideos

1+

1

Number of variants

negativePrompt

Any text

-

Elements to avoid

Generation Modes

  1. Text-to-Video: Provide only a prompt

  2. Image-to-Video: Provide prompt + imagePath (used as first frame)

  3. Frame Interpolation: Provide prompt + imagePath (first frame) + lastFramePath (last frame)

Important Notes

  • Video generation takes 1-6 minutes depending on load

  • Generated videos are saved as .mp4 files

  • Videos are watermarked with SynthID technology

  • Pricing: $0.75 per second of generated video

  • Videos are retained on Google servers for 2 days after generation

API Key Configuration

The server loads the API key in the following priority order:

  1. Environment variable - GEMINI_API_KEY

  2. Config file - ~/.nano-banana/config.json

  3. Runtime - via the configure_api_key tool

File Storage

Images

Platform

Path

macOS / Linux

~/nano-banana-images/

Windows

Documents\nano-banana-images\

Videos

Platform

Path

macOS / Linux

~/nano-banana-videos/

Windows

Documents\nano-banana-videos\

Project Structure

src/
├── index.ts              # Entry point
├── server.ts             # MCP server setup and request routing
├── config/
│   └── settings.ts       # API key and model management
├── services/
│   ├── gemini.ts         # Google Gemini & Veo API client
│   └── storage.ts        # Image/video file I/O and history tracking
├── tools/
│   ├── definitions.ts    # MCP tool schemas
│   └── handlers.ts       # Tool request handlers
└── types/
    └── index.ts          # TypeScript type definitions

Development

npm run dev          # Run with tsx (no build needed)
npm run build        # Compile TypeScript
npm run typecheck    # Type check without emitting
npm run lint         # Run ESLint

Tech Stack

  • Runtime: Node.js

  • Language: TypeScript (strict mode, ES2022)

  • MCP SDK: @modelcontextprotocol/sdk

  • AI Models: Google Gemini (images) + Veo (videos)

  • Validation: Zod

License

MIT

Available Tools

10 tools
configure_api_keyA

Set or update the Gemini API key for image generation. The key is stored locally and persists across sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyYesYour Google Gemini API key (get one at https://aistudio.google.com/apikey)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the behavioral disclosure burden. It does add useful context by stating the key is stored locally and persists across sessions, but it does not mention overwrite behavior, security implications, or what happens if an invalid key is provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no filler. The primary action and scope are front-loaded, and the persistence detail is a valuable addition that earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple configuration setter with a single parameter and no output schema, the description covers the essential behavior: what it does, where the key is stored, and that it persists. It could mention that this key is required before using generate_image, but the sibling context makes that inference straightforward.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage for the single parameter, including a clear description and a URL for obtaining the key. The tool description does not add additional parameter semantics, which is acceptable given the schema's completeness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Set or update') and names the exact resource ('Gemini API key for image generation'), making the tool's purpose immediately clear. It also distinguishes itself from sibling tools like configure_openai_api_key and configure_google_login.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this tool is used to configure the Gemini key needed for image generation, and that it can be used both for initial setup and updating an existing key. It does not explicitly name when not to use it or direct to alternatives, so it misses the top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

configure_google_loginA

Switch to the free, unofficial "gemini-web" auth mode that uses your logged-in consumer Gemini (gemini.google.com) session instead of an API key. Supports image generation and editing (no video). Extract the cookies from your browser DevTools (Application > Cookies > gemini.google.com). Cookies are stored locally and may need re-extraction when they expire.

ParametersJSON Schema
NameRequiredDescriptionDefault
secure1psidYesThe __Secure-1PSID cookie value from gemini.google.com (required)
secure1psidtsNoThe __Secure-1PSIDTS cookie value (recommended; improves session stability)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It discloses that this is an unofficial auth mode, that cookies are stored locally, that re-extraction may be needed on expiration, and that video is not supported. It omits side effects such as whether existing API key settings are overwritten, but overall the key behavioral traits are surfaced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three focused sentences deliver the core purpose, capability scope, and operational instructions without filler. Each sentence carries distinct information, and the main action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the moderate complexity and absence of both annotations and output schema, the description covers the essential operational context: what mode it switches to, what it supports, how to obtain cookies, and their persistence/expiration. Some gaps remain around reversible configuration and exact impact on other auth methods, but the tool can be invoked correctly with the provided information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers both parameters at 100%, giving a baseline of 3. The description adds practical value by telling the user to extract cookies from browser DevTools at the specific location, which helps correctly obtain the cookie values. It also warns that cookies expire, adding context not present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Switch to') and names the exact resource ('free, unofficial gemini-web auth mode'), making the tool's purpose immediately clear. It also distinguishes itself from API-key-based siblings by explicitly saying 'instead of an API key' and noting its feature scope (image generation/editing, no video).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use this tool: when the agent should use a consumer Gemini session instead of an API key. It contrasts with API-key configuration and defines supported capabilities (image, not video). It does not explicitly name alternatives like configure_api_key or state when not to use it, but the context is strong enough for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

configure_modelA

Set the default Gemini model for image generation and editing. Persists across sessions. Use "quality" param to set either "high" (default) or "fast" model tier. High-quality: gemini-3.1-flash-image-preview (default). Fast/cheap: gemini-2.5-flash-image (default fast).

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesGemini model ID to use
qualityNoWhich model tier to set: "high" (default, best quality) or "fast" (cheaper/faster). Defaults to "high".

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the behavioral disclosure burden. It does disclose persistence across sessions, which is an important side effect. However, it does not mention authorization needs, whether this overwrites an existing setting, or any other side effects beyond persistence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences, front-loads the primary purpose, and each sentence adds information about persistence or model/quality mapping. It could be more concise, but there is no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and no annotations, so the description must be more complete. It omits any explanation of the required 'model' parameter and the relationship between 'model' and 'quality'. The persistence and default model mappings are helpful, but the missing required-parameter guidance is a significant completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description does add useful meaning by mapping 'quality' values to concrete model IDs and defaults. However, it creates a serious ambiguity: the schema marks 'model' as required, yet the description tells the agent to use the 'quality' param to set the model tier and never explains how 'model' and 'quality' interact. An agent could reasonably call the tool with only 'quality' and fail validation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Set the default Gemini model for image generation and editing.' It clearly distinguishes this tool from sibling configuration tools like configure_api_key and configure_google_login by scoping it to the Gemini image model default.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use this tool when you want to change the persistent default Gemini model for image generation/editing. It does not explicitly state when not to use it or name alternatives, but the purpose is obvious enough among the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

continue_editingA

Continue editing the last generated or edited image. Automatically uses the most recent image from the session.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesInstructions for the next edit
referenceImagesNoOptional reference images for guidance
modelNoOptional model override for this request
qualityNoModel tier: "high" (best quality, default) or "fast" (cheaper/faster)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does usefully reveal the stateful behavior of automatically selecting the most recent image, but it does not describe mutation effects, error behavior if no prior image exists, or what the tool returns. For a tool that performs editing, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The core action is stated first, and the key automatic behavior is added in the second sentence. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The central ambiguity—which image to edit—is resolved clearly. However, the tool has no annotations or output schema, and the description omits failure behavior, return format, and whether the operation modifies session state beyond the previous image. It is adequate for a simple invocation but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (prompt, model, quality, referenceImages) are already documented in the input schema. The description adds no parameter-specific semantics, but the schema already handles that burden, so a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair ('Continue editing the last generated or edited image') and clearly identifies the target as the most recent session image. This automatically distinguishes it from sibling tools like edit_image or generate_image, which would operate on a newly specified image or create a new one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the correct use case: after at least one image has been generated or edited, apply further edits to that same image. However, it does not explicitly state when to use this tool versus edit_image, nor does it mention prerequisites such as 'requires an existing image in session' or what happens if no prior image exists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_imageB

Edit an existing image based on text instructions. Provide the file path of the image to modify.

ParametersJSON Schema
NameRequiredDescriptionDefault
imagePathYesAbsolute file path to the image to edit
promptYesInstructions for how to edit the image
referenceImagesNoOptional array of file paths to reference images for style or content guidance
modelNoOptional model override for this request
qualityNoModel tier: "high" (best quality, default) or "fast" (cheaper/faster)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It does not state whether the original file is overwritten, whether a new image path is returned, or what side effects editing has. 'Edit an existing image' leaves persistence and output behavior ambiguous.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The core action is front-loaded, and the second sentence reinforces the key required input without repeating schema verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description must compensate. It leaves essential execution context undisclosed, such as whether the edit is in-place, what the return value is, and which image formats are supported. Despite complete parameter documentation, the behavioral picture is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes all five parameters with 100% coverage, so the baseline is 3. The description merely restates 'file path' and 'text instructions', adding no extra meaning for model, quality, or referenceImages.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Edit'), a clear resource ('existing image'), and the method ('based on text instructions'). The word 'existing' distinguishes it from sibling generate_image, making the tool's function unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: use this when an image already exists and needs modification. However, the description does not explicitly contrast with closely related siblings like generate_image or continue_editing, nor does it state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_imageA

Generate a new image from a text description using Gemini AI. Returns the generated image and saves it to disk.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesDetailed description of the image to generate
modelNoOptional model override for this request
qualityNoModel tier: "high" (best quality, default) or "fast" (cheaper/faster)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose two important behaviors: the tool returns the generated image and saves it to disk, and it identifies the model provider. However, it does not specify where the image is saved, what output format to expect, or whether any system state changes beyond the file save occur.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence. The core action is front-loaded ('Generate a new image from a text description'), followed by the key side effect and return behavior. Every clause contributes meaningful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and no annotations, the description is adequate but incomplete. It conveys the essential action and result, but leaves gaps such as the save location/filename, whether an API key or model configuration is required, and how it relates operationally to the sibling edit_image tool. These gaps add uncertainty when an agent decides whether this is the right tool and what consequences invocation will have.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all three parameters with 100% coverage, so the description does not need to carry much parameter weight. The description adds only a loose connection between 'text description' and the prompt parameter, and 'Gemini AI' with the model concept, but no parameter-specific guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action — 'Generate a new image from a text description' — and names the provider ('Gemini AI'). This distinguishes it from siblings like edit_image, continue_editing, and generate_openai_image, so an agent can immediately understand what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'new image from a text description' implies this is for generation rather than editing or continuing, and the mention of 'Gemini AI' distinguishes it from OpenAI-based siblings. However, the description does not explicitly state when to use this tool over alternatives, nor does it mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_videoA

Generate a video from a text prompt using Gemini Veo. Supports text-to-video, image-to-video (first frame), and first+last frame interpolation. Video generation takes 1-6 minutes. Available models: veo-3.1-generate-preview (latest), veo-3-generate-preview, veo-2-generate-preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesDetailed description of the video to generate. Include subject, action, style, camera movement, and atmosphere.
modelNoVeo model to use. Options: veo-3.1-generate-preview (default, latest), veo-3-generate-preview, veo-2-generate-preview.
imagePathNoOptional: Absolute file path to an image to use as the first frame (image-to-video generation).
lastFramePathNoOptional: Absolute file path to an image to use as the last frame (first+last frame interpolation). Requires imagePath to be set.
aspectRatioNoAspect ratio of the video. Options: "16:9" (default, landscape), "9:16" (portrait).
resolutionNoVideo resolution. Options: "720p" (default), "1080p", "4k".
durationSecondsNoVideo duration in seconds. Options: 4, 6, 8 (default varies by model).
numberOfVideosNoNumber of video variants to generate (default: 1).
negativePromptNoOptional: Elements to avoid in the generated video.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It usefully discloses latency ('takes 1-6 minutes') and model options with the latest flagged. However, it omits output behavior, authentication requirements, and post-generation steps such as polling or checking video history.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three tight, front-loaded sentences covering purpose, modes, latency, and model availability. There is no filler, and every sentence contributes actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter, long-running generation tool with no output schema and no annotations, the description omits what happens after generation: where the video is saved, whether the call is asynchronous, and how to retrieve the result. The sibling list_video_history hints at the missing flow, but the description itself is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents defaults and parameter relationships (e.g., lastFramePath requires imagePath). The description mostly restates model names and modes that appear in the schema, adding minimal new parameter-level semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Generate a video from a text prompt using Gemini Veo.' It also enumerates supported modes (text-to-video, image-to-video, first+last frame), which clearly distinguishes it from image-generation siblings like generate_image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes clear context by framing the tool as video generation and listing the supported generation modes. It does not explicitly name alternative tools or state when not to use this tool, but the video-vs-image distinction is strongly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_statusA

Check the current configuration status, active model, and last image/video information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. The word 'Check' implies a read-only operation and the description names the data that will be retrieved, but it does not explicitly state that no configuration changes are made, whether any side effects occur, or what the response structure looks like beyond the listed categories.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the action and lists the key return areas without redundancy or filler. Every word contributes to understanding the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, parameterless status tool, the description covers the essential content: configuration status, active model, and last image/video information. It could be slightly more complete by explicitly noting the operation is read-only and has no side effects, but the context is adequately covered for the tool's low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there are no parameter semantics to clarify. The description adds value by explaining what information the tool returns, which is more useful than the empty input schema alone. This matches the baseline for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Check') with a clear resource ('current configuration status, active model, and last image/video information'). It is immediately distinct from sibling tools that configure or generate content, so an agent can identify what this tool is for without inspecting other definitions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by the verb 'Check' and the read-only subject matter, but the description does not explicitly state when to use this tool versus alternatives or mention exclusions. There is no direct guidance such as 'Use configure_model to change settings instead', though such guidance is not essential given the obvious distinction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_historyA

List recently generated and edited images with their prompts and timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of recent images to show (default: 10, max: 50)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It discloses the core behavior—listing recent images with prompts and timestamps—and implies a read-only operation via 'List.' However, it does not specify ordering, what 'recent' means, or whether the operation has any side effects, though those are less critical for a list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the action and resource, then adds the valuable detail about prompts and timestamps. There is no unnecessary information or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with one optional parameter and no output schema, the description is mostly complete: it states what is returned and the scope. Minor gaps remain, such as the exact meaning of 'recent' and ordering behavior, but these are low-risk for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully documents the only parameter (count) with its default and maximum, so schema coverage is 100%. The description adds no additional parameter-level meaning, and the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb (List) with a clear resource (recently generated and edited images), and specifies the return content (prompts and timestamps). This distinguishes it from sibling list_video_history, which focuses on videos, without needing to inspect schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates the tool is for image history by explicitly scoping to 'generated and edited images.' It does not explicitly name alternatives or state when not to use it, but the resource scoping makes the usage context clear enough for an agent to select it over the video-history sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_video_historyA

List recently generated videos with their prompts, models, and timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of recent videos to show (default: 10, max: 50)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral context. 'List' conveys a read-only operation and 'recently' implies temporal ordering/filtering, but the description doesn't disclose limits, pagination, ordering guarantees, or error behavior. This is minimal but acceptable for a simple listing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence states exactly what the tool does with no redundant filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one optional parameter, no output schema), and the description covers the key return fields. Minor omissions such as explicit ordering and the relationship to list_history keep it from being fully complete, but it is sufficient for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the only parameter, count, already has a description with default and max. The tool description adds no parameter-specific semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('recently generated videos'), and specifies the returned fields (prompts, models, timestamps). This clearly distinguishes it from image-generation siblings and from the generic list_history sibling by narrowing scope to videos.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus alternatives, especially list_history, which could overlap. The description states what it lists but says nothing about exclusions, prerequisites, or a decision rule between the history tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv1.3.0
    • First observedconfigure_api_key
    • First observedconfigure_google_login
    • First observedconfigure_model
    • First observedcontinue_editing
    • First observededit_image
    • First observedgenerate_image
    • First observedgenerate_video
    • First observedget_status
    • First observedlist_history
    • First observedlist_video_history

TDQS

A4/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct operation: configuration tools are separated by purpose (API key, Google login, model), image tools separate generation from editing and continuation, video tool stands alone, and info tools provide status and history without overlap.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (e.g., configure_api_key, generate_image, list_history). The only slight deviation is 'continue_editing' (gerund) but it still fits the verb+noun structure.

Tool Count5/5

The server covers configuration (3 tools), image generation/editing (3), video generation (1), and info retrieval (3) with a total of 10 tools. This is well-scoped for a Gemini AI media generation server without unnecessary bloat.

Completeness4/5

The tool surface covers the full lifecycle: configuration, generation, editing, and history. A minor gap is the lack of delete or management actions for generated media, but the core workflow is complete.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers