Model Context Protocol server for Sonarr (TV) and Radarr (movies) — manage your media library in natural language.
MCPArr demonstrates solid tool design with consistent naming patterns (verb_noun: search_*, list_*, add_*, grab_*, delete_*), comprehensive descriptions (avg 180 chars), and well-structured input schemas. All 27 tools have explicit descriptions and typed parameters. However, output schemas are not documented in the source code, parameter descriptions lack format constraints and range specifications, and error handling guidance is minimal. The skill-based workflow system is innovative but adds complexity. Radarr/Sonarr tool pairs are well-mirrored, reducing cognitive load.
Get MCPArr workflow & best-practice skill guides for managing Sonarr (TV) and Radarr (movies). CALL THIS to load the relevant skill BEFORE performing matching actions — the guides tell you the correct, safe sequence of tool calls. Modes (progressive disclosure): - no args → list all bundled skills with their trigger conditions - skill → read that skill's guide and list its reference files - skill + file → read a specific reference file
Add a movie to Radarr. Identify it by `tmdbId` (preferred, from radarr_lookup_movie) or a `term`. Quality profile and root folder default to the first available unless named. Set searchNow=true to immediately search.
Tracked movies with a release (cinema/digital/physical) in a date range. Defaults to the next `days` (30) from now. Provide ISO `start`/`end` to override.
Monitored movies with a file below the quality-profile cutoff — candidates for an upgrade. Returns movieId for an interactive search.
Delete a movie from Radarr. Confirm with the user before deleting. Set `deleteFiles=true` to also delete the movie files from disk.
Output schemas not documented in source code. Tools return complex objects (releases with quality/size/peers/rejection reasons, queue items with progress, health status with warnings) but LLMs cannot see the response structure to plan downstream calls or extract required fields.
Parameter descriptions lack format constraints and range specifications. E.g., 'days' parameter accepts 1-365 but description does not state bounds; 'limit' accepts 1-200 but constraint is undocumented. LLMs cannot validate inputs without explicit constraints.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | <=2025-11-25 | v2 |
Grab (download) a specific release for a movie. Requires the `guid` and `indexerId` from radarr_search_releases. Confirm with the user before grabbing.
System status, health-check warnings/errors, free disk space, and indexer + download-client status. Use this to diagnose 'nothing is downloading' or 'is everything OK'.
List available quality profiles and root folders. Use before adding a movie to choose where it goes and at what quality.
Search for a movie (by name, or `tmdb:<id>` / `imdb:<id>`) to add to Radarr. Returns candidates with tmdbId and whether each is already in the library.
Monitored movies that have been released but have no file yet — things Radarr should have grabbed. Returns movieId for a manual interactive search.
Current Radarr download queue with status and progress.
Remove an item from the Radarr download queue. Set `removeFromClient=true` to also stop the download client. Set `blocklist=true` to prevent future grabs of this release.
Check whether a movie is already tracked in Radarr. Returns matching tracked movies with monitored state and whether a file exists. Omit `query` to list everything.
Run an interactive indexer search for a movie and return available releases SORTED BY SEEDERS DESCENDING. Each release includes quality, size, indexer, peers, rejection reasons, and the guid+indexerId needed to grab it. This does NOT download anything.
Add a series to Sonarr. Identify it by `tvdbId` (preferred, from sonarr_lookup_series) or a `term`. Quality profile and root folder default to the first available unless named. Set searchNow=true to immediately search for missing episodes.
Tracked episodes with an air date in a date range. Defaults to the next `days` (30) from now. Provide ISO `start`/`end` to override.
Monitored episodes with a file below the quality-profile cutoff — candidates for an upgrade. Returns episodeId for an interactive search.
Delete a series from Sonarr. Confirm with the user before deleting. Set `deleteFiles=true` to also delete the series files from disk.
Grab (download) a specific release for an episode. Requires the `guid` and `indexerId` from sonarr_search_releases. Confirm with the user before grabbing.
System status, health-check warnings/errors, free disk space, and indexer + download-client status. Use this to diagnose 'nothing is downloading' or 'is everything OK'.
List available quality profiles and root folders. Use before adding a series to choose where it goes and at what quality.
Search for a series (by name, or `tvdb:<id>` / `imdb:<id>`) to add to Sonarr. Returns candidates with tvdbId and whether each is already in the library.
Monitored episodes that have aired but have no file yet — things Sonarr should have grabbed. Returns episodeId for a manual interactive search.
Current Sonarr download queue with status and progress.
Remove an item from the Sonarr download queue. Set `removeFromClient=true` to also stop the download client. Set `blocklist=true` to prevent future grabs of this release.
Check whether a series is already tracked in Sonarr. Returns matching tracked series with monitored state and episode counts. Omit `query` to list everything.
Run an interactive indexer search for an episode and return available releases SORTED BY SEEDERS DESCENDING. Each release includes quality, size, indexer, peers, rejection reasons, and the guid+indexerId needed to grab it. This does NOT download anything.
Error handling and recovery guidance absent. Tools do not document what errors are retryable, what user-fixable conditions exist, or what the LLM should do if a lookup fails. E.g., radarr_add_movie could fail if qualityProfile or rootFolder name is invalid, but no guidance on how to recover.
Confirmation/dry-run pattern missing for destructive operations. radarr_delete_movie and sonarr_delete_series accept deleteFiles=true but descriptions only say 'Confirm with the user before deleting', no mechanism to prevent accidental execution or preview consequences.
Lookup tools (radarr_lookup_movie, sonarr_lookup_series) do not document ID format expectations. Descriptions mention 'tmdb:<id>' and 'tvdb:<id>' syntax but do not specify whether bare numeric IDs are accepted or what happens if format is wrong.