A simple MCP server that reads local and remote images and returns them in the native MCP image content format for LLM consumption.
ImageReader has clear, well-structured tool definitions with good descriptions and complete input schemas. Both tools follow verb_noun naming (read_image, get_image_info) and include parameter descriptions. However, output schemas are not explicitly documented in the visible code, the return type is inferred as list[TextContent | ImageContent] but no structured schema is shown. Error handling is present (TimeoutError, FileNotFoundError, ValueError) but lacks recovery guidance for LLMs. The await_for_seconds parameter with a sensible default (3.0) is well-designed. Overall solid foundation but missing output documentation and error recovery hints.
Get metadata about an image without returning the full image data. Returns the MIME type, file size, and resolution. Useful for checking format support and dimensions before reading the full image.
Read an image from a local file path or URL and return it for LLM vision. Supports PNG, JPEG, WebP, GIF, BMP, TIFF, SVG, and ICO formats. For local files, provide the absolute or relative file path. For remote images, provide the full HTTP/HTTPS URL. Missing local or remote resources are awaited for up to the configured time. Returns the image in native MCP format (text description + image content).
Output schemas not documented. Return type is inferred (list[TextContent | ImageContent]) but no explicit schema showing field structure, MIME type options, or dimension format is visible in tool definitions.
Error messages lack recovery guidance. TimeoutError and FileNotFoundError are raised but do not suggest next steps (e.g., 'Try increasing await_for_seconds' or 'Check the file path').
No tool annotations. Neither read_image nor get_image_info declares readOnlyHint, destructiveHint, or idempotentHint, missing current MCP spec alignment.
Supported formats listed in description but not as enum constraint. Description mentions 'PNG, JPEG, WebP, GIF, BMP, TIFF, SVG, ICO' but no formal enum prevents LLM from hallucinating unsupported formats.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
No pagination or result limits documented. If an image is very large or remote fetch returns unexpected data, no guidance on chunking or streaming is provided.