mcp-arr-suite
Enables interaction with the *arr media management suite (Sonarr, Radarr, Lidarr, Prowlarr, SABnzbd) and TRaSH Guides through MCP tools, allowing media library management, searching, and configuration via natural language.
README
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.
<img width="854" height="739" alt="MCP Suite Image Diagram" src="https://github.com/user-attachments/assets/099d2cb3-ff71-4a27-8816-6e0d66f22a7a" />
Requirements
- Node.js >= 18
- At least one service running and accessible
Install
Via npm (recommended):
npm install -g mcp-arr-suite
From source:
git clone https://github.com/ismael9291/mcp-arr-suite.git
cd mcp-arr-suite
npm install && npm run build
Configuration
All configuration is via environment variables. Set at least one service pair:
| Variable | Description |
|---|---|
SONARR_URL |
Sonarr base URL (e.g. http://localhost:8989) |
SONARR_API_KEY |
Sonarr API key |
RADARR_URL |
Radarr base URL (e.g. http://localhost:7878) |
RADARR_API_KEY |
Radarr API key |
LIDARR_URL |
Lidarr base URL (e.g. http://localhost:8686) |
LIDARR_API_KEY |
Lidarr API key |
PROWLARR_URL |
Prowlarr base URL (e.g. http://localhost:9696) |
PROWLARR_API_KEY |
Prowlarr API key |
SABNZBD_URL |
SABnzbd base URL (e.g. http://localhost:8080) |
SABNZBD_API_KEY |
SABnzbd API key (from sabnzbd.ini, field api_key) |
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 |
|---|---|
arr_status |
Connection status and version for all configured services |
arr_search_all |
Search across all configured media services simultaneously |
Sonarr — 54 tools
| Category | Tools |
|---|---|
| Library | sonarr_get_series, sonarr_search, sonarr_add_series, sonarr_delete_series, sonarr_update_series, sonarr_bulk_update_series, sonarr_bulk_delete_series |
| Episodes | sonarr_get_episodes, sonarr_get_episode_files, sonarr_delete_episode_file, sonarr_delete_episode_files_bulk, sonarr_monitor_episodes, sonarr_season_pass |
| Search & import | sonarr_search_missing, sonarr_search_episode, sonarr_search_releases, sonarr_grab_release, sonarr_get_manual_import, sonarr_process_manual_import |
| Queue | sonarr_get_queue, sonarr_remove_from_queue, sonarr_get_wanted_missing, sonarr_get_wanted_cutoff |
| History & blocklist | sonarr_get_history, sonarr_get_blocklist, sonarr_delete_from_blocklist |
| Quality & formats | sonarr_get_quality_profiles, sonarr_get_quality_profile, sonarr_update_quality_profile, sonarr_update_quality_definition, sonarr_list_custom_formats, sonarr_get_custom_format, sonarr_create_custom_format, sonarr_update_custom_format, sonarr_delete_custom_format |
| Config | sonarr_get_import_lists, sonarr_update_import_list, sonarr_get_import_exclusions, sonarr_delete_import_exclusion, sonarr_get_tags, sonarr_create_tag, sonarr_delete_tag |
| System | sonarr_get_health, sonarr_get_disk_space, sonarr_get_root_folders, sonarr_get_download_clients, sonarr_get_naming, sonarr_get_system_tasks, sonarr_get_logs, sonarr_get_notifications, sonarr_get_calendar, sonarr_get_command_status |
| Commands | sonarr_refresh_series, sonarr_trigger_backup, sonarr_trigger_rss_sync, sonarr_trigger_refresh_monitored_downloads, sonarr_trigger_cutoff_unmet_search, sonarr_trigger_rescan_series, sonarr_trigger_rename_series, sonarr_trigger_downloaded_scan |
| Overview | sonarr_review_setup |
Radarr — 50 tools
| Category | Tools |
|---|---|
| Library | radarr_get_movies, radarr_search, radarr_add_movie, radarr_delete_movie, radarr_update_movie, radarr_bulk_update_movies, radarr_bulk_delete_movies |
| Files | radarr_get_movie_files, radarr_delete_movie_file |
| Search & import | radarr_search_movie, radarr_search_releases, radarr_grab_release, radarr_get_manual_import, radarr_process_manual_import |
| Queue | radarr_get_queue, radarr_remove_from_queue, radarr_get_wanted_missing, radarr_get_wanted_cutoff |
| History & blocklist | radarr_get_history, radarr_get_blocklist, radarr_delete_from_blocklist |
| Quality & formats | radarr_get_quality_profiles, radarr_get_quality_profile, radarr_update_quality_profile, radarr_update_quality_definition, radarr_list_custom_formats, radarr_get_custom_format, radarr_create_custom_format, radarr_update_custom_format, radarr_delete_custom_format |
| Config | radarr_get_import_lists, radarr_update_import_list, radarr_get_import_exclusions, radarr_delete_import_exclusion, radarr_get_tags, radarr_create_tag, radarr_delete_tag |
| System | radarr_get_health, radarr_get_disk_space, radarr_get_root_folders, radarr_get_download_clients, radarr_get_naming, radarr_get_system_tasks, radarr_get_logs, radarr_get_notifications, radarr_get_calendar, radarr_get_command_status |
| Commands | radarr_refresh_movie, radarr_trigger_backup, radarr_trigger_rss_sync, radarr_trigger_refresh_monitored_downloads, radarr_trigger_cutoff_unmet_search, radarr_trigger_rescan_movies, radarr_trigger_rename_movies, radarr_trigger_missing_search, radarr_trigger_downloaded_scan |
| Overview | radarr_review_setup |
Lidarr — 49 tools
| Category | Tools |
|---|---|
| Library | lidarr_get_artists, lidarr_search, lidarr_add_artist, lidarr_delete_artist, lidarr_update_artist |
| Albums & files | lidarr_get_albums, lidarr_get_album_by_id, lidarr_monitor_albums, lidarr_get_track_files, lidarr_delete_track_file |
| Search | lidarr_search_album, lidarr_search_missing |
| Queue | lidarr_get_queue, lidarr_remove_from_queue, lidarr_get_wanted_missing, lidarr_get_wanted_cutoff |
| History & blocklist | lidarr_get_history, lidarr_get_blocklist, lidarr_delete_from_blocklist |
| Quality & formats | lidarr_get_quality_profiles, lidarr_get_quality_profile, lidarr_update_quality_profile, lidarr_update_quality_definition, lidarr_list_custom_formats, lidarr_get_custom_format, lidarr_create_custom_format, lidarr_update_custom_format, lidarr_delete_custom_format |
| Config | lidarr_get_metadata_profiles, lidarr_get_import_lists, lidarr_update_import_list, lidarr_get_import_exclusions, lidarr_delete_import_exclusion, lidarr_get_tags, lidarr_create_tag, lidarr_delete_tag |
| System | lidarr_get_health, lidarr_get_disk_space, lidarr_get_root_folders, lidarr_get_download_clients, lidarr_get_naming, lidarr_get_system_tasks, lidarr_get_logs, lidarr_get_notifications, lidarr_get_calendar, lidarr_get_command_status |
| Commands | lidarr_refresh_artist, lidarr_trigger_backup, lidarr_trigger_rss_sync, lidarr_trigger_refresh_monitored_downloads, lidarr_trigger_cutoff_unmet_search, lidarr_trigger_rescan_artists, lidarr_trigger_rename_artists, lidarr_trigger_refresh_all_artists, lidarr_trigger_downloaded_scan |
| Overview | lidarr_review_setup |
Prowlarr — 24 tools
| Category | Tools |
|---|---|
| Indexers | prowlarr_get_indexers, prowlarr_get_indexer, prowlarr_update_indexer, prowlarr_test_indexer, prowlarr_test_indexers, prowlarr_search |
| Applications | prowlarr_get_apps, prowlarr_update_app |
| Stats & history | prowlarr_get_stats, prowlarr_get_history |
| Config | prowlarr_get_tags, prowlarr_create_tag, prowlarr_delete_tag, prowlarr_get_download_clients, prowlarr_get_notifications, prowlarr_test_notification |
| System | prowlarr_get_status, prowlarr_get_health, prowlarr_get_logs, prowlarr_get_system_tasks, prowlarr_get_command_status |
| Commands | prowlarr_trigger_backup, prowlarr_trigger_rss_sync, prowlarr_sync_apps |
SABnzbd — 29 tools
| Category | Tools |
|---|---|
| Queue | sabnzbd_get_queue, sabnzbd_pause, sabnzbd_resume, sabnzbd_set_priority, sabnzbd_set_speed_limit, sabnzbd_change_cat, sabnzbd_change_opts |
| History | sabnzbd_get_history, sabnzbd_retry, sabnzbd_retry_all, sabnzbd_mark_completed, sabnzbd_purge_failed |
| Delete | sabnzbd_delete, sabnzbd_delete_orphans |
| Post-processing | sabnzbd_pause_pp, sabnzbd_resume_pp, sabnzbd_add_orphans |
| Add NZBs | sabnzbd_add_url |
| Config | sabnzbd_get_cats, sabnzbd_get_scripts, sabnzbd_get_paths |
| System | sabnzbd_get_status, sabnzbd_get_warnings, sabnzbd_unblock_server, sabnzbd_server_stats, sabnzbd_version |
| Triggers | sabnzbd_rss_now, sabnzbd_watched_now, sabnzbd_get_files |
TRaSH Guides — 7 tools (always available)
| Tool | Description |
|---|---|
trash_list_profiles |
List recommended quality profiles from TRaSH Guides |
trash_get_profile |
Full profile details including custom format scores |
trash_list_custom_formats |
List custom formats, optionally filtered by category |
trash_get_naming |
Recommended naming conventions for your media server |
trash_get_quality_sizes |
Recommended min/max/preferred file sizes per quality |
trash_compare_profile |
Compare your quality profile against TRaSH recommendations |
trash_compare_naming |
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:live
Additional live test variables:
| Variable | Description |
|---|---|
MCP_ARR_LIVE_SEARCH_TERM |
Override default search term (default: dune) |
MCP_ARR_ENABLE_TRASH=1 |
Include TRaSH Guides smoke tests |
MCP_ARR_ENABLE_COMMAND_SMOKE=1 |
Include command tests (refresh, scan, trigger, etc.) |
RADARR_TEST_MOVIE_ID |
Movie ID for command smoke tests |
RADARR_TEST_DOWNLOADS_PATH |
Downloads path for radarr_trigger_downloaded_scan (default: /downloads/complete) |
SONARR_TEST_SERIES_ID |
Series ID for command smoke tests |
SONARR_TEST_EPISODE_ID |
Episode ID for release search tests |
SONARR_TEST_DOWNLOADS_PATH |
Downloads path for sonarr_trigger_downloaded_scan (default: /downloads/complete) |
SONARR_TEST_IMPORT_FOLDER |
Folder for manual import tests (default: /tmp) |
LIDARR_TEST_ARTIST_ID |
Artist ID for command smoke tests |
API Documentation
License
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。