MCP server for memory video encoding, searching, and retrieval using the memvid library
This server has two tools with critically incomplete definitions. Both tools have descriptions under 20 characters (add_chunks: 'added chunks to memory.mp4', search: 'Semantic search over memory video chunks', first is only 29 chars but lacks action context, second is 38 chars but generic). Input schemas are visible but lack critical context: 'chunks' parameter has no description in the schema definition visible in source, and 'top_k' has a generic description. Critically, there are NO output schemas documented anywhere, the tools return plain strings ('"added chunks to memory.mp4"' and '"\n".join(res_strs)') which are unstructured and provide no guidance to LLMs about what data to extract or how to chain with other tools. The 'add_chunks' tool is vaguely named, it doesn't signal that it modifies state or what the chunks contain semantically. No error handling, no recovery guidance, no output structure. Tool descriptions fail to explain WHEN to use each tool, WHAT they return, or HOW they depend on each other (both operate on the same 'memory.mp4' / 'memory_index.json' state, suggesting coupling that's not documented). This is typical poor-quality community tooling.
added chunks to memory.mp4
Semantic search over memory video chunks
Missing or trivial tool descriptions. 'added chunks to memory.mp4' and 'Semantic search over memory video chunks' are too short and lack context about when to call the tool, what it modifies, or what it returns.
No documented output schemas. Both tools return unstructured strings. LLMs cannot plan downstream calls or extract structured data. E.g., 'search' returns '\n'.join(res_strs), the LLM does not know if it's a list of IDs, full texts, metadata dicts, or raw scores. 'add_chunks' returns a hardcoded string, no indication of success code, count added, or validation errors.
Vague tool name 'add_chunks' does not clearly signal that this is a state-modifying operation. Better names: 'add_video_chunks', 'append_to_memory_video', or 'index_text_to_video'. The current name conflicts with generic 'add' (could mean add to array, add to queue, add to cache). 'add_chunks' also lacks indication of what 'chunks' are (text? embeddings? timestamps?).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 36 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 50 | - | v1 |
Missing parameter descriptions in schema context. The 'chunks' parameter in add_chunks has type 'array' and items 'string', but the description 'List of text chunks to add to the memory video' is in the schema, not validated in code. There is no indication of max length per chunk, max count of chunks, or format (raw text? markdown? JSON?). 'top_k' defaults to 5 but no explanation why or what range is valid (1 - 1000? 1 - 100?).
No error handling or recovery guidance. If encoder.add_chunks() fails (e.g., invalid video file, index corruption), the tool returns nothing or crashes. If search returns no results or the index is missing, no fallback. Call add_chunks first to initialize the video.' None of this is present.
Tool composition issues. Both tools depend on the same external state (video file 'memory.mp4' and index 'memory_index.json'), but this dependency is not documented. If the user calls 'search' before 'add_chunks', it may fail or return empty results. No tool documents prerequisites or initialization state.
add_chunks modifies state (builds video, persists index) but the description does not signal this.