MCP server for processing and serving images with compression and optimization capabilities
Three tools with basic verb-noun naming (fetch_image, process_local_image, get_image_info). All have short descriptions (20-50 chars) that lack context for LLM selection. Input schemas present but minimal: only 'url' and 'file_path' parameters with basic string types and descriptions. No output schemas documented. No error handling guidance, no parameter constraints (enums, ranges), no indication of idempotency or side effects. Missing: pagination, batch operations, recovery guidance, and structured output documentation. Descriptions are too terse to guide LLM reasoning about when to use each tool vs. alternatives.
Fetch an image from a URL and return it as an MCP Image object
Get information about an image file without processing it
Process a local image file and return it as an MCP Image object
Descriptions are too short (20-50 chars) to guide LLM tool selection. Missing WHAT the tool does, WHEN to use it, and prerequisites. E.g., 'Fetch an image from a URL and return it as an MCP Image object' lacks context on size limits, supported formats, or when to use fetch_image vs process_local_image.
No output schema documented. LLMs cannot plan downstream operations or extract required fields. Code shows Image objects are returned, but the schema (data format, size limits, supported formats) is not declared in tool definitions.
No error handling guidance. Code catches exceptions (MemoryError, file not found, processing errors) but tool definitions provide no recovery hints. LLMs receive raw errors with no actionable next steps.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | <=2025-11-25 | v2 |
No parameter constraints. 'url' and 'file_path' accept free-form strings with no validation hints (format, length, allowed schemes). Code enforces MAX_IMAGE_SIZE=1024px and 800KB limits, but these are not declared in schemas.
Tool naming does not clearly distinguish use cases. 'fetch_image' (remote URL) vs 'process_local_image' (local file) vs 'get_image_info' (metadata only) are similar enough that LLMs may conflate them. Missing dependency hints like 'Call get_image_info first to check dimensions before processing.'