Index, vectorize, and search a folder of images by natural language with CLIP. MCP server that semantically searches an image library and renders matches in an interactive gallery UI.
Muser has 5 tools with clear verb-noun naming (search_*, list_*, index_*) and reasonable descriptions (80-120 chars). All tools have input schemas with typed parameters and descriptions. However, output schemas are not documented in the visible code, the server returns structuredContent with GalleryHit objects, but the LLM-facing schema is not declared. Parameter descriptions are adequate but lack constraints (e.g., no enum for 'mode' in search_by_color, no format spec for hex color). Error handling is minimal, no recovery guidance or actionable error messages visible. The server proxies a Python service; failure modes (service down, invalid image path, indexing errors) are not explicitly handled in the tool definitions.
Index a folder of images - embed and add to the vector database
List indexed directories with image counts for folder-scope picker
Search images by color using LAB color space distance (ΔE)
Semantically search indexed images by natural language text query
Reverse image search - find similar images to an uploaded image
Output schemas not documented. Tools return GalleryHit objects with base64 thumbnails and metadata, but the LLM-facing response structure is not declared in tool definitions. LLMs cannot plan downstream operations without knowing what fields to expect.
search_by_color 'mode' parameter lacks enum constraint. Description says 'Color search mode' but does not list valid values (e.g., 'exact', 'similar', 'palette'). LLMs will hallucinate invalid modes.
No error handling guidance. Tools do not document failure modes (service unavailable, invalid image path, indexing timeout) or recovery steps. LLMs receive raw errors with no actionable next steps.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2025-06-18+ | v2 |
index_folder is destructive (WRITE risk) but has no confirmation or dry-run option. Agents could accidentally re-index large folders, overwriting embeddings. No idempotency guarantee documented.
search_by_color hex parameter lacks format validation hint. Description does not specify format (e.g., '#RRGGBB' or 'RRGGBB'), allowing LLMs to pass invalid hex strings.