Model Context Protocol (MCP) server for Google Gemini Nano Banana image generation with async job tracking
Server has 4 tools with complete input schemas and descriptions. Naming follows verb_noun convention (generate_image, check_job_status, save_image, list_jobs). Descriptions are present and contextual (avg ~120 chars), explaining the async workflow. However, output schemas are not documented, LLMs cannot infer what check_job_status or list_jobs return. Parameter descriptions are adequate but lack format constraints (e.g., filePath should specify absolute path requirement more explicitly). Error handling is basic, no recovery guidance or actionable error messages. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles.
Check if an image is done generating. Shows whether it's still processing, completed and ready to save, or failed.
Create an AI-generated image from a text description. Returns a job ID immediately - use check_job_status to see when it's ready, then save_image to download it.
See all your image generation requests and whether they're still processing, completed, or failed. Useful to track multiple images at once.
Download a completed image to your computer as a PNG file. Only works after the image has finished generating (check with check_job_status first).
Output schemas not documented. check_job_status and list_jobs return structures are not specified in tool definitions. LLMs cannot plan downstream actions or extract required fields.
No tool annotations (readOnlyHint/destructiveHint). save_image is marked WRITE in metadata but tool definition lacks destructiveHint annotation. generate_image and check_job_status lack readOnlyHint.
Error handling lacks recovery guidance. Errors like 'Job not found' or 'File path must end in .png' are present in code but not surfaced as structured error responses with actionable next steps for the LLM.
list_jobs has no input parameters documented but returns unspecified structure. Description does not explain pagination, result limits, or field names in the response.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
filePath parameter in save_image lacks explicit format constraint. Description mentions 'must end with .png' but no regex pattern or length limits are specified. Validation happens at runtime, not schema-time.