MCP server for generating images using Google's Gemini API with support for multiple reference images, batch processing, quality tiers, and WordPress integration
This server has significant definition quality gaps that would prevent reliable agentic use. While tool names follow verb_noun conventions (generate_image, add_to_batch, etc.) and most descriptions are present, the schemas are incomplete, parameter descriptions lack critical constraint information, and error handling is minimal. Most parameters lack type validation guidance, default values are not consistently justified, and output schemas are not formally documented. The server appears functional for direct use but would require substantial schema hardening for production agent deployment.
Tools (8)
add_to_batchwritesource verified60/100
Add image to batch queue with multiple reference image support and quality tier
convert_to_webpwritesource verified63/100
Convert PNG/JPG images to WebP format for WordPress optimization
generate_imagewriteauthsource verified65/100
Generate image using Gemini API with resolution control, multiple reference images, and quality tiers
Output schemas not documented. No formal documentation of what fields tools return, their types, or structure. LLMs cannot plan downstream tool calls or extract required data without knowing output shapes.
Incomplete parameter constraint documentation. Parameters like 'quality', 'aspect_ratio', 'image_size' lack explicit enum/choice declarations and validation constraints in descriptions. E.g., 'quality' accepts 'pro' or 'fast' but no validation guidance in param description.
Sensitive credentials exposed as parameters. 'upload_to_wordpress' tool requires wp_user and wp_password as string parameters. These should NEVER be exposed as tool parameters, they will be logged and traced. Use server-side secret injection instead.
Recommendations
Document formal output schemas for all 8 tools. Define return objects with field names, types (string, number, array, object), and descriptions. Example for generate_image: {success: boolean, image_path: string, resolution: string (enum: 1K|2K|4K), aspect_ratio: string, quality: string, model: string, reference_images_used: number, message: string}.
Convert enum parameters to formal constraints. Add 'enum' to schema for 'quality' (values: ['pro', 'fast']), 'aspect_ratio' (values: ['1:1', '16:9', '4:3', '3:2', 'custom']), 'image_size' (values: ['small', 'medium', 'large', 'xlarge']). Add validation bounds to descriptions: e.g., 'image_size: Resolution tier (small=1K, medium=2K, large=2K, xlarge=4K). Fast quality restricted to small|medium.'
CRITICAL: Move WordPress credentials out of tool parameters. Replace wp_user and wp_password string params with a single 'wordpress_profile' identifier (e.g., 'production', 'staging'). Store actual credentials in environment variables or config (WP_PROFILE_PRODUCTION_USER, WP_PROFILE_PRODUCTION_PASSWORD). Return clear error if profile not found.
Enhance error messages with recovery guidance. Example: Instead of 'API error: 429 - Rate limit exceeded', return '{"success": false, "error": "Rate limit exceeded. Wait 60 seconds before retrying.", "retry_after_seconds": 60}'. For 'Reference image not found', return '{"success": false, "error": "Reference image not found: /path/to/image.png", "suggestion": "Check file exists and path is correct."}'
Document 'identifier' parameter in remove_from_batch. Clarify: 'identifier: string (required). Queue index (0-based integer) or original filename. Example: "0" or "my_image.png". Returns error if not found with available queue items.'
Score history
Overall score trend
↑ 6 points across a rubric change (v1 → v2)
44/100
Scored
Grade
Overall
Spec posture
Rubric
2026-09-22
F
44
2026-07-28+
v2
2026-03-09
F
38
-
v1
view_batch_queueread onlysource verified50/100
View the current batch queue of pending image generation requests
Error handling lacks recovery guidance. Code returns generic exceptions (e.g., 'API error: {status} - {text}') without actionable next steps for LLMs. Errors do not categorize as retryable vs fatal or provide alternatives.
Missing parameter descriptions for several parameters. 'view_batch_queue' has no input params documented. 'run_batch' has no input params. 'remove_from_batch' identifier parameter lacks detail on format (index vs filename? both?).
No pagination or limit enforcement. 'get_generated_webp_images' accepts a 'limit' parameter but no guidance on max allowed, no total_count or next_cursor in response structure. Large result sets could exhaust context.
No idempotency or dry-run support for destructive operations. 'run_batch' processes and deletes from queue with no confirmation or dry-run. Agents retrying on ambiguous failures could double-process images.
Tool composition dependency unclear. 'upload_to_wordpress' assumes images exist in 'directory' but does not require that 'convert_to_webp' was called first. No documented dependency or validation.
Reference image handling silently ignores on 'fast' quality but accepts parameter. Code comment states 'Reference images silently ignored when quality=fast', LLMs will not see this and may assume images are processed. Should fail explicitly with user guidance.
generate_imageadd_to_batch
Add total_count and next_cursor to get_generated_webp_images response. Structure: {success: boolean, images: Array<{path: string, size_bytes: number, created_at: ISO8601}>, total_count: number, returned_count: number, limit: number, has_more: boolean}. Cap default limit to 20 (not 10).
Add dry-run mode to run_batch: new optional parameter 'dry_run: boolean (default: false)'. When true, validate queue and return {success: boolean, would_generate: number, estimated_time_seconds: number, would_cost_usd: number} without processing. Enables agents to plan safely.
Explicitly document quality tier constraints. Add to both generate_image and add_to_batch descriptions: 'quality="fast" (Gemini 2.5 Flash): No reference image support, default to small resolution. quality="pro" (Gemini 3 Pro): Supports up to 14 reference images, larger resolutions. Passing reference_images with quality=fast will log warning and ignore them.'
Add permission/scope declaration. Document what the server requires: 'Requires: GEMINI_API_KEY (generation), WordPress REST API credentials (upload). No delete permissions needed (operations are idempotent via queue).'
Add input validation with actionable errors. Example for aspect_ratio: validate format matches '^\d+:\d+$' or is a known preset. Return: '{"success": false, "error": "Invalid aspect ratio: got \'2x3\', must be one of: 1:1, 4:3, 16:9, 3:2 or custom ratio like \'5:7\'"}'.