MCP server for enriching book, movie, and TV show metadata for Obsidian vaults
This server provides 5 tools for media metadata enrichment (books, movies, TV shows). Tool naming is clear and action-oriented (lookup_*, generate_*, batch_*). Descriptions are present and moderately detailed (100-250 chars), above the 20-char minimum. Input schemas are visible with type definitions and parameter descriptions. However, there are notable gaps: output schemas are not explicitly documented in the visible code, error handling guidance is minimal, and some parameter constraints are missing (e.g., no validation documented for concurrency limits, no rate-limit guidance). The batch_lookup tool combines multiple media types in one call, which is acceptable for composition but stretches the single-responsibility principle. Parameter descriptions are adequate but could be more prescriptive about valid ranges and formats. No security annotations or tool hints (readOnlyHint) are visible despite all tools being read-only operations.
Batch look up multiple books, movies, or TV shows in a single request. Supports concurrent lookups for better performance.
Convert a lookup result to Obsidian YAML frontmatter. Supports minimal, default, and full templates.
Look up book metadata by title, author, or ISBN. Searches Open Library, Google Books, Goodreads, and Hardcover for comprehensive information including series data, ratings, tropes, and cover images.
Look up movie metadata by title and optional year. Returns comprehensive movie information including cast, director, ratings, and watch providers.
Look up TV show metadata by title. Returns comprehensive show information including seasons, episodes, networks, and ratings.
Output schemas not documented. While input schemas are present with types and descriptions, there is no visible documentation of what fields lookup_book, lookup_movie, lookup_tv, and batch_lookup return. LLMs cannot plan downstream composition or extract required fields without knowing the response structure.
Missing error handling guidance. Tool descriptions do not explain what errors can occur, how to recover from them, or what the LLM should do if a lookup fails. For example, what happens if a book is not found in any source? Should the LLM retry with a different query, or is the search exhausted?
batch_lookup conflates multiple concerns. The tool accepts 'type' enum (book|movie|tv) but does not allow mixing types in one call. This design forces the agent to make separate batch calls for each media type when fetching mixed lists. Provide either a single batched endpoint for all types or separate batch_lookup_books, batch_lookup_movies, batch_lookup_tv tools.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 45 | - | v1 |
Missing parameter constraints and defaults. The 'concurrency' parameter in batch_lookup has no documented minimum/maximum, no default value, and no guidance on safe ranges. An LLM could pass concurrency=1000 and overwhelm downstream APIs. Specify a range (e.g., 1 - 10) and a sensible default (e.g., 3).
Tool annotations missing. All five tools are read-only (risk: READ_ONLY), but the tool definitions do not include readOnlyHint=true annotations. This prevents clients from tagging safe tools and optimizing safety checks. Add toolAnnotations with readOnlyHint=true to all tools.
generate_frontmatter parameter 'metadata' is typed as object with a vague description. No schema is visible defining what fields the metadata object must contain, what optional fields are supported, or how it maps to the output of lookup_* tools. This breaks tool chaining because the agent cannot know if the object from lookup_book is compatible with generate_frontmatter.
Parameter descriptions do not explain dependencies. For example, generate_frontmatter 'template' enum has three options (minimal, default, full) but no description of what fields are included in each or when to use each. The LLM cannot choose the right template without more context.
No pagination guidance in lookup descriptions. lookup_book, lookup_movie, lookup_tv do not document whether they return a single best match, multiple candidates, or paginated results. If they return lists, there should be limit and offset/cursor parameters. If they return one result, the description should say 'Returns the single best match.'