View Image MCP stdio server that provides image viewing and format conversion for AI agents
The server implements a single tool 'view_image' with a clear action verb, comprehensive description, and structured input schema. The tool definition is explicit and visible in ViewImageMcpServer.ts with Zod-based validation. Description is detailed (247 chars) and appropriately instructs LLM behavior. Input schema defines both filePath and base64Data with optional flags and descriptions. However, output schema is not formally documented in the tool definition itself, callers must infer structure from code comments and type interfaces. Error handling is present but generic. The tool is well-named and follows verb_noun pattern, though the assertive tone in the description ('MUST use this tool', 'Do not attempt') is somewhat aggressive for a read-only utility.
USE THIS TOOL TO VIEW AND ANALYZE IMAGES. When you need to see the contents of an image file or analyze image data, you MUST use this tool. Do not attempt to describe images without first viewing them through this tool. Accepts either: - filePath: Absolute path to an image file (PNG, JPEG, WebP, GIF) - base64Data: Base64-encoded image as data URI (e.g., "data:image/png;base64,...") Returns the image in viewable format with metadata (dimensions, format). Always use this tool before describing or analyzing any image content.
Output schema not formally documented in tool registration. Callers must infer response structure (TextContent + ImageContent multipart) from code comments and JSDoc. The registerViewImageTool method does not include an outputSchema field in the tool definition.
Error responses lack actionable recovery guidance. When validation fails (e.g., neither filePath nor base64Data provided), the tool returns a generic error message without suggesting what parameters the LLM should provide next.
No pagination support documented or implemented, though single-image responses make this less critical. The tool does not declare any limits on input size (file size, base64 length) or output dimensions, leaving potential for resource exhaustion.
No tool annotations (readOnlyHint, idempotentHint, destructiveHint) present. Although the tool is read-only, explicitly marking it with readOnlyHint would improve clarity for agent planning.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |