A production-ready MCP server for AI-powered image generation using Gemini 3.1 Flash Image (Nano Banana 2, default), Gemini 3 Pro Image, and Gemini 2.5 Flash Image with intelligent model selection
Server has 4 tools with explicit schemas and descriptions. Naming follows verb_noun convention (generate_image, upload_file, output_stats, maintenance). Descriptions are present and substantive (100-200 chars), meeting baseline. However, parameter descriptions lack depth, many lack format constraints, valid ranges, or dependency documentation. Output schemas are not documented in the source. Error handling and recovery guidance are absent. Tool composition is reasonable but maintenance tool combines 5 operations, violating single-responsibility principle.
Generate images using Gemini models with intelligent model selection based on quality/speed requirements
Perform maintenance operations following workflows.md patterns: cleanup expired Files API entries, local filesystem LRU/age-based cleanup, storage quota management, and database hygiene checks
Get statistics about generated images and output directory usage
Upload files to Google Files API for use in image generation and editing operations
maintenance tool combines 5 distinct operations (cleanup_expired, cleanup_local, check_quota, database_hygiene, full_cleanup) into one tool, violating single-responsibility principle. LLMs cannot reason about which operation to invoke without trial-and-error.
Parameter descriptions lack format constraints and valid ranges. E.g., 'aspect_ratio' has no enum of valid values (16:9, 1:1, 4:3?); 'model_tier' description does not explain when to use 'flash' vs 'pro' vs 'nb2' vs 'auto'; 'max_age_hours' has min/max in schema but not in description text.
Output schemas are not documented. Source code shows input schemas but no return type documentation. LLMs cannot plan downstream calls or extract required fields (e.g., does generate_image return image URLs, base64 data, file paths, or metadata?).
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2025-06-18+ | v2 |
No error handling or recovery guidance visible. Tools lack descriptions of failure modes, retryability, or next steps. E.g., if generate_image fails due to quota, what should the LLM do? If upload_file fails, should it retry or call a different tool?
generate_image accepts 'images_b64' and 'mime_types' as arrays but lacks documentation of their relationship. Are they parallel arrays? Must lengths match? What happens if they don't? Undocumented dependencies cause silent misuse.