An MCP server that provides tools to search and query a MongoDB movie database (sample_mflix) with filtering, sorting, and rating options.
The server defines a single tool 'find_movies' with a comprehensive schema and reasonable descriptions. However, there are notable gaps in parameter descriptions, missing error handling guidance, and the tool lacks any hint annotations. The schema is well-structured but descriptions could be more LLM-optimized. Parameter descriptions vary in quality, some are detailed (e.g., 'sort_by' with field examples), others are generic (e.g., 'genres' just says 'List of genres'). Output schema is not documented. Error handling provides no recovery guidance.
Finds movies based on a variety of criteria, with options for sorting and limiting results.
Output schema not documented. Tool description states 'Finds movies...' but does not specify what fields are returned, their types, or when pagination applies.
Parameter descriptions lack clarity on constraints and formats. E.g., 'sort_by' says 'Field to sort results by (e.g., "imdb.rating", "year", "title", or short keys: "imdb", "metacritic")', example values should be replaced with enum constraints or a reference to available fields. LLMs tend to reuse example values literally.
No error handling or recovery guidance in tool definition. Errors like 'MongoDB connection failed' or 'empty result set' have no actionable next steps for the LLM. Pattern recommends: 'Try narrowing filters' or 'Call search with partial title.'
Missing tool annotations. Tool is READ_ONLY (safe to retry, no side effects) but this hint is not declared in the schema via readOnlyHint or equivalent. LLMs cannot infer retry safety without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | 2026-07-28+ | v2 |
Parameter 'limit' defaults to 10 and accepts 0 for 'no limit', but the description does not warn that very large result sets may exhaust context or cause timeouts. Should cap results and explain pagination.
Parameters 'genres', 'actors', 'directors', 'writers' accept union types (list or string) with a note that 'Claude was not sending lists properly.' This indicates a workaround for tool framework issues rather than a clean interface. The description should not reference framework quirks, the tool should enforce one clear type.