MCP server for Radarr – manage your movie library via Claude
Radarr MCP has solid naming conventions (all tools start with action verbs: get_, delete_, add_, update_, execute_) and complete input schemas for all 17 tools. Descriptions are present and moderately detailed (ranging 50-200 chars). However, output schemas are entirely undocumented, the rubric requires documented return types for A+ quality, and this server provides none. Parameter descriptions are present but many lack detail on constraints, formats, and dependencies. Error handling is minimal with no recovery guidance. The server reads from and writes to a remote Radarr instance but provides no input validation, constraint documentation, or structured error responses. Overall, this is a B-/C+ level server: functional definitions with clear names and basic schemas, but missing output documentation and error guidance that production tools require.
Add a movie to the Radarr library for monitoring and download.
Remove a movie from Radarr (optionally delete files).
Remove an item from the download queue.
Execute a Radarr command. Common names: RescanMovie, RefreshMovie, MoviesSearch, DownloadedMoviesScan, MissingMoviesSearch.
Get movies releasing within a date range (defaults to next 7 days).
Check the status of a previously submitted command.
No output schemas documented. The rubric requires all A+ tools to document return types. Users cannot plan multi-step tool chains without knowing what fields get_movies, add_movie, get_queue, etc. actually return. This forces LLMs to guess, leading to incorrect field extraction and failed follow-up calls.
Empty or trivial parameter descriptions. Examples: get_calendar has no description for 'start', 'end', or 'unmonitored' beyond the type label. get_system_status has an empty inputSchema with no properties at all. This violates the rule that every parameter needs a description explaining what it controls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Get disk space information for all configured paths.
Get system health check results.
Get paginated download history.
Get full details of a single movie by its Radarr ID.
List all movies in the Radarr library, optionally filtered by TMDB ID.
Get the current download queue.
Get Radarr system status (version, OS, .NET runtime, paths, etc.).
Get movies where the existing file doesn't meet the quality cutoff.
Get monitored movies that are missing (not yet downloaded).
Search for movies on TMDB by title or TMDB ID (prefixed with 'tmdb:'). Returns candidates to add.
Update monitoring status and other settings for an existing movie.
No error handling or recovery guidance. The code uses throw new Error(...) but provides no structured error responses, retryability indicators, or suggestions for agent recovery. Per the rubric, error responses must tell the LLM what to do next: 'User not found. Try search_users() with a partial name.' Raw error messages are useless to agents.
No input validation or constraint documentation. The add_movie tool requires 'qualityProfileId' and 'rootFolderPath' but provides no constraints on valid values, ranges, or format. When an LLM passes an invalid qualityProfileId, the API will reject it, but the tool provides no guidance on how to discover valid IDs (e.g., 'Call get_quality_profiles first').
Destructive operations (delete_movie, delete_queue_item) lack confirmation or dry-run support. Per the rubric, irreversible operations should support confirmation before execute to prevent catastrophic agent errors. deleteFiles in delete_movie defaults to false, which is safe, but no confirmation step exists.
Missing pagination details in list tools. get_movies, get_history, get_wanted_missing accept page/pageSize but do not document total count or next_cursor in the schema, and no result limit is enforced. Per the rubric, tools returning lists should cap results at 20-50 and advertise the limit in the description.
Parameter types are JSON Schema compliant but lack inline constraint hints. For example, execute_command's 'movieIds' is an array but lacks minItems, maxItems, or description of what happens if the array is empty. add_movie's 'year' has no min/max, allowing negative or future years.