MCP server for generating videos with Google Veo2 and images with Google Imagen
The server defines 7 tools with generally good naming (action verbs) and complete input schemas using Zod validation. Descriptions are present but brief (avg 50 chars). Parameters have types and constraints but lack detailed descriptions for many fields. Output schemas are not documented. Error handling exists but lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint). The server follows basic quality patterns but falls short of production-grade documentation and lacks several patterns from the Arcade tool quality framework.
Generate an image from a text prompt using Google Imagen
Generate a video from a generated image (one-step process)
Generate a video from an image
Generate a video from a text prompt
Get a specific image by ID
List all generated images
List all generated videos
Output schemas not documented. Tools return results but LLMs cannot see field structure, forcing them to infer fields and plan downstream chaining. This violates pattern:tool and pattern:response-shaper.
Parameter descriptions are minimal or missing context. Most params (e.g., 'aspectRatio', 'personGeneration', 'numberOfVideos') have one-sentence descriptions lacking guidance on when/why to use them or what values are typical. Pattern:tool-description requires descriptions that answer WHAT, WHEN, and WHY.
No tool annotations. Tools like generateVideoFromText and generateImage are WRITE operations but lack destructiveHint/idempotentHint metadata. This prevents LLMs from understanding side effects and safety properties. Current spec 2026-07-28 expects tool annotations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Error handling lacks recovery guidance. Code references errorReporting=true but no visible error types, retry logic, or actionable error messages. Pattern:recovery-guide requires errors to state WHAT happened and WHAT to do next.
Inconsistent parameter naming conventions. Some params use snake_case ('aspectRatio' is camelCase, others are consistent), but more critically, params like 'includeFullData' and 'autoDownload' lack descriptions explaining what 'full data' or 'auto' means in the response.
No pagination or result limits documented for list tools. 'listGeneratedVideos' and 'listGeneratedImages' accept no parameters (limit, offset, cursor) and no docs state what happens if there are thousands of results. Pattern:paginated-result and mxe:enforce-result-limits require this.
generateVideoFromGeneratedImage combines two concerns (image generation + video generation) into one tool. This violates pattern:tool (each tool does exactly one thing). Should split into separate steps or document why combining them is necessary.
Image parameter in generateVideoFromImage accepts union of three types (object, URL, file path) but descriptions do not clarify which is preferred or how file paths are resolved (relative to server, user's machine?). Pattern:tool-description requires clarity on format and constraints.