STDIO MCP server for OpenAI and Gemini image generation
Two tools with comprehensive schemas and detailed descriptions. Both tools have well-structured input schemas with proper enums and validation (e.g., aspect_ratio, image_size, mime_type for Gemini; quality, output_format, background for OpenAI). Descriptions are thorough (200+ chars) and explain WHEN to use each tool. However, output schemas are not documented, LLMs cannot infer what fields are returned. Error handling is absent from tool definitions. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite both tools being WRITE operations. Parameter descriptions are strong but lack guidance on error recovery or retry behavior.
Generate one or more images with Google Gemini (Nano Banana) via the Interactions API and save them to disk. Use this when the user (or your plan) needs Gemini-generated assets for a website or app. Pass the Gemini image model id (e.g. gemini-3.1-flash-image, gemini-3-pro-image, gemini-2.5-flash-image), a list of prompt + filename pairs, the required absolute_output_directory, and optional response_format settings: aspect_ratio, image_size, mime_type. Notes: - aspect_ratio: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9, 1:8, 8:1, 1:4, 4:1. - image_size: 512, 1K, 2K, or 4K (uppercase K required). - mime_type: currently only image/jpeg is supported. Images are written only to absolute_output_directory. It must be an absolute path; relative paths are rejected. Each file is named: {filename}-gemini-{model}-{timestamp}.{ext}
Generate one or more images with OpenAI's Image API and save them to disk. Use this when the user (or your plan) needs OpenAI-generated assets for a website or app. Pass the OpenAI image model id (e.g. gpt-image-2.5-sunburst, gpt-image-2.5-flare, gpt-image-2, gpt-image-1.5, dall-e-3), a list of prompt + filename pairs, the required absolute_output_directory, and optional settings: size, quality, background, output_format. Notes: - size: standard GPT sizes are 1024x1024, 1536x1024, 1024x1536, or auto. gpt-image-2, gpt-image-2.5-sunburst, and gpt-image-2.5-flare also allow arbitrary WIDTHxHEIGHT (both sides divisible by 16, aspect ratio 1:3-3:1, max 3840x2160). - quality: low/medium/high/auto for GPT image models. gpt-image-2.5-sunburst and gpt-image-2.5-flare also support xhigh and max. dall-e-3: standard/hd. - background: transparent/opaque/auto. transparent requires png or webp. gpt-image-2.5-sunburst and gpt-image-2.5-flare support transparent; on gpt-image-2 it is in preview. - output_format: png, jpeg, or webp (GPT image models only). Images are written only to absolute_output_directory. It must be an absolute path; relative paths are rejected. Each file is named: {filename}-openai-{model}-{timestamp}.{ext}
Output schemas not documented. Tool descriptions do not specify what fields are returned (e.g., file paths, URLs, metadata). LLMs cannot plan downstream operations or extract results.
No tool annotations despite WRITE operations. Both tools modify filesystem state (create image files). Missing destructiveHint and idempotentHint annotations prevent agents from understanding retry safety and side effects.
No error handling guidance in tool definitions. Descriptions do not explain what happens on API failures, invalid paths, or quota exhaustion. LLMs have no recovery path.
Batch operation design. Both tools accept arrays of images but descriptions do not clarify per-item success/failure behavior. If one image fails, do all fail or only that one?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
API key injection via environment variables is correct, but tool descriptions do not mention prerequisites (GEMINI_API_KEY, OPENAI_API_KEY must be set). Agents may attempt calls without credentials.