Standalone MCP server for generating and editing images with Google Gemini
Three well-defined image manipulation tools with complete input schemas and descriptions. Tool naming follows verb_noun convention (generate_image, edit_image, describe_image). All parameters have type constraints via Zod schema and descriptions. Output schemas are structured but not formally documented in code. Error handling exists via try/catch and custom error classes, but recovery guidance is minimal. Missing output schema documentation and parameter validation messaging.
Get a text description of an image using Google Gemini. Default model: gemini-2.5-flash.
Edit an existing image based on a text instruction using Google Gemini. Default model: gemini-3.1-flash-image-preview. Supports multi-image input (up to 10 total). Response contains a thumbnail preview; full-res image is saved to output directory.
Generate an image from a text prompt using Google Gemini. Default model: gemini-3.1-flash-image-preview. Supports batch generation (n=1-4). Response contains a thumbnail preview; full-res image is saved to output directory.
Output schemas not formally documented. Tools return content blocks with text and image types, but no schema documentation for callers to understand expected structure. Makes LLM reasoning about downstream tool chaining harder.
Error handling lacks recovery guidance. Custom error classes (GeminiError, PromptBlockedError) exist but tool handlers don't return actionable error messages to LLM. When prompt is blocked or file not found, LLM receives generic error with no next steps.
Parameter descriptions lack constraint documentation. For example, 'filePath' parameter has minimal description but no guidance on file format requirements, path resolution rules, or max file size. This invites LLM to pass invalid paths.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 11 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 57 | - | v1 |
No documentation of side effects. Tools write files to $HOME/nano-banana-output but descriptions don't explain file retention, cleanup, or what happens if the directory doesn't exist.
describe_image description is too short (94 chars, below baseline 194 average). Missing context on when to use vs other tools and what formats are supported.