sonarr-mcp
This server exposes the Sonarr v3 REST API as MCP tools for reading and managing a Sonarr instance. Capabilities include:
Media library & calendar: list series, episodes, episode files, calendar, history, wanted cutoff/missing, and rename information.
Series management: add, update, delete, bulk edit, import, lookup by TVDB/TMDB, manage root folders and season passes.
Episode & file management: view and set monitored status; update, delete, and bulk edit episode files.
Search & download: search releases, push releases, manage download queue (list/grab/delete), manual import, blocklist management.
Providers & indexers: list/create/update/delete/test indexers and download clients; manage import lists and import list exclusions; retrieve indexer flags/schemas.
Profiles & formats: manage quality profiles, quality definitions, language profiles, custom formats, delay profiles, release profiles, and auto tagging.
Configuration: manage naming config, media management, UI/host/download client/import list/indexer config, notifications, metadata, remote path mappings, custom filters, and localization.
System & maintenance: run commands, view health/status/tasks/logs/update logs/disk space, manage backups, restart/shutdown, browse server filesystem/media files, parse filenames, and ping the server.
Provides tools for reading and managing a Sonarr instance, including series, episodes, episode files, download queue, history, indexers, import lists, custom formats, tags, commands, and system status.
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., "@sonarr-mcp What's in my download queue?"
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.
sonarr-mcp
Part of the arr-mcps collection. MCP server exposing Sonarr's v3 REST API (OpenAPI 3.0.0) as tools, so an LLM can read and manage a Sonarr instance: series, episodes, episode files, the download queue, history, indexers, import lists, custom formats, tags, commands, system status, and more. Full surface — reads and writes, with destructive tools flagged.
Built with FastMCP.
Getting an API key
Generate one in Sonarr Settings > General > Security. Auth is the
X-Api-Key header.
Related MCP server: seerr-mcp
Install
Download a wheel from the latest release
and install it as a uv tool (no repo checkout needed):
uv tool install sonarr_mcp-*.whlThis puts a sonarr-mcp command on your PATH. Register it with Claude Code:
claude mcp add sonarr \
--env SONARR_URL=http://your-sonarr-host:8989 \
--env SONARR_API_KEY=<key> \
-- sonarr-mcpFrom source
uv sync
cp .env.example .env # fill in SONARR_URL and SONARR_API_KEYclaude mcp add sonarr \
--env SONARR_URL=http://your-sonarr-host:8989 \
--env SONARR_API_KEY=<key> \
-- uv run --directory /path/to/sonarr-mcp sonarr-mcpConfig
Env var | Required | Default |
| yes | - |
| yes* | none (no |
* Every API endpoint requires auth; practically you must set it, but the server still starts without one so errors surface from the API rather than at startup.
Tools
15 resource-scoped tools, each covering multiple Sonarr v3 endpoints (223
total) via an operation parameter. Call a tool with operation set to one
of its listed operations and an arguments dict matching that operation's
parameters — the tool's own description (visible to your MCP client) lists
every operation, its signature, and a one-line doc. This keeps the full REST
surface available while costing a fraction of the context budget of
registering all 223 endpoints as separate tools.
Tool | Operations | Kind |
| 49 | reads + writes |
| 26 | reads + writes |
| 26 | reads + writes |
| 20 | reads + writes |
| 18 | reads + writes |
| 18 | reads + writes |
| 16 | reads + writes |
| 11 | reads + writes |
| 8 | reads + writes |
| 7 | reads + writes |
| 7 | reads + writes |
| 7 | reads + writes |
| 4 | reads + writes |
| 4 | read-only |
| 2 | read-only |
Example: sonarr_queue(operation="sonarr_delete_queue", arguments={"id": 42}).
Endpoint-level naming (sonarr_<verb>_<resource>) is preserved as the
operation value, so the full endpoint list is still discoverable from each
group tool's description at runtime.
Development
make help # list all commandsCommand | Does |
|
|
| Offline tests - one per endpoint, mocked HTTP |
| Tests against the live instance (needs |
| Build wheel + sdist into |
| Bump the version in |
| Remove build artifacts |
The release workflow (.github/workflows/release.yml) builds and publishes to
Releases whenever a v*
tag is pushed - so the usual flow is make bump-patch, commit, then tag and
push.
The offline suite covers every endpoint (mocked HTTP). The integration suite
exercises GET endpoints against your live instance; POST/PUT/DELETE only run
when SONARR_WRITE_TESTS=1, as a safe create→update→delete cycle against a
scratch tag that is cleaned up afterwards.
Available Tools
15 toolssonarr_calendarARead-only
sonarr calendar operations on Sonarr. Pass operation and an arguments dict matching that operation's parameters.
sonarr_get_calendar(id) — Fetch a single upcoming episode calendar by id.
sonarr_list_calendar(start='', end='', unmonitored=False, include_series=False, include_episode_file=False, include_episode_images=False, tags='') — List upcoming episode calendar. Query params: start, end, tags.
Inputs: operation (required), arguments. Returns: result
sonarr_configC
sonarr config operations on Sonarr. Pass operation and an arguments dict matching that operation's parameters.
sonarr_get_config_downloadclient() — List download client config.
sonarr_get_config_downloadclient_by_id(id) — Fetch a single download client config by id.
sonarr_get_config_host() — List host config.
sonarr_get_config_host_by_id(id) — Fetch a single host config by id.
sonarr_get_config_importlist() — List import list config.
sonarr_get_config_importlist_by_id(id) — Fetch a single import list config by id.
sonarr_get_config_indexer() — List indexer config.
sonarr_get_config_indexer_by_id(id) — Fetch a single indexer config by id.
sonarr_get_config_mediamanagement() — List media management config.
sonarr_get_config_mediamanagement_by_id(id) — Fetch a single media management config by id.
sonarr_get_config_naming() — List naming.
sonarr_get_config_naming_by_id(id) — Fetch a single naming by id.
sonarr_get_config_ui() — List UI config.
sonarr_get_config_ui_by_id(id) — Fetch a single UI config by id.
sonarr_get_localization(id) — Fetch a single localization strings by id.
sonarr_get_localization_language() — List localization languages.
sonarr_list_config_naming_examples(rename_episodes=None, replace_illegal_characters=None, colon_replacement_format=None, custom_colon_replacement_format='', multi_episode_style=None, standard_episode_format='', daily_episode_format='', anime_episode_format='', series_folder_format='', season_folder_format='', specials_folder_format='', id=None, resource_name='') — List naming examples. Query params: custom_colon_replacement_format, standard_episode_format, daily_episode_format, anime_episode_format, series_folder_format, season_folder_format, specials_folder_format, resource_name.
sonarr_list_localization() — List localization strings.
sonarr_list_update() — List available updates.
sonarr_update_config_downloadclient(id, body={}) — Update download client config. WRITE: this modifies your Sonarr instance.
sonarr_update_config_host(id, body={}) — Update host config. WRITE: this modifies your Sonarr instance.
sonarr_update_config_importlist(id, body={}) — Update import list config. WRITE: this modifies your Sonarr instance.
sonarr_update_config_indexer(id, body={}) — Update indexer config. WRITE: this modifies your Sonarr instance.
sonarr_update_config_mediamanagement(id, body={}) — Update media management config. WRITE: this modifies your Sonarr instance.
sonarr_update_config_naming(id, body={}) — Update naming. WRITE: this modifies your Sonarr instance.
sonarr_update_config_ui(id, body={}) — Update UI config. WRITE: this modifies your Sonarr instance.
Inputs: operation (required), arguments. Returns: result
sonarr_download_clientsA
sonarr download clients operations on Sonarr. Pass operation and an arguments dict matching that operation's parameters.
sonarr_create_downloadclient(force_save=False, body={}) — Create download clients. WRITE: this modifies your Sonarr instance.
sonarr_create_downloadclient_action(name, body={}) — Create downloadclient action. WRITE: this modifies your Sonarr instance.
sonarr_create_downloadclient_test(force_test=False, body={}) — Create downloadclient test. WRITE: this modifies your Sonarr instance.
sonarr_create_downloadclient_testall() — Create downloadclient testall. WRITE: this modifies your Sonarr instance.
sonarr_create_remotepathmapping(body={}) — Create remote path mappings. WRITE: this modifies your Sonarr instance.
sonarr_delete_downloadclient(id) — Delete download clients. DESTRUCTIVE: this deletes data.
sonarr_delete_downloadclient_bulk(body={}) — Delete downloadclient bulk. DESTRUCTIVE: this deletes data.
sonarr_delete_remotepathmapping(id) — Delete remote path mappings. DESTRUCTIVE: this deletes data.
sonarr_get_downloadclient(id) — Fetch a single download clients by id.
sonarr_get_remotepathmapping(id) — Fetch a single remote path mappings by id.
sonarr_list_downloadclient() — List download clients.
sonarr_list_downloadclient_schema() — Return the download clients schema (available fields/options).
sonarr_list_remotepathmapping() — List remote path mappings.
sonarr_update_downloadclient(id, force_save=False, body={}) — Update download clients. WRITE: this modifies your Sonarr instance.
sonarr_update_downloadclient_bulk(body={}) — Update downloadclient bulk. WRITE: this modifies your Sonarr instance.
sonarr_update_remotepathmapping(id, body={}) — Update remote path mappings. WRITE: this modifies your Sonarr instance.
Inputs: operation (required), arguments. Returns: result
sonarr_history_blocklistA
sonarr history blocklist operations on Sonarr. Pass operation and an arguments dict matching that operation's parameters.
sonarr_bulk_delete_blocklist(body={}) — Delete blocklist bulk. DESTRUCTIVE: this deletes data.
sonarr_delete_blocklist(id) — Delete blocklisted releases. DESTRUCTIVE: this deletes data.
sonarr_list_blocklist(page=1, page_size=10, sort_key='', sort_direction='', series_ids=None, protocols=None) — List blocklisted releases. Query params: sort_key, sort_direction.
sonarr_list_history(page=1, page_size=10, sort_key='', sort_direction='', include_series=None, include_episode=None, event_type=None, episode_id=None, download_id='', series_ids=None, languages=None, quality=None) — List download/import history. Query params: sort_key, sort_direction, download_id.
sonarr_list_history_series(series_id=None, season_number=None, event_type='', include_series=False, include_episode=False) — List series history. Query params: event_type.
sonarr_list_history_since(date='', event_type='', include_series=False, include_episode=False) — List history since a date. Query params: date, event_type.
sonarr_mark_history_item_failed(id) — Mark a history item as failed (blocklists the release by default). WRITE: this modifies your Sonarr instance.
Inputs: operation (required), arguments. Returns: result
sonarr_import_listsA
sonarr import lists operations on Sonarr. Pass operation and an arguments dict matching that operation's parameters.
sonarr_create_importlist(force_save=False, body={}) — Create import lists. WRITE: this modifies your Sonarr instance.
sonarr_create_importlist_action(name, body={}) — Create importlist action. WRITE: this modifies your Sonarr instance.
sonarr_create_importlist_test(force_test=False, body={}) — Create importlist test. WRITE: this modifies your Sonarr instance.
sonarr_create_importlist_testall() — Create importlist testall. WRITE: this modifies your Sonarr instance.
sonarr_create_importlistexclusion(body={}) — Create import list exclusions. WRITE: this modifies your Sonarr instance.
sonarr_delete_importlist(id) — Delete import lists. DESTRUCTIVE: this deletes data.
sonarr_delete_importlist_bulk(body={}) — Delete importlist bulk. DESTRUCTIVE: this deletes data.
sonarr_delete_importlistexclusion(id) — Delete import list exclusions. DESTRUCTIVE: this deletes data.
sonarr_delete_importlistexclusion_bulk(body={}) — Delete importlistexclusion bulk. DESTRUCTIVE: this deletes data.
sonarr_get_importlist(id) — Fetch a single import lists by id.
sonarr_get_importlistexclusion(id) — Fetch a single import list exclusions by id.
sonarr_list_importlist() — List import lists.
sonarr_list_importlist_schema() — Return the import lists schema (available fields/options).
sonarr_list_importlistexclusion() — List import list exclusions.
sonarr_list_importlistexclusion_paged(page=1, page_size=10, sort_key='', sort_direction='') — List importlistexclusion paged. Query params: sort_key, sort_direction.
sonarr_update_importlist(id, force_save=False, body={}) — Update import lists. WRITE: this modifies your Sonarr instance.
sonarr_update_importlist_bulk(body={}) — Update importlist bulk. WRITE: this modifies your Sonarr instance.
sonarr_update_importlistexclusion(id, body={}) — Update import list exclusions. WRITE: this modifies your Sonarr instance.
Inputs: operation (required), arguments. Returns: result
sonarr_indexersA
sonarr indexers operations on Sonarr. Pass operation and an arguments dict matching that operation's parameters.
sonarr_create_indexer(force_save=False, body={}) — Create indexers. WRITE: this modifies your Sonarr instance.
sonarr_create_indexer_action(name, body={}) — Create indexer action. WRITE: this modifies your Sonarr instance.
sonarr_create_indexer_test(force_test=False, body={}) — Create indexer test. WRITE: this modifies your Sonarr instance.
sonarr_create_indexer_testall() — Create indexer testall. WRITE: this modifies your Sonarr instance.
sonarr_delete_indexer(id) — Delete indexers. DESTRUCTIVE: this deletes data.
sonarr_delete_indexer_bulk(body={}) — Delete indexer bulk. DESTRUCTIVE: this deletes data.
sonarr_get_indexer(id) — Fetch a single indexers by id.
sonarr_list_indexer() — List indexers.
sonarr_list_indexer_schema() — Return the indexers schema (available fields/options).
sonarr_update_indexer(id, force_save=False, body={}) — Update indexers. WRITE: this modifies your Sonarr instance.
sonarr_update_indexer_bulk(body={}) — Update indexer bulk. WRITE: this modifies your Sonarr instance.
Inputs: operation (required), arguments. Returns: result
sonarr_media_libraryA
sonarr media library operations on Sonarr. Pass operation and an arguments dict matching that operation's parameters.
sonarr_add_series(body={}) — Add a series to Sonarr (body is a SeriesResource). WRITE: this modifies your Sonarr instance.
sonarr_bulk_delete_episodefile(body={}) — Delete episodefile bulk. DESTRUCTIVE: this deletes data.
sonarr_bulk_delete_series(body={}) — Delete series editor. DESTRUCTIVE: this deletes data.
sonarr_bulk_edit_episodefiles(body={}) — Update episodefile editor. WRITE: this modifies your Sonarr instance.
sonarr_bulk_update_episodefile(body=[]) — Update episodefile bulk. WRITE: this modifies your Sonarr instance.
sonarr_bulk_update_series(body={}) — Update series editor. WRITE: this modifies your Sonarr instance.
sonarr_commit_manual_import(body=[]) — Commit a manual import (body is a list of manual import items). WRITE: this modifies your Sonarr instance.
sonarr_delete_episodefile(id) — Delete episode files. DESTRUCTIVE: this deletes data.
sonarr_delete_series(id, delete_files=False, add_import_list_exclusion=False) — Delete series. DESTRUCTIVE: this deletes data.
sonarr_get_episode(id) — Fetch a single episodes by id.
sonarr_get_episodefile(id) — Fetch a single episode files by id.
sonarr_get_parse(title='', path='') — List title parsing results. Query params: title, path.
sonarr_get_rename(series_id=None, season_number=None) — List rename.
sonarr_get_series(id, include_season_images=False) — Fetch a single series by id.
sonarr_get_series_folder(id) — Fetch a single series by id.
sonarr_import_series(body=[]) — Import series (body is a list of series resources). WRITE: this modifies your Sonarr instance.
sonarr_list_episode(series_id=None, season_number=None, episode_ids=None, episode_file_id=None, include_series=False, include_episode_file=False, include_images=False) — List episodes.
sonarr_list_episodefile(series_id=None, episode_file_ids=None) — List episode files.
sonarr_list_manualimport(folder='', download_id='', series_id=None, season_number=None, filter_existing_files=True) — List manual import candidates. Query params: folder, download_id.
sonarr_list_series(tvdb_id=None, include_season_images=False) — List series.
sonarr_lookup_series(term='') — Search for a series by title (term), returning metadata candidates from TVDB.
sonarr_monitor_episode(include_images=False, body={}) — Monitor or unmonitor episodes (body is an EpisodeResource[] of id/monitored pairs). WRITE: this modifies your Sonarr instance.
sonarr_update_episode(id, body={}) — Update episodes. WRITE: this modifies your Sonarr instance.
sonarr_update_episodefile(id, body={}) — Update episode files. WRITE: this modifies your Sonarr instance.
sonarr_update_season_pass(body={}) — Apply season pass monitoring settings (body is a SeasonPassResource). WRITE: this modifies your Sonarr instance.
sonarr_update_series(id, move_files=False, body={}) — Update series. WRITE: this modifies your Sonarr instance.
Inputs: operation (required), arguments. Returns: result
sonarr_notifications_metadataA
sonarr notifications metadata operations on Sonarr. Pass operation and an arguments dict matching that operation's parameters.
sonarr_create_metadata(force_save=False, body={}) — Create metadata providers. WRITE: this modifies your Sonarr instance.
sonarr_create_metadata_action(name, body={}) — Create metadata action. WRITE: this modifies your Sonarr instance.
sonarr_create_metadata_test(force_test=False, body={}) — Create metadata test. WRITE: this modifies your Sonarr instance.
sonarr_create_metadata_testall() — Create metadata testall. WRITE: this modifies your Sonarr instance.
sonarr_create_notification(force_save=False, body={}) — Create notification providers. WRITE: this modifies your Sonarr instance.
sonarr_create_notification_action(name, body={}) — Create notification action. WRITE: this modifies your Sonarr instance.
sonarr_create_notification_test(force_test=False, body={}) — Create notification test. WRITE: this modifies your Sonarr instance.
sonarr_create_notification_testall() — Create notification testall. WRITE: this modifies your Sonarr instance.
sonarr_delete_metadata(id) — Delete metadata providers. DESTRUCTIVE: this deletes data.
sonarr_delete_notification(id) — Delete notification providers. DESTRUCTIVE: this deletes data.
sonarr_get_metadata(id) — Fetch a single metadata providers by id.
sonarr_get_notification(id) — Fetch a single notification providers by id.
sonarr_list_metadata() — List metadata providers.
sonarr_list_metadata_schema() — Return the metadata providers schema (available fields/options).
sonarr_list_notification() — List notification providers.
sonarr_list_notification_schema() — Return the notification providers schema (available fields/options).
sonarr_update_metadata(id, force_save=False, body={}) — Update metadata providers. WRITE: this modifies your Sonarr instance.
sonarr_update_notification(id, force_save=False, body={}) — Update notification providers. WRITE: this modifies your Sonarr instance.
Inputs: operation (required), arguments. Returns: result
sonarr_profiles_formatsA
sonarr profiles formats operations on Sonarr. Pass operation and an arguments dict matching that operation's parameters.
sonarr_bulk_delete_customformat(body={}) — Delete customformat bulk. DESTRUCTIVE: this deletes data.
sonarr_bulk_update_customformat(body={}) — Update customformat bulk. WRITE: this modifies your Sonarr instance.
sonarr_create_autotagging(body={}) — Create auto tagging rules. WRITE: this modifies your Sonarr instance.
sonarr_create_customfilter(body={}) — Create custom filters. WRITE: this modifies your Sonarr instance.
sonarr_create_customformat(body={}) — Create custom formats. WRITE: this modifies your Sonarr instance.
sonarr_create_delayprofile(body={}) — Create delay profiles. WRITE: this modifies your Sonarr instance.
sonarr_create_languageprofile(body={}) — Create language profiles. WRITE: this modifies your Sonarr instance.
sonarr_create_qualityprofile(body={}) — Create quality profiles. WRITE: this modifies your Sonarr instance.
sonarr_create_releaseprofile(body={}) — Create release profiles. WRITE: this modifies your Sonarr instance.
sonarr_delete_autotagging(id) — Delete auto tagging rules. DESTRUCTIVE: this deletes data.
sonarr_delete_customfilter(id) — Delete custom filters. DESTRUCTIVE: this deletes data.
sonarr_delete_customformat(id) — Delete custom formats. DESTRUCTIVE: this deletes data.
sonarr_delete_delayprofile(id) — Delete delay profiles. DESTRUCTIVE: this deletes data.
sonarr_delete_languageprofile(id) — Delete language profiles. DESTRUCTIVE: this deletes data.
sonarr_delete_qualityprofile(id) — Delete quality profiles. DESTRUCTIVE: this deletes data.
sonarr_delete_releaseprofile(id) — Delete release profiles. DESTRUCTIVE: this deletes data.
sonarr_get_autotagging(id) — Fetch a single auto tagging rules by id.
sonarr_get_customfilter(id) — Fetch a single custom filters by id.
sonarr_get_customformat(id) — Fetch a single custom formats by id.
sonarr_get_delayprofile(id) — Fetch a single delay profiles by id.
sonarr_get_language(id) — Fetch a single languages by id.
sonarr_get_languageprofile(id) — Fetch a single language profiles by id.
sonarr_get_qualitydefinition(id) — Fetch a single quality definitions by id.
sonarr_get_qualitydefinition_limits() — List qualitydefinition limits.
sonarr_get_qualityprofile(id) — Fetch a single quality profiles by id.
sonarr_get_releaseprofile(id) — Fetch a single release profiles by id.
sonarr_list_autotagging() — List auto tagging rules.
sonarr_list_autotagging_schema() — Return the auto tagging rules schema (available fields/options).
sonarr_list_customfilter() — List custom filters.
sonarr_list_customformat() — List custom formats.
sonarr_list_customformat_schema() — Return the custom formats schema (available fields/options).
sonarr_list_delayprofile() — List delay profiles.
sonarr_list_language() — List languages.
sonarr_list_languageprofile() — List language profiles.
sonarr_list_languageprofile_schema() — Return the language profiles schema (available fields/options).
sonarr_list_qualitydefinition() — List quality definitions.
sonarr_list_qualityprofile() — List quality profiles.
sonarr_list_qualityprofile_schema() — Return the quality profiles schema (available fields/options).
sonarr_list_releaseprofile() — List release profiles.
sonarr_reorder_delayprofile(id, after=None) — Update delayprofile reorder. WRITE: this modifies your Sonarr instance.
sonarr_update_autotagging(id, body={}) — Update auto tagging rules. WRITE: this modifies your Sonarr instance.
sonarr_update_customfilter(id, body={}) — Update custom filters. WRITE: this modifies your Sonarr instance.
sonarr_update_customformat(id, body={}) — Update custom formats. WRITE: this modifies your Sonarr instance.
sonarr_update_delayprofile(id, body={}) — Update delay profiles. WRITE: this modifies your Sonarr instance.
sonarr_update_languageprofile(id, body={}) — Update language profiles. WRITE: this modifies your Sonarr instance.
sonarr_update_quality_definitions(body=[]) — Update qualitydefinition update. WRITE: this modifies your Sonarr instance.
sonarr_update_qualitydefinition(id, body={}) — Update quality definitions. WRITE: this modifies your Sonarr instance.
sonarr_update_qualityprofile(id, body={}) — Update quality profiles. WRITE: this modifies your Sonarr instance.
sonarr_update_releaseprofile(id, body={}) — Update release profiles. WRITE: this modifies your Sonarr instance.
Inputs: operation (required), arguments. Returns: result
sonarr_queueA
sonarr queue operations on Sonarr. Pass operation and an arguments dict matching that operation's parameters.
sonarr_bulk_delete_queue(remove_from_client=True, blocklist=False, skip_redownload=False, change_category=False, body={}) — Delete queue bulk. DESTRUCTIVE: this deletes data.
sonarr_delete_queue(id, remove_from_client=True, blocklist=False, skip_redownload=False, change_category=False) — Delete download client queue items. DESTRUCTIVE: this deletes data.
sonarr_get_queue_details(series_id=None, episode_ids=None, include_series=False, include_episode=False) — List queue details.
sonarr_get_queue_status() — List queue status.
sonarr_grab_queue_bulk(body={}) — Grab multiple queued items now (body is a list of ids). WRITE: this modifies your Sonarr instance.
sonarr_grab_queue_item(id) — Grab the queued item now (forces the download client to fetch it). WRITE: this modifies your Sonarr instance.
sonarr_list_queue(page=1, page_size=10, sort_key='', sort_direction='', include_unknown_series_items=False, include_series=False, include_episode=False, series_ids=None, protocol='', languages=None, quality=None, status=None) — List download client queue items. Query params: sort_key, sort_direction, protocol.
Inputs: operation (required), arguments. Returns: result
sonarr_release_searchA
sonarr release search operations on Sonarr. Pass operation and an arguments dict matching that operation's parameters.
sonarr_get_indexerflag() — List indexer flags.
sonarr_list_release(series_id=None, episode_id=None, season_number=None) — List release.
sonarr_push_release(body={}) — Push a release to the download client. WRITE: this modifies your Sonarr instance.
sonarr_search_releases(body={}) — Search for releases for a series/episode (body carries seriesId/episodeId and other options). WRITE: this modifies your Sonarr instance.
Inputs: operation (required), arguments. Returns: result
sonarr_storageC
sonarr storage operations on Sonarr. Pass operation and an arguments dict matching that operation's parameters.
sonarr_create_rootfolder(body={}) — Create root folders. WRITE: this modifies your Sonarr instance.
sonarr_delete_rootfolder(id) — Delete root folders. DESTRUCTIVE: this deletes data.
sonarr_get_diskspace() — List diskspace.
sonarr_get_rootfolder(id) — Fetch a single root folders by id.
sonarr_list_filesystem(path='', include_files=False, allow_folders_without_trailing_slashes=False) — List server filesystem. Query params: path.
sonarr_list_filesystem_mediafiles(path='') — List media files. Query params: path.
sonarr_list_filesystem_type(path='') — List filesystem types. Query params: path.
sonarr_list_rootfolder() — List root folders.
Inputs: operation (required), arguments. Returns: result
sonarr_system_commandsA
sonarr system commands operations on Sonarr. Pass operation and an arguments dict matching that operation's parameters.
sonarr_delete_command(id) — Delete queued/running commands. DESTRUCTIVE: this deletes data.
sonarr_delete_system_backup(id) — Delete system backups. DESTRUCTIVE: this deletes data.
sonarr_get_command(id) — Fetch a single queued/running commands by id.
sonarr_get_health() — List health.
sonarr_get_system_routes() — List registered API routes.
sonarr_get_system_routes_duplicate() — List duplicate registered API routes.
sonarr_get_system_status() — List system status.
sonarr_get_system_task() — List scheduled tasks.
sonarr_get_system_task_by_id(id) — Fetch a single scheduled tasks by id.
sonarr_list_command() — List queued/running commands.
sonarr_list_log(page=1, page_size=10, sort_key='', sort_direction='', level='') — List server logs. Query params: sort_key, sort_direction, level.
sonarr_list_log_file() — List log files.
sonarr_list_log_file_update() — List update log files.
sonarr_list_system_backup() — List system backups.
sonarr_ping() — Ping the server to verify it is reachable and authenticated.
sonarr_restart_sonarr() — Restart the Sonarr service. WRITE: this modifies your Sonarr instance.
sonarr_restore_backup(id) — Restore Sonarr from a backup. WRITE: this modifies your Sonarr instance.
sonarr_restore_backup_upload() — Restore Sonarr from an uploaded backup file (multipart upload - limited support). WRITE: this modifies your Sonarr instance.
sonarr_run_command(body={}) — Run a Sonarr command (body is a CommandResource with a
name, e.g. RefreshSeries, SeriesSearch, DownloadedEpisodesScan). WRITE: this modifies your Sonarr instance.sonarr_shutdown_sonarr() — Shut down the Sonarr service. WRITE: this modifies your Sonarr instance.
Inputs: operation (required), arguments. Returns: result
sonarr_tagsA
sonarr tags operations on Sonarr. Pass operation and an arguments dict matching that operation's parameters.
sonarr_create_tag(body={}) — Create tags. WRITE: this modifies your Sonarr instance.
sonarr_delete_tag(id) — Delete tags. DESTRUCTIVE: this deletes data.
sonarr_get_tag(id) — Fetch a single tags by id.
sonarr_get_tag_detail(id) — Fetch a single tag details by id.
sonarr_list_tag() — List tags.
sonarr_list_tag_detail() — List tag details.
sonarr_update_tag(id, body={}) — Update tags. WRITE: this modifies your Sonarr instance.
Inputs: operation (required), arguments. Returns: result
sonarr_wantedARead-only
sonarr wanted operations on Sonarr. Pass operation and an arguments dict matching that operation's parameters.
sonarr_get_wanted_cutoff(id) — Fetch a single cutoff by id.
sonarr_get_wanted_missing(id) — Fetch a single missing by id.
sonarr_list_wanted_cutoff(page=1, page_size=10, sort_key='', sort_direction='', include_series=False, include_episode_file=False, include_images=False, monitored=True) — List cutoff. Query params: sort_key, sort_direction.
sonarr_list_wanted_missing(page=1, page_size=10, sort_key='', sort_direction='', include_series=False, include_images=False, monitored=True) — List missing. Query params: sort_key, sort_direction.
Inputs: operation (required), arguments. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
Multiple generic dispatcher tools (like sonarr_profiles_formats, sonarr_config) overlap with the many specific CRUD tools, causing ambiguous selection. Additionally, singular/plural inconsistencies such as sonarr_update_qualitydefinition vs sonarr_update_quality_definitions blur the boundaries further.
The convention is mostly sonarr_<resource>_<action> but verbs vary widely (list, get, create, update, delete, bulk_update, mark, grab, reorder, push, search, commit, restart, shutdown, ping) and resource names mix singular and plural forms (e.g., qualitydefinition vs quality_definitions). Generic tools like sonarr_config lack any verb entirely.
The server lists well over 100 individual tools, far exceeding the typical 3-15 tool sweet spot and even the 50+ threshold for an extreme mismatch. This enormous surface makes it impractical for an agent to navigate effectively.
The tool set is remarkably comprehensive, covering essentially every Sonarr API endpoint: series, episodes, files, quality profiles, indexers, download clients, import lists, notifications, metadata, queue, history, blocklist, tags, calendar, and system commands. It supports full CRUD and additional operations for most resources, leaving no obvious dead ends.
Maintenance
Related MCP Connectors
Every Canopy public API operation as a tool, run as you after a browser sign-in or on an API key.
Read-only search of 2,189 AI agent tools (MCP servers, x402 APIs) with daily automated trust scores.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables AI assistants to manage TV series collections through Sonarr's API using natural language interactions. Supports searching, adding, updating, and deleting TV series with detailed control over quality profiles, season monitoring, and episode downloads.9-
- AlicenseBqualityCmaintenanceMCP server exposing Seerr's full v1 REST API as tools, enabling LLMs to search and discover media, manage requests and approvals, users, issues, watchlists, and integration settings for Plex/Jellyfin/Emby and Sonarr/Radarr, including reads and writes with destructive operations flagged.151MIT
- AlicenseBqualityCmaintenanceMCP server that exposes the Bookshelf (Readarr fork) v1 REST API as tools, allowing an LLM to read and manage authors, books, book files, editions, series, download queue, history, indexers, import lists, custom formats, tags, commands, and system status, with full read/write access and destructive tools flagged.15MIT
- AlicenseBqualityBmaintenanceConnects AI agents to Sonarr, exposing 136 tools for managing a TV library — adding series, chasing missing episodes, fixing the download queue, tuning quality profiles, and diagnosing health issues.1368 npmMIT