Gemini Nano Banana MCP
Provides tools for generating and editing images using Google Gemini models, and generating videos using Veo models, with support for text-to-image, image editing, text-to-video, image-to-video, and frame interpolation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Gemini Nano Banana MCPgenerate an image of a banana riding a bicycle"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-mcpOr install from source:
git clone https://github.com/seungmanchoi/nano-banana-mcp.git
cd nano-banana-mcp
npm install
npm run build3. 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
envfield and configure the API key at runtime using theconfigure_api_keytool.
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.
Mode B — Free Google-cookie mode (consumer Gemini, unofficial)
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:
Open
https://gemini.google.comand sign in.DevTools (F12) → Application → Cookies →
https://gemini.google.com.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-002Option 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-002Model Priority
Per-request
modelparameter (highest priority)GEMINI_MODELenvironment variableConfig file (
~/.nano-banana/config.json)Default:
gemini-2.0-flash-preview-image-generation
Available Image Models
Model | Tier | Description |
| Free | Default. Native image generation via Gemini 2.0 Flash. |
| Paid | Best quality. Google's dedicated image generation model. |
| 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 |
| Latest. Native audio, scene extension, reference images, 4K support. |
| Previous generation with audio support. |
| Older generation, stable. |
For the latest list of models, see Google AI documentation.
Tools
Image Tools
Tool | Description |
| Set or update the Gemini API key (switches to apiKey mode). Persists across sessions. |
| Switch to free, unofficial |
| Set the default Gemini model for images (apiKey mode). Persists across sessions. |
| Generate a new image from a text description. Supports optional |
| Edit an existing image with text instructions, optional reference images, and optional |
| Continue editing the last generated/edited image in the session. Supports optional |
| List recently generated and edited images with prompts and timestamps. |
Video Tools
Tool | Description |
| Generate a video from a text prompt. Supports text-to-video, image-to-video, and frame interpolation. |
| List recently generated videos with prompts, models, and timestamps. |
Utility Tools
Tool | Description |
| 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 reflectionEdit the image at ~/nano-banana-images/gen_2025-01-01.png to add a boat on the lakeContinue editing - make the sky more vibrant with orange and pink tonesVideo Generation
Generate a video of ocean waves crashing on a rocky shore at sunsetGenerate a video of a cat playing with yarn, model veo-3.1-generate-preview, resolution 1080p, duration 8 secondsImage-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 treesFirst + Last Frame Interpolation
Generate a video transitioning from the image at ~/images/start.png to ~/images/end.png with a smooth camera panPortrait Video
Generate a video of a person walking through a garden, aspect ratio 9:16History & Status
Show me the last 5 images I generatedShow me recent video historyCheck the current statusSwitch to imagen-3.0-generate-002 model for higher qualityVideo Generation Details
Configuration Options
Parameter | Options | Default | Description |
|
|
| Veo model to use |
|
|
| Landscape or portrait |
|
|
| Output resolution |
|
| Varies by model | Video length |
|
|
| Number of variants |
| Any text | - | Elements to avoid |
Generation Modes
Text-to-Video: Provide only a
promptImage-to-Video: Provide
prompt+imagePath(used as first frame)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
.mp4filesVideos 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:
Environment variable -
GEMINI_API_KEYConfig file -
~/.nano-banana/config.jsonRuntime - via the
configure_api_keytool
File Storage
Images
Platform | Path |
macOS / Linux |
|
Windows |
|
Videos
Platform | Path |
macOS / Linux |
|
Windows |
|
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 definitionsDevelopment
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 ESLintTech Stack
Runtime: Node.js
Language: TypeScript (strict mode, ES2022)
MCP SDK:
@modelcontextprotocol/sdkAI Models: Google Gemini (images) + Veo (videos)
Validation: Zod
License
MIT
Available Tools
10 toolsconfigure_api_keyA
Set or update the Gemini API key for image generation. The key is stored locally and persists across sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| apiKey | Yes | Your Google Gemini API key (get one at https://aistudio.google.com/apikey) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| secure1psid | Yes | The __Secure-1PSID cookie value from gemini.google.com (required) | |
| secure1psidts | No | The __Secure-1PSIDTS cookie value (recommended; improves session stability) |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | Gemini model ID to use | |
| quality | No | Which model tier to set: "high" (default, best quality) or "fast" (cheaper/faster). Defaults to "high". |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Instructions for the next edit | |
| referenceImages | No | Optional reference images for guidance | |
| model | No | Optional model override for this request | |
| quality | No | Model tier: "high" (best quality, default) or "fast" (cheaper/faster) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| imagePath | Yes | Absolute file path to the image to edit | |
| prompt | Yes | Instructions for how to edit the image | |
| referenceImages | No | Optional array of file paths to reference images for style or content guidance | |
| model | No | Optional model override for this request | |
| quality | No | Model tier: "high" (best quality, default) or "fast" (cheaper/faster) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Detailed description of the image to generate | |
| model | No | Optional model override for this request | |
| quality | No | Model tier: "high" (best quality, default) or "fast" (cheaper/faster) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Detailed description of the video to generate. Include subject, action, style, camera movement, and atmosphere. | |
| model | No | Veo model to use. Options: veo-3.1-generate-preview (default, latest), veo-3-generate-preview, veo-2-generate-preview. | |
| imagePath | No | Optional: Absolute file path to an image to use as the first frame (image-to-video generation). | |
| lastFramePath | No | Optional: Absolute file path to an image to use as the last frame (first+last frame interpolation). Requires imagePath to be set. | |
| aspectRatio | No | Aspect ratio of the video. Options: "16:9" (default, landscape), "9:16" (portrait). | |
| resolution | No | Video resolution. Options: "720p" (default), "1080p", "4k". | |
| durationSeconds | No | Video duration in seconds. Options: 4, 6, 8 (default varies by model). | |
| numberOfVideos | No | Number of video variants to generate (default: 1). | |
| negativePrompt | No | Optional: Elements to avoid in the generated video. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of recent images to show (default: 10, max: 50) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of recent videos to show (default: 10, max: 50) |
TDQS
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.
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.
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.
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.
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.
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.
10 tool updates
v1.3.0- First observed
configure_api_key - First observed
configure_google_login - First observed
configure_model - First observed
continue_editing - First observed
edit_image - First observed
generate_image - First observed
generate_video - First observed
get_status - First observed
list_history - First observed
list_video_history
TDQS
Scored across 10 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for Google Veo AI video generation
MCP server for Luma Dream Machine AI video generation
MCP server for Wan AI video generation
MCP server for Midjourney AI image generation and editing
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server for AI-powered media generation using Google Gemini, enabling creation of images, videos, music, and speech directly from AI agents.4MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for generating images and videos using Google Gemini and VEO models, with support for multiple AI models and credential modes.1Apache 2.0
- AlicenseBqualityCmaintenanceMCP server for generating images and audio using Google's Gemini AI models.22MIT
- AlicenseBqualityBmaintenanceAn MCP server for AI-powered image generation, editing, analysis, and transformation using Google's Gemini and Imagen 4 models.192AGPL 3.0