Skip to main content
Glama

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-*.whl

This 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-mcp

From source

uv sync
cp .env.example .env   # fill in SONARR_URL and SONARR_API_KEY
claude mcp add sonarr \
  --env SONARR_URL=http://your-sonarr-host:8989 \
  --env SONARR_API_KEY=<key> \
  -- uv run --directory /path/to/sonarr-mcp sonarr-mcp

Config

Env var

Required

Default

SONARR_URL

yes

-

SONARR_API_KEY

yes*

none (no X-Api-Key header sent if unset)

* 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

sonarr_profiles_formats

49

reads + writes

sonarr_config

26

reads + writes

sonarr_media_library

26

reads + writes

sonarr_system_commands

20

reads + writes

sonarr_import_lists

18

reads + writes

sonarr_notifications_metadata

18

reads + writes

sonarr_download_clients

16

reads + writes

sonarr_indexers

11

reads + writes

sonarr_storage

8

reads + writes

sonarr_history_blocklist

7

reads + writes

sonarr_queue

7

reads + writes

sonarr_tags

7

reads + writes

sonarr_release_search

4

reads + writes

sonarr_wanted

4

read-only

sonarr_calendar

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 commands

Command

Does

make sync

uv sync

make test

Offline tests - one per endpoint, mocked HTTP

make test-integration

Tests against the live instance (needs SONARR_URL/SONARR_API_KEY)

make build

Build wheel + sdist into dist/

make bump-patch / bump-minor / bump-major

Bump the version in pyproject.toml + uv.lock

make clean

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 tools
sonarr_calendarA
Read-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_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_wantedA
Read-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

    B3.1/5.0

    Scored across 15 tools

    Disambiguation2/5

    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.

    Naming Consistency2/5

    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.

    Tool Count1/5

    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.

    Completeness5/5

    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

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      B
      quality
      D
      maintenance
      Enables 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
      -
    • A
      license
      B
      quality
      C
      maintenance
      MCP 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.
      15
      1
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      MCP 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.
      15
      MIT
    • A
      license
      B
      quality
      B
      maintenance
      Connects 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.
      136
      8 npm
      MIT