nanobanana-mcp
Provides tools for generating and editing images with Google's Gemini image models (Nano Banana family), including model selection, aspect ratio and resolution control, prompt templates, and image composition from reference images.
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., "@nanobanana-mcpgenerate a 16:9 4K image of a golden retriever surfing at sunset"
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.
nanobanana-mcp
An MCP server for Google's Gemini image models — the "Nano Banana" family. It exposes image generation, image editing/composition, and a curated set of prompt templates as MCP tools, prompts, and resources, and works with any of Gemini's three credential paths.
Note on naming: Vertex AI was rebranded to the Gemini Enterprise Agent Platform in April 2026. The underlying APIs and credentials are unchanged — this README uses "Vertex AI" and "Agent Platform" interchangeably.
Features
🎨 Multi-Model AI Image Generation — three Gemini models with intelligent automatic selection
🍌 Gemini 3.1 Flash Image (Nano Banana 2) — default model: up to 4K resolution at Flash speed, with Google Search grounding
🏆 Gemini 3 Pro Image (Nano Banana Pro) — maximum reasoning depth for the most complex compositions
⚡ Gemini 2.5 Flash Image (legacy) — the original Flash model, for high-volume rapid prototyping
🤖 Smart Model Selection — when you don't pin a model, a transparent, explainable heuristic routes each prompt to Nano Banana 2 or Nano Banana Pro (never the legacy model) based on prompt complexity, and tells you why
📐 Aspect Ratio & Resolution Control —
1:1,16:9,9:16,21:9, and 7 more, plus512/1K/2K/4Koutput sizes📋 Smart Templates — 10 curated prompt templates for photography, design, and editing, available as native MCP Prompts and as plain tools for clients without a prompt-picker UI
🔍 Resource Discovery — browse the template catalog and metadata for every image you've saved to disk through MCP Resources
🖼️ Image Editing & Composition — up to 14 reference images, by local file path or inline base64
🔑 Three Auth Modes — Gemini API key, Vertex AI Express Mode API key, or full ADC — auto-detected from environment variables
🛡️ Production Ready — every tool call is wrapped in structured error handling; all logging goes to stderr (stdout is reserved for the JSON-RPC wire); startup fails fast with an actionable message if credentials are missing or contradictory
⚡ High Performance — a TTL/LRU response cache serves identical repeated requests (retries, accidental duplicates) from memory instead of re-billing the API
Related MCP server: MCP MediaCrea
Requirements
Node.js 20+
One of: a Gemini API key, a Vertex AI Express Mode API key, or a Google Cloud project with Application Default Credentials
Installation
From npm (recommended) — no local install step needed. Every client config below uses npx -y @amit-y11/nanobanana-mcp, which downloads and runs the latest published version on demand.
From source — for local development or before the package is published:
git clone https://github.com/amit-y11/nanobanana-mcp.git
cd nanobanana-mcp
npm install
npm run buildThis produces build/index.js, a self-contained stdio MCP server. If you're running from source, swap "command": "npx", "args": ["-y", "nanobanana-mcp"] in every config below for "command": "node", "args": ["/ABSOLUTE/PATH/TO/nanobanana-mcp/build/index.js"].
Authentication
Pick one of the three modes. nanobanana-mcp auto-detects which one you've configured; set NANOBANANA_AUTH_MODE to force a specific mode and get a precise error if it's misconfigured, instead of silently falling through to another mode.
Mode | Env vars | Notes |
1. Gemini Developer API |
| Simplest option. Get a key at aistudio.google.com/apikey. |
2. Vertex AI Express Mode |
| An API key that talks to Vertex AI / Agent Platform without a full GCP project. |
3. Vertex AI with ADC |
| Needs a real GCP project. Credentials come from |
GOOGLE_API_KEY is also accepted as a fallback for either key-based mode (matching the underlying Google SDK's own conventions); VERTEX_API_KEY exists so you can keep a Gemini key and a Vertex key configured side by side without one silently shadowing the other.
Call the auth_status tool at any time to see which mode is active (secrets are masked).
See .env.example for the full list of variables, including optional ones (default model, output directory, log level, cache settings).
Available tools
Tool | Purpose |
| Text-to-image generation. |
| Edit, inpaint, restyle, or compose 1–14 reference images (file path or base64). |
| The 3 supported models, their aliases, and capabilities. |
| The prompt-template catalog (see below). |
| Fill a template's fields and get back a ready-to-use prompt. |
| Which credential mode is active, and cache stats. |
Both generate_image and edit_image accept: model (id, alias, or "auto"), aspect_ratio, image_size, person_generation, thinking_level, use_search_grounding, save_to_file, output_path.
Smart model selection
Leave model unset (or pass "auto") and the server scores the prompt — length, design/text-rendering keywords ("logo", "infographic", "poster", quoted text to render, reference-image count) against "make it quick/rough/simple" signals — and routes to Nano Banana 2 or Nano Banana Pro accordingly. The response always states which model was picked and why, e.g.:
Auto-selected model: Nano Banana Pro (score 3/3): mentions logo; requires exact quoted text to be rendered.
The legacy model is never auto-selected — ask for it explicitly (model: "legacy") when you specifically want it.
Prompt templates
Ten templates, adapted from Google's own Gemini prompting guide, across three categories:
Photography —
photo_realistic_scene,product_mockupDesign —
logo_design,sticker_illustration,infographic,minimalist_negative_spaceEditing —
add_remove_element,inpaint_replace,style_transfer,combine_images
They're available three ways, so every client can use them:
MCP Prompts (
prompts/list/prompts/get) — Claude Desktop and Claude Code show these in their prompt picker / slash-command menu with full argument validation.Resources —
template://catalog(the whole catalog as JSON) andtemplate://{category}/{id}per template, for clients that only browse resources.Tools —
list_templatesto browse,render_templateto fill one in and get back a prompt string to feed intogenerate_image/edit_image. This path works in any MCP client, including ones without prompt or resource UI.
Resources
URI | Contents |
| All templates, as JSON. |
| One template's fields and description. |
| Metadata for images saved to disk this session (most recent first). |
| One saved image's model, prompt, path, size, and whether it was auto-selected. |
The generated-image://* resources only cover images actually written to disk (see save_to_file / NANOBANANA_OUTPUT_DIR below) — there's nothing durable to browse for an inline-only result, and the manifest itself is in-memory and resets when the server restarts.
Saving images to disk
By default, generated images are returned inline (base64) and not written to disk. To save them:
Set
NANOBANANA_OUTPUT_DIRto a directory — every generation is saved there automatically, orPass
save_to_file: true(and optionallyoutput_path) on a specific call.
Saved images are also indexed in the generated-image:// resources above.
Connecting to MCP clients
All examples below use npx -y @amit-y11/nanobanana-mcp (the published package) and the Gemini API key mode for brevity. To use a different auth mode, swap the env block for the one shown in Authentication — everything else about each config stays the same. Running from a local clone instead? See the note at the end of Installation.
Claude Desktop
Edit your config file (create it if it doesn't exist):
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%AppData%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"nanobanana": {
"command": "npx",
"args": ["-y", "@amit-y11/nanobanana-mcp"],
"env": {
"GEMINI_API_KEY": "your-gemini-api-key"
}
}
}
}Restart Claude Desktop fully (not just the window) afterwards.
Claude Code
Either run:
claude mcp add --transport stdio --env GEMINI_API_KEY=your-gemini-api-key \
nanobanana -- npx -y @amit-y11/nanobanana-mcpor add it directly to .mcp.json (project scope) or ~/.claude.json (user scope, under mcpServers) using the same shape as the Claude Desktop config above. Verify with claude mcp list / the /mcp command.
VS Code (GitHub Copilot)
Create .vscode/mcp.json in your workspace (or use MCP: Open User Configuration for a global config). VS Code requires an explicit "type" field and uses servers, not mcpServers:
{
"servers": {
"nanobanana": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@amit-y11/nanobanana-mcp"],
"env": {
"GEMINI_API_KEY": "your-gemini-api-key"
}
}
}
}Cursor
Create .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"nanobanana": {
"command": "npx",
"args": ["-y", "@amit-y11/nanobanana-mcp"],
"env": {
"GEMINI_API_KEY": "your-gemini-api-key"
}
}
}
}Restart Cursor afterwards.
OpenAI Codex (CLI and IDE extension)
Codex uses TOML, shared between the CLI and the IDE extension, at ~/.codex/config.toml (or a project-scoped .codex/config.toml for trusted projects):
[mcp_servers.nanobanana]
command = "npx"
args = ["-y", "@amit-y11/nanobanana-mcp"]
[mcp_servers.nanobanana.env]
GEMINI_API_KEY = "your-gemini-api-key"Or via the CLI:
codex mcp add nanobanana --env GEMINI_API_KEY=your-gemini-api-key \
-- npx -y @amit-y11/nanobanana-mcpRun /mcp inside a Codex session afterwards to confirm it's connected.
Windows note:
npxon Windows sometimes needs the.cmdshim — if a client can't spawn it, try"command": "npx.cmd"(or the full path fromwhere npx).
Development
npm run dev # tsc --watch
npm run build # one-off build
npm run inspect # build, then open the MCP Inspector against the built serverMCP Inspector is the fastest way to poke at tools/resources/prompts by hand without wiring up a full client.
Logging
Everything is logged to stderr only — on the stdio transport, stdout is the JSON-RPC wire, and anything else written there corrupts every message after it. Set NANOBANANA_LOG_LEVEL=debug for more detail (cache hits, etc.).
Troubleshooting
"No credentials found" on startup — you haven't set any of the three auth modes' variables. Check
.env.exampleand the table above."NANOBANANA_AUTH_MODE=... requires ..." — you forced a mode with
NANOBANANA_AUTH_MODEbut didn't set that mode's required variables.Server doesn't show up in your client — confirm the path in
argsis absolute, that you rannpm run build(the client runsbuild/index.js, notsrc/index.ts), and restart the client fully.Call
auth_statusto confirm which credential mode is active and see basic cache stats without leaving your MCP client.
License
MIT — see LICENSE.
Available Tools
6 toolsauth_statusShow server statusA
Reports which credential source nanobanana-mcp is using (Gemini API key, Vertex AI Express Mode API key, or Vertex AI / Gemini Enterprise Agent Platform ADC) without revealing secrets, plus basic runtime info. Useful for debugging setup.
| 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 full burden. It discloses an important behavioral trait – that it does not reveal secrets – and describes return content (credential source + runtime info). It does not state read-only safety explicitly, but the read-only nature is strongly implied by 'Reports ... without revealing secrets.'
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 sentences, front-loaded with what is reported and the key constraint (no secrets revealed). Slightly wordy in enumerating credential source names, but each sentence 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 zero-parameter, no-output-schema status tool, the description covers what it returns (credential source and runtime info) and a debug use case. It is largely complete, though it could note whether it requires auth or always succeeds.
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 takes zero parameters, which per rubric yields a baseline of 4. No parameter documentation is needed, and the description correctly implies a no-argument call.
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?
States a specific verb ('Reports') and resource ('credential source ... plus basic runtime info'), and enumerates the three possible credential sources, which is concrete. It doesn't explicitly distinguish itself from siblings, but none of the siblings (generate_image, edit_image, list_models, etc.) overlap in purpose, so misidentification is unlikely.
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?
Ends with 'Useful for debugging setup,' which implies the when-to-use context. However, it doesn't state when NOT to use it or name alternatives, and the guidance is vague rather than an explicit trigger condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_imageEdit / compose image (Nano Banana)B
Edit, inpaint, restyle, or compose one or more reference images using Gemini's Nano Banana models. Accepts local file paths or inline base64 image data. By default, automatically picks Nano Banana 2 or Nano Banana Pro based on prompt complexity and reference-image count.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model id or alias. "auto" (default) smart-selects between Nano Banana 2 and Nano Banana Pro based on prompt complexity. Known aliases: nb2/nano-banana-2 (gemini-3.1-flash-image), pro/nano-banana-pro (gemini-3-pro-image), legacy/nano-banana (gemini-2.5-flash-image, not auto-selected). Any other Gemini image-capable model id is accepted and passed through as-is. | |
| images | Yes | 1-14 reference images, each as either a local file path or inline base64 data. Order matters when the prompt refers to "the first image" / "the second image". | |
| prompt | Yes | Editing instructions: what to add, remove, or change, or how to combine the provided image(s). Describe the desired result, not the mechanics of the edit. | |
| image_size | No | "4K" only on Nano Banana 2 / Nano Banana Pro. Defaults to 1K. | |
| output_path | No | File path or directory to save the image to. Relative paths resolve against NANOBANANA_OUTPUT_DIR (or the system temp dir if unset), not the current working directory. | |
| aspect_ratio | No | Aspect ratio of the output image. Defaults to the model's default (usually 1:1) when omitted. | |
| save_to_file | No | Also write the generated image(s) to disk (and make them browsable via the generated-image:// resource). Defaults to true when NANOBANANA_OUTPUT_DIR is set, false otherwise. | |
| thinking_level | No | "high" improves complex prompts at the cost of latency. Only affects Nano Banana 2 (ignored otherwise). | |
| person_generation | No | Controls generation of people in the image. | |
| use_search_grounding | No | Ground the image in real-time Google Search results (e.g. current weather, sports scores, recent events). Not supported on the legacy model. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full load. It does disclose useful behavior: accepted input forms (local path or inline base64) and automatic model selection by prompt complexity/reference count. It says nothing about side effects, permissions, cost/latency beyond 'high' thinking, or how results are returned when save_to_file is false.
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 compact sentences with the core capability front-loaded and no filler. Efficient and easy to scan, though the third sentence duplicates the schema's 'auto' model description.
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 10-parameter tool with no annotations and no output schema, the definition covers capabilities and model selection but leaves return behavior ambiguous — e.g. how the agent receives the image when save_to_file is false versus true. Adequate but with a real gap for a heavy tool.
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 the baseline is 3. The description's param-related claims ('accepts local file paths or inline base64', auto model picking by prompt complexity and reference-image count) largely restate what the schema already documents for images and model, adding little new meaning.
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?
Specific verbs (edit, inpaint, restyle, compose) plus a clear resource ('one or more reference images') and the backing model family. It implicitly separates itself from generate_image by requiring reference images, but never names or explicitly contrasts with that sibling, so it stops short of a 5.
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 by 'one or more reference images' (this is the image-to-image path), but there is no explicit when-to-use guidance, no statement of when to prefer generate_image or render_template instead, and no stated 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_imageGenerate image (Nano Banana)A
Generate an image from a text prompt using Google's Gemini image models (the Nano Banana family). By default, automatically picks Nano Banana 2 (fast) or Nano Banana Pro (deeper reasoning) based on the prompt's complexity — pass an explicit model to override. Returns the image inline and optionally saves it to disk.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model id or alias. "auto" (default) smart-selects between Nano Banana 2 and Nano Banana Pro based on prompt complexity. Known aliases: nb2/nano-banana-2 (gemini-3.1-flash-image), pro/nano-banana-pro (gemini-3-pro-image), legacy/nano-banana (gemini-2.5-flash-image, not auto-selected). Any other Gemini image-capable model id is accepted and passed through as-is. | |
| prompt | Yes | Description of the image to generate. Be specific: subject, setting, style, lighting, camera angle, and any exact text that must appear in the image. | |
| image_size | No | "4K" only on Nano Banana 2 / Nano Banana Pro. Defaults to 1K. | |
| output_path | No | File path or directory to save the image to. Relative paths resolve against NANOBANANA_OUTPUT_DIR (or the system temp dir if unset), not the current working directory. | |
| aspect_ratio | No | Aspect ratio of the output image. Defaults to the model's default (usually 1:1) when omitted. | |
| save_to_file | No | Also write the generated image(s) to disk (and make them browsable via the generated-image:// resource). Defaults to true when NANOBANANA_OUTPUT_DIR is set, false otherwise. | |
| thinking_level | No | "high" improves complex prompts at the cost of latency. Only affects Nano Banana 2 (ignored otherwise). | |
| person_generation | No | Controls generation of people in the image. | |
| use_search_grounding | No | Ground the image in real-time Google Search results (e.g. current weather, sports scores, recent events). Not supported on the legacy model. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses the auto-model-selection logic and that the image is returned inline and optionally written to disk, but it says nothing about auth requirements, latency/cost tradeoffs beyond the thinking_level note, rate limits, or content-policy failure modes.
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 sentences, front-loaded with the core action and model family, followed by the model-selection rule and return behavior. No filler and every clause carries 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 generation tool with no output schema, the description covers the essentials: generation source, model-selection behavior, and return/save format. It stops short of describing permissions or failure behavior, but the rich schema compensates for most parameter detail.
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 the schema already documents every parameter in detail. The description only restates the model default/override behavior, adding no meaningful semantics beyond what the schema provides; 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?
States a specific verb (generate) and resource (image) plus the backing model family, which is far beyond a tautology. The distinction from the sibling edit_image is only implicit (this creates from a prompt rather than modifying an existing image), but the purpose itself is 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?
Explicitly explains the default behavior (auto-selects Nano Banana 2 vs Pro by prompt complexity) and the condition for overriding it via the model parameter. It does not say when to prefer this tool over edit_image or render_template, so full routing guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsList Nano Banana modelsA
Returns the three supported Gemini image models, their aliases, and capabilities (max resolution, thinking_level support, search grounding, reference-image limits, whether automatic model selection can pick them).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the burden, and it does so by disclosing that this is a fixed enumeration of three models and enumerating the attributes returned. It does not state read-only safety explicitly or the exact response shape, but for a zero-parameter lister side effects are not plausible.
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 sentence, front-loaded with the resource, then the payload contents. Every clause carries distinct information with no filler.
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 output schema, the description must convey the return contents, and it does so thoroughly (aliases, resolution, thinking_level, grounding, reference limits, auto-selection eligibility). Only the literal response structure/field names are left unspecified, which is a minor gap for a catalogue tool.
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?
Zero parameters, so the baseline of 4 applies. The description adds no parameter detail because there are none to describe, and the schema confirms an empty object.
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?
Specific verb (returns) plus resource (the three supported Gemini image models) and an explicit inventory of what comes back: aliases, capabilities, resolution, thinking_level, grounding, reference limits. This clearly separates it from generate_image/edit_image, which act on images rather than enumerate models.
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 rather than stated: an agent can infer this is the discovery call to run before generate_image/edit_image to learn model names and capabilities. There is no explicit when-to-use, when-not-to-use, or named alternative, so it stays at the implied level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesList smart prompt templatesA
Lists nanobanana-mcp's curated prompt templates for photography, design, and editing, with the fields each one accepts. Pass a template id and its fields to render_template to get a ready-to-use prompt, or call the same templates through the MCP prompts/list API.
| 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 full burden. It discloses that the output is a set of curated templates with their accepted fields, and that the same templates are reachable through the MCP prompts/list API, which is meaningful behavioral context. It is a side-effect-free listing by implication, though it doesn't explicitly confirm read-only behavior or result size.
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 sentences, both front-loaded and purposeful: the first defines the resource and its contents, the second defines the usage path. No filler or restatement of the tool name.
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 zero-parameter lister with no annotations and no output schema, the description is nearly complete: it says what comes back (templates plus their fields) and how to use them. It could add a note on the result shape or ordering, but nothing essential for correct invocation is missing.
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 takes zero parameters, so the schema provides nothing to interpret and the baseline is 4. The description appropriately avoids parameter discussion and instead explains how the returned template ids/fields are consumed downstream.
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?
States a specific verb (Lists) and resource (nanobanana-mcp's curated prompt templates), and scopes the content to photography, design, and editing with the fields each template accepts. It also names the sibling render_template, so an agent can distinguish this discovery tool from the rendering tool without opening any schema.
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?
Explicitly describes the workflow: use this to list templates, then pass a template id and its fields to render_template, or reach the same templates via the MCP prompts/list API. It routes the agent to the right follow-up tool but does not state exclusions or when this listing should be skipped (e.g., if templates are already cached).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_templateRender a smart prompt templateA
Fills a curated photography/design/editing template with your values and returns a ready-to-use prompt. Feed the result straight into generate_image's or edit_image's prompt argument.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Values for the template's fields (see list_templates for each template's field names). | |
| template | Yes | Template id. See list_templates for the full catalog. One of: photo_realistic_scene, product_mockup, logo_design, sticker_illustration, infographic, minimalist_negative_space, add_remove_element, inpaint_replace, style_transfer, combine_images |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that this is a pure transform producing a prompt string (no side effects implied), but says nothing about failure modes such as an unrecognized template id or missing/extra field values, which are realistic for a 10-template catalog with a free-form fields object.
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 sentences, zero filler, and the input action is front-loaded ahead of the downstream wiring. Every clause 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 2-parameter tool with no output schema, the description covers what comes back (a usable prompt) and where to send it, and the nested `fields` object is explained by the schema. Only the error/edge-case behavior is left unaddressed.
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 template enum list and fields-object semantics are fully documented in the schema, so the schema does the heavy lifting. The description's 'with your values' adds no syntax or format detail beyond it, making the baseline 3 correct.
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?
Specific verb (fills/renders) plus resource (curated template) plus the concrete output (a ready-to-use prompt). It also implicitly separates itself from the generation siblings by being the pre-generation step that feeds them.
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?
Explicitly routes the agent forward: feed the result into generate_image's or edit_image's `prompt` argument, which is exactly the downstream action an agent needs. It does not state when *not* to use it (e.g., writing a prompt from scratch), so it stops short of a 5.
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.
6 tool updates
v0.1.0- First observed
auth_status - First observed
edit_image - First observed
generate_image - First observed
list_models - First observed
list_templates - First observed
render_template
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: generate vs edit operate on different inputs/outputs, list_models and list_templates target different resource types, render_template produces a prompt while generate_image/edit_image consume it, and auth_status is uniquely diagnostic. No pair of tools appears to do the same thing.
Five of six names follow a readable verb_noun snake_case pattern (generate_image, edit_image, list_models, list_templates, render_template). auth_status is a minor deviation as a noun_noun, but remains clear and consistent in casing style.
Six tools is well-scoped for an image generation/editing server with model selection, templates, and auth diagnostics. Each tool earns its place, and the set avoids both thinness and bloat.
The core lifecycle is covered: generating, editing, listing models, listing/rendering templates, and checking auth. Minor gaps include no explicit tool for history, batch operations, or inspecting saved outputs, but these are workable around or outside the server's core scope.
Maintenance
Related MCP Connectors
Generate images with any major model — one API key, one prepaid balance, one MCP.
Multi-model AI image and video generator. 14 models behind one OAuth-secured MCP endpoint.
Edit images over MCP with object removal, background removal, and guided generative edits.
Create and manage AI image and video generations through Quriov's fixed public MCP tools.
Related MCP Servers
- AlicenseAqualityDmaintenanceAllows AI assistants to generate and transform high-quality images from text prompts using Google's Gemini model via the MCP protocol.334MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables image generation, editing, and blending using Gemini 2.5 Flash capabilities, plus text generation for AI-powered creative workflows through MCP tools.MIT
- AlicenseAqualityAmaintenanceEnables AI image generation and editing using Google's Gemini Multimodal Image APIs.61MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI-powered image generation and editing using Gemini and Imagen models, supporting text-to-image, image editing, and multi-image composition through MCP tools.MIT