Stdio MCP server that generates and edits images with Gemini and OpenAI using your own API keys
Three tools with well-structured schemas and comprehensive parameter descriptions. generate_image and edit_image have detailed, LLM-optimized descriptions (200+ chars) covering WHAT, WHEN, and prerequisites. All parameters are typed with enums where appropriate (provider, model, aspect_ratio, quality, background, image_size). Descriptions include important caveats (e.g., 'gpt-image-2 cannot do transparent backgrounds'). However, output schemas are not explicitly documented in the tool definitions, the response structure is inferred from implementation. list_capabilities lacks detail on what 'allowedDirs' structure contains. Error handling is present but generic (ProviderError, FileError caught and returned as text). No explicit recovery guidance in error messages.
Edit one or more images with a text prompt using Gemini or OpenAI image models and save the results to disk. Returns the absolute saved file path(s) plus provider/model metadata. Each edit costs real API credits.
Generate one or more images from a text prompt using Gemini or OpenAI image models and save them to disk. Returns the absolute saved file path(s) plus provider/model metadata. Strongly prefer passing an absolute output_path inside the current project so the file lands where you can use it. Each image costs real API credits.
List the server's capabilities: configured providers, default provider, allowed output directories, and supported models.
Output schemas not documented. generate_image and edit_image return SavedImage[] with path, bytes, mimeType, width, height fields, but this structure is not declared in tool definitions. LLMs cannot plan downstream operations without knowing response shape.
list_capabilities description is minimal (empty object input, no output schema documented). Does not explain what 'allowedDirs' contains, what 'configured providers' structure looks like, or when to call this discovery tool.
Error messages are generic text responses without recovery guidance. 'User not found. Try search_users()' pattern not applied. ProviderError and FileError are caught and returned as plain text, missing actionable next steps for LLM.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
No idempotency or dry-run support for destructive operations. generate_image and edit_image consume real API credits and write files. No confirmation step or dry-run mode to prevent accidental expensive calls.
Parameter 'n' (number of images) lacks explicit guidance on cost implications. Description says 'Gemini generates sequentially, so n>1 is slower' but does not warn that each image costs API credits. LLMs may not infer cost without explicit warning.