mcp-arr-suite
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-arr-suite search for a TV show called 'Game of Thrones'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-arr-suite
MCP server for the *arr media management suite — Sonarr, Radarr, Lidarr, Prowlarr, and SABnzbd.
Exposes your media services as MCP tools consumable by Claude or any MCP-capable client. 215 tools across 7 modules.
Requirements
Node.js >= 18
At least one service running and accessible
Related MCP server: Arr-MCP
Install
Via npm (recommended):
npm install -g mcp-arr-suiteFrom source:
git clone https://github.com/ismael9291/mcp-arr-suite.git
cd mcp-arr-suite
npm install && npm run buildConfiguration
All configuration is via environment variables. Set at least one service pair:
Variable | Description |
| Sonarr base URL (e.g. |
| Sonarr API key |
| Radarr base URL (e.g. |
| Radarr API key |
| Lidarr base URL (e.g. |
| Lidarr API key |
| Prowlarr base URL (e.g. |
| Prowlarr API key |
| SABnzbd base URL (e.g. |
| SABnzbd API key (from |
Tools are only registered for services that are configured.
MCP Client Setup
Example Claude Desktop / Claude Code config (npm install):
{
"mcpServers": {
"mcp-arr-suite": {
"command": "mcp-arr-suite",
"env": {
"SONARR_URL": "http://localhost:8989",
"SONARR_API_KEY": "...",
"RADARR_URL": "http://localhost:7878",
"RADARR_API_KEY": "...",
"PROWLARR_URL": "http://localhost:9696",
"PROWLARR_API_KEY": "...",
"SABNZBD_URL": "http://localhost:8080",
"SABNZBD_API_KEY": "..."
}
}
}
}If running from source, replace "command": "mcp-arr-suite" with:
"command": "node",
"args": ["/path/to/mcp-arr-suite/dist/index.js"],Tools
Cross-service (always available)
Tool | Description |
| Connection status and version for all configured services |
| Search across all configured media services simultaneously |
Sonarr — 54 tools
Category | Tools |
Library |
|
Episodes |
|
Search & import |
|
Queue |
|
History & blocklist |
|
Quality & formats |
|
Config |
|
System |
|
Commands |
|
Overview |
|
Radarr — 50 tools
Category | Tools |
Library |
|
Files |
|
Search & import |
|
Queue |
|
History & blocklist |
|
Quality & formats |
|
Config |
|
System |
|
Commands |
|
Overview |
|
Lidarr — 49 tools
Category | Tools |
Library |
|
Albums & files |
|
Search |
|
Queue |
|
History & blocklist |
|
Quality & formats |
|
Config |
|
System |
|
Commands |
|
Overview |
|
Prowlarr — 24 tools
Category | Tools |
Indexers |
|
Applications |
|
Stats & history |
|
Config |
|
System |
|
Commands |
|
SABnzbd — 29 tools
Category | Tools |
Queue |
|
History |
|
Delete |
|
Post-processing |
|
Add NZBs |
|
Config |
|
System |
|
Triggers |
|
TRaSH Guides — 7 tools (always available)
Tool | Description |
| List recommended quality profiles from TRaSH Guides |
| Full profile details including custom format scores |
| List custom formats, optionally filtered by category |
| Recommended naming conventions for your media server |
| Recommended min/max/preferred file sizes per quality |
| Compare your quality profile against TRaSH recommendations |
| Compare your naming config against TRaSH recommendations |
Testing
# Unit tests (MSW mocks, no services required)
npm test
# Live smoke tests against real services
SONARR_URL=http://localhost:8989 SONARR_API_KEY=... \
RADARR_URL=http://localhost:7878 RADARR_API_KEY=... \
npm run test:liveAdditional live test variables:
Variable | Description |
| Override default search term (default: |
| Include TRaSH Guides smoke tests |
| Include command tests (refresh, scan, trigger, etc.) |
| Movie ID for command smoke tests |
| Downloads path for |
| Series ID for command smoke tests |
| Episode ID for release search tests |
| Downloads path for |
| Folder for manual import tests (default: |
| Artist ID for command smoke tests |
API Documentation
License
Available Tools
70 toolsarr_search_allA
Search across all configured *arr services simultaneously. Returns top 5 results per service. Useful for finding whether something is already tracked in any service. Use the "type" filter to narrow to a specific media type.
Inputs: term (required), type.
arr_statusA
Get connection status and version info for all configured *arr services. Use this to verify which services are running and reachable.
Inputs: no named parameters.
sonarr_add_seriesA
Add a TV series to Sonarr. Use sonarr_search first to get the tvdbId, sonarr_get_root_folders for rootFolderPath, sonarr_get_quality_profiles for qualityProfileId, and sonarr_get_tags for tag IDs.
Inputs: title (required), tvdbId (required), rootFolderPath (required), qualityProfileId (required), +3 more.
sonarr_bulk_delete_seriesA
Bulk delete multiple series from Sonarr. WARNING: Setting deleteFiles to true is destructive and irreversible — files will be permanently removed from disk.
Inputs: seriesIds (required), deleteFiles, addImportListExclusion.
sonarr_bulk_update_seriesA
Bulk update multiple Sonarr series at once — change monitored status, quality profile, or tags in a single API call. Use this instead of calling sonarr_update_series in a loop.
Inputs: seriesIds (required), tags, applyTags, monitored, +1 more.
sonarr_create_custom_formatB
Create a new custom format in Sonarr. Pass a full specifications array to define matching rules.
Inputs: name (required), specifications (required), includeWhenRenaming.
sonarr_create_tagB
Create a new tag in Sonarr.
Inputs: label (required).
sonarr_delete_custom_formatB
Delete a custom format from Sonarr by ID.
Inputs: formatId (required).
sonarr_delete_episode_fileA
Delete a specific episode file from disk (the episode remains in Sonarr as unmonitored).
Inputs: fileId (required).
sonarr_delete_episode_files_bulkA
Delete multiple episode files at once. Pass explicit fileIds, or pass seriesId (+ optional seasonNumber) to delete all files for a series or season. Use instead of calling sonarr_delete_episode_file in a loop.
Inputs: fileIds, seriesId, seasonNumber.
sonarr_delete_from_blocklistA
Remove an entry from the Sonarr blocklist so that release can be grabbed again.
Inputs: blocklistId (required).
sonarr_delete_import_exclusionA
Remove a series from the Sonarr import exclusion list, allowing it to be re-added.
Inputs: exclusionId (required).
sonarr_delete_seriesA
Remove a series from Sonarr. Optionally delete files from disk and/or add to import exclusions.
Inputs: seriesId (required), deleteFiles, addImportListExclusion.
sonarr_delete_tagA
Delete a tag from Sonarr by ID.
Inputs: tagId (required).
sonarr_get_blocklistA
Get the Sonarr blocklist — releases that were blocked/failed and won't be re-grabbed.
Inputs: page, pageSize.
sonarr_get_calendarB
Get upcoming episode air dates from Sonarr.
Inputs: days.
sonarr_get_command_statusA
Poll the status of an async command previously triggered (e.g. RescanSeries, RefreshSeries). Pass the commandId returned by the trigger tool.
Inputs: commandId (required).
sonarr_get_custom_formatA
Get a single custom format by ID, including full specification details.
Inputs: formatId (required).
sonarr_get_disk_spaceA
Get disk space usage for all Sonarr root folders and mounts.
Inputs: no named parameters.
sonarr_get_download_clientsB
Get download client configurations from Sonarr (TV).
Inputs: no named parameters.
sonarr_get_episode_filesA
Get file details for episodes in a series — quality, size, codecs, languages. Use seasonNumber to filter to a single season and avoid large responses.
Inputs: seriesId (required), seasonNumber.
sonarr_get_episodesA
Get episodes for a series. Shows which episodes are available and which are missing. Filter by season to reduce response size.
Inputs: seriesId (required), seasonNumber.
sonarr_get_healthA
Get health check warnings from Sonarr (TV). Shows any problems the application has detected.
Inputs: no named parameters.
sonarr_get_historyA
Get download history. Filter to a specific series with seriesId, or leave blank for recent activity across all series.
Inputs: page, pageSize, seriesId.
sonarr_get_import_exclusionsA
List series that are excluded from import (blocked from being re-added after deletion).
Inputs: no named parameters.
sonarr_get_import_listsA
List all configured import list sources in Sonarr (Trakt, IMDb, Plex Watchlist, etc.).
Inputs: no named parameters.
sonarr_get_logsB
Fetch recent application log entries from Sonarr.
Inputs: page, level, pageSize.
sonarr_get_manual_importA
Scan a folder and preview how Sonarr would match each file for manual import. Shows quality, matched series/episode, and any rejection reasons. Use sonarr_process_manual_import to confirm.
Inputs: folder (required), page, pageSize, filterExistingFiles.
sonarr_get_namingA
Get file and folder naming configuration from Sonarr (TV).
Inputs: no named parameters.
sonarr_get_notificationsA
List all configured notification providers in Sonarr (webhooks, email, Slack, etc.).
Inputs: no named parameters.
sonarr_get_quality_profileA
Get a single Sonarr quality profile by ID with full details including quality items and custom format scores. Required before calling sonarr_update_quality_profile.
Inputs: profileId (required).
sonarr_get_quality_profilesA
Get quality profiles from Sonarr (TV). Shows allowed qualities, upgrade settings, and custom format scores.
Inputs: no named parameters.
sonarr_get_queueA
Get current Sonarr download queue. Shows active downloads and their progress.
Inputs: limit.
sonarr_get_root_foldersA
Get root folders and free space from Sonarr (TV). Use this to find valid rootFolderPath values when adding media.
Inputs: no named parameters.
sonarr_get_seriesA
Get TV series from the Sonarr library. Returns summary fields only — use search to filter before paginating. Default limit=25 to keep context usage low.
Inputs: limit, offset, search.
sonarr_get_system_tasksA
List all scheduled background tasks in Sonarr with their last/next run times and current status.
Inputs: no named parameters.
sonarr_get_tagsA
Get all tags defined in Sonarr (TV). Use tag IDs when adding media.
Inputs: no named parameters.
sonarr_get_wanted_cutoffA
Get paginated list of episodes that have a file but have not met the quality cutoff (upgrade candidates).
Inputs: page, pageSize.
sonarr_get_wanted_missingA
Get paginated list of monitored episodes that are missing (not yet downloaded).
Inputs: page, pageSize.
sonarr_grab_releaseA
Grab a specific release and send it to the download client. Use sonarr_search_releases first to find the guid and indexerId.
Inputs: guid (required), indexerId (required).
sonarr_list_custom_formatsA
List all custom formats defined in Sonarr with their IDs and specifications.
Inputs: no named parameters.
sonarr_monitor_episodesA
Bulk set monitored/unmonitored status for specific episodes.
Inputs: monitored (required), episodeIds (required).
sonarr_process_manual_importA
Confirm and import files identified by sonarr_get_manual_import. Pass the items array from the preview response (optionally filtered to only importable items with no rejections).
Inputs: items (required).
sonarr_refresh_seriesB
Trigger a metadata refresh for a specific series in Sonarr. Omit seriesId to refresh metadata for all series.
Inputs: seriesId.
sonarr_remove_from_queueB
Remove one or more items from the Sonarr download queue. Optionally blocklist them to prevent re-grabbing.
Inputs: ids (required), blocklist, removeFromClient.
sonarr_review_setupA
Comprehensive configuration review for Sonarr (TV). Returns quality profiles, download clients, naming, storage, indexers, and health in one call. Use this to analyse the setup and suggest improvements.
Inputs: no named parameters.
sonarr_searchA
Search for TV series by name. Returns top 10 results with tvdbId needed for sonarr_add_series.
Inputs: term (required).
sonarr_search_episodeC
Trigger a download search for specific episode(s).
Inputs: episodeIds (required).
sonarr_search_missingA
Trigger a search for all missing episodes in a series.
Inputs: seriesId (required).
sonarr_search_releasesA
Search indexers for available releases for a specific episode. Returns release candidates with quality, size, seeders, and rejection reasons. Use the guid and indexerId from results to grab a release with sonarr_grab_release.
Inputs: episodeId (required).
sonarr_season_passB
Bulk set monitored status for entire seasons across one or more series.
Inputs: seasons (required), seriesId (required).
sonarr_trigger_backupA
Create an on-demand backup of Sonarr configuration and database.
Inputs: no named parameters.
sonarr_trigger_cutoff_unmet_searchA
Trigger a search for all monitored episodes that have a file but have not met the quality cutoff (upgrade candidates).
Inputs: no named parameters.
sonarr_trigger_downloaded_scanA
Force a scan of a completed downloads path to import any files that were not auto-imported. A path is required — pass the absolute path to the completed downloads folder (e.g. /downloads/complete).
Inputs: path (required).
sonarr_trigger_refresh_monitored_downloadsA
Trigger Sonarr to refresh its view of monitored downloads — useful for checking stalled or stuck downloads.
Inputs: no named parameters.
sonarr_trigger_rename_seriesA
Rename episode files on disk to match current Sonarr naming settings. Pass specific seriesIds or omit to rename all.
Inputs: seriesIds.
sonarr_trigger_rescan_seriesA
Rescan disk for all series to link existing files Sonarr does not know about.
Inputs: no named parameters.
sonarr_trigger_rss_syncA
Trigger an immediate RSS feed sync across all configured indexers in Sonarr.
Inputs: no named parameters.
sonarr_update_custom_formatA
Update an existing custom format. Fetches the current format first then applies your changes. Only provide fields you want to change.
Inputs: formatId (required), name, specifications, includeWhenRenaming.
sonarr_update_import_listA
Update an import list in Sonarr — primarily used to enable or disable it.
Inputs: listId (required), enabled, enableAuto.
sonarr_update_quality_definitionA
Update the min/max/preferred size limits for a quality tier in Sonarr. WARNING: misconfigured sizes can block all imports — verify values before applying.
Inputs: definitionId (required), maxSize, minSize, preferredSize.
sonarr_update_quality_profileA
Update a Sonarr quality profile — change upgradeAllowed, minFormatScore, cutoffFormatScore, cutoff quality, or individual custom format scores. Fetches the existing profile first to avoid overwriting unrelated fields.
Inputs: profileId (required), cutoff, formatScores, minFormatScore, +2 more.
sonarr_update_seriesB
Update a series in Sonarr — change monitored status, quality profile, or tags.
Inputs: seriesId (required), tags, monitored, seasonFolder, +1 more.
trash_compare_namingA
Compare your naming configuration against TRaSH Guides recommendations. Requires the corresponding *arr service to be configured.
Inputs: service (required), mediaServer (required).
trash_compare_profileA
Compare your quality profile against TRaSH Guides recommendations. Shows missing custom formats, scoring differences, and quality settings. Requires the corresponding *arr service to be configured.
Inputs: service (required), profileId (required), trashProfile (required).
trash_get_namingA
Get TRaSH Guides recommended naming conventions for your media server (Plex, Emby, Jellyfin, or standard).
Inputs: service (required), mediaServer (required).
trash_get_profileA
Get a specific TRaSH Guides quality profile with all custom format scores, quality settings, and implementation details.
Inputs: profile (required), service (required).
trash_get_quality_sizesA
Get TRaSH Guides recommended min/max/preferred file sizes for each quality level.
Inputs: service (required), type.
trash_list_custom_formatsA
List available TRaSH Guides custom formats. Filter by category: hdr, audio, resolution, source, streaming, anime, unwanted, release, language.
Inputs: service (required), category.
trash_list_profilesA
List available TRaSH Guides quality profiles for Radarr or Sonarr. Shows recommended profiles for different use cases (1080p, 4K, Remux, etc.)
Inputs: service (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 70 tools
Most tools have clearly distinct purposes, with clear verb-object naming. Minor confusion possible between sonarr_get_quality_profiles and sonarr_get_quality_profile, or between various search tools (search_episode vs search_releases vs search_missing), but descriptions clarify usage.
All tools follow a consistent [domain]_[verb]_[object] snake_case pattern. Prefixes (arr_, trash_, sonarr_) group related functionality, and verbs (get, add, delete, update, trigger) are used predictably across the suite.
With 70 tools, this is a very large surface. While it covers many Sonarr operations, the sheer number overwhelms the typical agent and includes many niche administrative tools (logs, system tasks, backup) that could be omitted or combined.
The Sonarr library management surface is comprehensive (series, episodes, quality profiles, custom formats, tags, blocklist, imports). However, the suite claims to cover all *arr services but has no Radarr-specific tools, and missing indexer management and notification configuration are notable gaps.
Maintenance
Related MCP Connectors
Trakt MCP — TV/movie metadata + watch tracking signals
Manage your KeepMySubs subscriptions, spend, renewals, and bills from any MCP client.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables unified control of \*arr media management applications (Sonarr, Radarr, Lidarr, Readarr, Prowlarr) through natural language queries. Manage TV shows, movies, music, books, search for content, monitor downloads, and check upcoming releases across all services.731,822 npm245MIT
- AlicenseAqualityCmaintenanceMCP server to manage your *ARR media stack (Radarr, Sonarr, Lidarr, Readarr, Prowlarr) for searching, adding, and managing movies, TV shows, music, books, and indexers.1ISC
- FlicenseAqualityDmaintenanceEnables users to manage Sonarr and Radarr instances through natural language, allowing search, addition, deletion, and monitoring of TV series and movies.60-
- AlicenseBqualityDmaintenanceEnables control and management of a self-hosted media stack (Radarr, Sonarr, Prowlarr, SABnzbd, qBittorrent) through natural language via MCP.15GPL 3.0