MCP server for AI image generation and metadata storage with support for multiple image generation models (Stable Diffusion, OpenAI DALL-E) and vector embeddings
Two tools with reasonable naming but weak descriptions and incomplete schema documentation. Tool names follow verb_noun pattern (store_image_metadata, generate_image), but descriptions lack depth on when/why to use each tool. Parameter descriptions are present but sparse. No output schema documentation. Error handling is minimal with generic exception messages. The server demonstrates basic structure but falls short of production quality, descriptions average ~90 chars (below 194 baseline), parameter docs are minimal, and no guidance on error recovery or tool composition.
Generate an image based on the provided prompt and model. Supported models are: 'recipe', 'profile'. Supported model_types are: 'stable-diffusion', 'openai-dalle', 'mock'
Store image generation metadata including prompt, image URL, and vector embedding in the database.
Descriptions lack depth on tool selection criteria. 'Store image generation metadata...' does not explain WHEN to call this vs other metadata operations, or what downstream operations depend on it. Descriptions average ~90 chars vs 194 baseline.
Output schemas are not documented. store_image_metadata returns a string status message; generate_image returns {status: 'queued'}. LLMs cannot plan downstream operations without knowing response structure. No documentation of what fields will be present or their types.
Parameter descriptions are present but generic. 'The type of model to use for generation' does not explain which of stable-diffusion, openai-dalle, mock are appropriate for different use cases. 'The data to use for generation (varies by model type)' is vague, no schema or structure for dto_data object.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 40 | - | v1 |
Error handling provides no recovery guidance. Exception messages like 'Unsupported type' or 'Error storing metadata: {e}' do not tell the LLM what to try next. No categorization of retryable vs fatal errors.
No documentation of tool composition. If store_image_metadata expects an image_url from generate_image, this dependency is not stated. Agents cannot infer the relationship between tools.
generate_image returns {status: 'queued'}, no image_id or reference for subsequent retrieval. If the agent needs to store metadata for this image, it has no identifier. Response lacks chaining IDs.
database credentials (host, dbname, user, password) are hardcoded in store_image_metadata. Secrets should be injected via environment variables or vault, not embedded in tool logic.