sonarr-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SONARR_URL | No | Base URL of your Sonarr instance, e.g. http://192.168.1.10:8989. http:// is assumed if no scheme is given. | |
| SONARR_SERVER | No | Accepted as an alias for SONARR_URL. | |
| SONARR_API_KEY | Yes | API key from Settings > General > Security. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_seriesA | List all series in the Sonarr library as compact summaries (id, title, year, status, monitored, quality profile, path, statistics). Use get_series for the full object with seasons, images and alternate titles. |
| get_seriesA | Get the full series object for one series, including seasons with their per-season statistics and monitored flags. |
| lookup_seriesA | Search TVDB for series to add, by title or by an id term such as 'tvdb:121361' or 'imdb:tt0944947'. Returns candidates with tvdbId, title, year and overview — pass the tvdbId to add_series. |
| add_seriesA | Add a new series to the library by TVDB id. Resolves the series metadata via lookup, then posts it with the given root folder and quality profile. Use list_root_folders and list_quality_profiles first to get valid ids. |
| update_seriesA | Update settings on an existing series. Fetches the current series, merges the given fields and puts it back — only the fields you pass are changed. |
| delete_seriesB | Remove a series from the library. Optionally delete its files from disk and add an import list exclusion so lists do not re-add it. |
| edit_series_bulkB | Apply the same change to many series at once (the series editor): monitoring, quality profile, series type, season folders, root folder or tags. |
| delete_series_bulkA | Remove many series from the library at once, optionally deleting their files and adding import list exclusions. |
| get_series_folderA | Get the folder path Sonarr would use for a series, given the current naming configuration. |
| set_season_monitoredA | Monitor or unmonitor whole seasons of a series. Pass season numbers (0 is specials); omit them to apply to every season. |
| list_episodesA | List episodes as compact summaries (id, season/episode number, title, air date, hasFile, monitored). Filter by series, season or episode file. Use get_episode for the full object. |
| get_episodeA | Get the full episode object, including the overview and the linked episode file with its quality and media info. |
| set_episodes_monitoredA | Monitor or unmonitor individual episodes. Use set_season_monitored for whole seasons. |
| list_episode_filesA | List episode files on disk for a series, with path, size, quality, languages and release group. |
| get_episode_fileB | Get a single episode file, including its full media info. |
| delete_episode_fileA | Delete one episode file from disk. The episode stays in the library and becomes missing. |
| delete_episode_filesA | Delete several episode files from disk in one call. |
| update_episode_filesA | Change the recorded quality, languages, release group or scene name of existing episode files (the file editor). Does not touch the files on disk. |
| get_calendarA | List episodes airing in a date range — what aired recently and what is coming up. Defaults to today and tomorrow on the Sonarr side. |
| get_queueB | List the download queue — everything Sonarr is currently downloading or waiting to import, with progress, status and any error messages. |
| get_queue_detailsA | Get the full, unpaged queue with per-episode detail. Useful for finding the queue item id of a specific episode. |
| get_queue_statusA | Get queue counts by state — total, errors, warnings and how many items need manual interaction. |
| remove_queue_itemA | Remove one item from the queue, optionally also removing it from the download client and blocklisting the release so it is not grabbed again. |
| remove_queue_itemsA | Remove several queue items at once, with the same options as remove_queue_item. |
| grab_queue_itemA | Force Sonarr to import a queue item that is stuck pending or waiting on manual interaction. |
| grab_queue_itemsA | Force import of several stuck queue items at once. |
| get_historyB | Page through the grab and import history — what was grabbed, imported, failed, deleted or renamed, and from which indexer. |
| get_history_sinceA | Get every history record since a date, unpaged. Useful for 'what happened since yesterday' style questions. |
| get_series_historyB | Get the full history for one series, optionally narrowed to a single season. |
| mark_history_item_failedA | Mark a grabbed history item as failed. Sonarr blocklists the release and searches for a replacement. |
| get_missing_episodesA | Page through monitored episodes that have already aired but have no file — the wanted/missing list. |
| get_cutoff_unmet_episodesA | Page through episodes that have a file but have not reached their quality profile cutoff — candidates for an upgrade. |
| get_blocklistA | Page through blocklisted releases — releases Sonarr has been told never to grab again, with the reason they were blocked. |
| remove_blocklist_itemA | Remove one release from the blocklist so Sonarr may grab it again. |
| remove_blocklist_itemsA | Remove several releases from the blocklist at once. |
| list_commandsA | List commands Sonarr is currently running or has recently run, with their status and duration. |
| get_commandA | Get the status of a single command by id — poll this after starting a search or refresh. |
| run_commandA | Queue any Sonarr command by name. Known names: RefreshSeries, RescanSeries, EpisodeSearch, SeasonSearch, SeriesSearch, MissingEpisodeSearch, CutoffUnmetEpisodeSearch, DownloadedEpisodesScan, RenameFiles, RenameSeries, RssSync, RefreshMonitoredDownloads, ImportListSync, ManualImport, ClearBlocklist, CheckHealth, Housekeeping, Backup, ApplicationUpdate. Prefer the dedicated tools (refresh_series, search_series, ...) where one exists. |
| cancel_commandA | Cancel a queued or running command. |
| refresh_seriesA | Refresh metadata from TVDB for one series, or for the whole library when no id is given. |
| rescan_seriesA | Rescan the folder of one series (or all series) to pick up files added or removed outside Sonarr. |
| search_seriesB | Start an automatic search for all monitored missing episodes of a series. |
| search_seasonC | Start an automatic search for one season of a series. |
| search_episodesA | Start an automatic search for specific episodes. Use search_releases first if you want to pick a release by hand. |
| list_scheduled_tasksA | List Sonarr's scheduled maintenance tasks with their interval and last and next execution times. |
| get_scheduled_taskA | Get a single scheduled task by id. |
| search_releasesA | Run an interactive indexer search and return the releases found, with quality, size, seeders, custom format score and any rejection reasons. Pass the guid and indexerId of the one you want to grab_release. This can take a while — indexers are queried live. |
| grab_releaseA | Send a release from search_releases to the download client. |
| get_manual_import_candidatesA | List files in a folder or a stuck download with the series and episodes Sonarr would map them to, plus any rejection reasons. Use this to diagnose imports that need manual interaction. |
| get_rename_previewA | Preview which existing files would be renamed under the current naming configuration, showing the old and new paths. Run the RenameFiles command to apply. |
| parse_release_titleA | Parse a release title or file path the way Sonarr does, showing the series, season and episodes it maps to and the detected quality. |
| list_quality_profilesB | List quality profiles with their id, name, cutoff and the qualities each one allows. Series are assigned a profile by id. |
| get_quality_profileA | Get one quality profile in full, including every quality item and custom format score. |
| get_quality_profile_schemaA | Get a blank quality profile with every quality Sonarr knows about — the template for create_quality_profile. |
| create_quality_profileA | Create a quality profile. Start from get_quality_profile_schema, set name, cutoff and which items are allowed. |
| update_quality_profileA | Update a quality profile. Fetch it with get_quality_profile, change what you need and send the whole object back. |
| delete_quality_profileA | Delete a quality profile. It must not be in use by any series. |
| list_quality_definitionsA | List quality definitions — the size limits (min, max, preferred MB per minute) Sonarr applies to each quality. |
| update_quality_definitionsA | Update the size limits of one or more quality definitions. Send the full definition objects from list_quality_definitions with minSize, maxSize or preferredSize changed. |
| list_custom_formatsA | List custom formats with their specifications. Custom format scores in a quality profile decide which releases are preferred. |
| get_custom_formatB | Get one custom format with its full specification list. |
| get_custom_format_schemaA | List the specification types a custom format can use (release title regex, size, language, quality modifier, ...) with their fields. |
| create_custom_formatA | Create a custom format. Build the specifications from get_custom_format_schema. |
| update_custom_formatA | Update a custom format. Fetch it first and send the whole object back. |
| delete_custom_formatB | Delete a custom format. |
| list_release_profilesA | List release profiles — the required, ignored and preferred term rules applied to release titles. |
| create_release_profileB | Create a release profile, e.g. { name, enabled: true, required: [], ignored: ['x265'], indexerId: 0, tags: [] }. |
| update_release_profileA | Update a release profile. Fetch it from list_release_profiles and send the whole object back. |
| delete_release_profileB | Delete a release profile. |
| list_delay_profilesA | List delay profiles — how long Sonarr waits for a better release before grabbing, per protocol and tag. |
| list_languagesA | List the languages Sonarr knows, with the ids used in language profiles and episode file edits. |
| list_indexersA | List the configured indexers. Secret field values are masked by Sonarr; the 'fields' array is omitted here — use get_indexer for it. |
| get_indexerA | Get one indexer including its full 'fields' array (the implementation-specific settings). |
| get_indexer_schemaA | List every indexer implementation Sonarr supports, with the fields each one takes. Use this as the template for create_indexer. |
| create_indexerA | Add a new indexer. Build the body from get_indexer_schema: it needs name, implementation, configContract and the fields array, plus enableRss, enableAutomaticSearch, enableInteractiveSearch, priority, protocol. |
| update_indexerA | Update an existing indexer. Fetch it with get_indexer first, change what you need and send the whole object back. |
| delete_indexerB | Delete a indexer. |
| test_indexerA | Test a indexer configuration without saving it. Pass a config object to test a draft, or an id to test an existing one. |
| list_download_clientsA | List the configured download clients. Secret field values are masked by Sonarr; the 'fields' array is omitted here — use get_download_client for it. |
| get_download_clientA | Get one download client including its full 'fields' array (the implementation-specific settings). |
| get_download_client_schemaA | List every download client implementation Sonarr supports, with the fields each one takes. Use this as the template for create_download_client. |
| create_download_clientA | Add a new download client. Build the body from get_download_client_schema: it needs name, implementation, configContract and the fields array, plus enable, protocol, priority, removeCompletedDownloads, removeFailedDownloads. |
| update_download_clientA | Update an existing download client. Fetch it with get_download_client first, change what you need and send the whole object back. |
| delete_download_clientC | Delete a download client. |
| test_download_clientA | Test a download client configuration without saving it. Pass a config object to test a draft, or an id to test an existing one. |
| list_import_listsA | List the configured import lists. Secret field values are masked by Sonarr; the 'fields' array is omitted here — use get_import_list for it. |
| get_import_listA | Get one import list including its full 'fields' array (the implementation-specific settings). |
| get_import_list_schemaA | List every import list implementation Sonarr supports, with the fields each one takes. Use this as the template for create_import_list. |
| create_import_listA | Add a new import list. Build the body from get_import_list_schema: it needs name, implementation, configContract and the fields array, plus enableAutomaticAdd, shouldMonitor, rootFolderPath, qualityProfileId, seriesType. |
| update_import_listA | Update an existing import list. Fetch it with get_import_list first, change what you need and send the whole object back. |
| delete_import_listB | Delete a import list. |
| test_import_listA | Test a import list configuration without saving it. Pass a config object to test a draft, or an id to test an existing one. |
| list_notificationsA | List the configured notification connections. Secret field values are masked by Sonarr; the 'fields' array is omitted here — use get_notification for it. |
| get_notificationA | Get one notification connection including its full 'fields' array (the implementation-specific settings). |
| get_notification_schemaA | List every notification connection implementation Sonarr supports, with the fields each one takes. Use this as the template for create_notification. |
| create_notificationA | Add a new notification connection. Build the body from get_notification_schema: it needs name, implementation, configContract and the fields array, plus onGrab, onDownload, onUpgrade, onHealthIssue and the other event toggles. |
| update_notificationA | Update an existing notification connection. Fetch it with get_notification first, change what you need and send the whole object back. |
| delete_notificationB | Delete a notification connection. |
| test_notificationA | Test a notification connection configuration without saving it. Pass a config object to test a draft, or an id to test an existing one. |
| list_root_foldersA | List root folders with their free space and any unmapped folders sitting in them. add_series needs one of these paths. |
| get_root_folderA | Get one root folder including the full list of unmapped folders — series folders on disk that are not in the library. |
| add_root_folderA | Add a root folder. The path must exist and be writable by Sonarr. |
| delete_root_folderA | Remove a root folder from Sonarr. Files on disk are not touched. |
| list_tagsA | List tags with their ids and labels. Tags link series to delay profiles, release profiles, indexers and notifications. |
| list_tag_detailsA | List tags together with everything using them — series ids, indexer ids, notification ids and profile ids. |
| create_tagC | Create a tag. |
| update_tagB | Rename a tag. |
| delete_tagA | Delete a tag. It is removed from every series and provider using it. |
| list_import_list_exclusionsA | List series excluded from import lists — series that lists will never re-add. |
| add_import_list_exclusionA | Exclude a series from import lists by TVDB id, so lists stop re-adding it. |
| delete_import_list_exclusionA | Remove an import list exclusion so lists may add the series again. |
| list_remote_path_mappingsA | List remote path mappings — how paths reported by a download client on another host translate to paths Sonarr can read. |
| add_remote_path_mappingA | Add a remote path mapping for a download client host. |
| delete_remote_path_mappingC | Delete a remote path mapping. |
| get_naming_configA | Get the file and folder naming configuration. |
| update_naming_configA | Update the file and folder naming configuration. Fetch it with get_naming_config first, change what you need and send the whole object back. |
| get_media_management_configB | Get the media management (import, file handling, permissions) configuration. |
| update_media_management_configA | Update the media management (import, file handling, permissions) configuration. Fetch it with get_media_management_config first, change what you need and send the whole object back. |
| get_indexer_configA | Get the indexer (RSS interval, retention, availability delay) configuration. |
| update_indexer_configA | Update the indexer (RSS interval, retention, availability delay) configuration. Fetch it with get_indexer_config first, change what you need and send the whole object back. |
| get_download_client_configA | Get the download client (completed and failed download handling) configuration. |
| update_download_client_configA | Update the download client (completed and failed download handling) configuration. Fetch it with get_download_client_config first, change what you need and send the whole object back. |
| get_import_list_configB | Get the import list configuration. |
| update_import_list_configA | Update the import list configuration. Fetch it with get_import_list_config first, change what you need and send the whole object back. |
| get_host_configA | Get the host (port, URL base, proxy, logging) configuration. |
| get_ui_configA | Get the UI (date format, first day of week) configuration. |
| get_naming_examplesA | Preview the filenames a naming format would produce, without saving it. Pass a naming config object to try a draft format. |
| get_system_statusA | Get version, branch, runtime, install source, OS and the paths Sonarr is using. Start here when diagnosing anything. |
| get_healthA | Get the active health check warnings and errors, with the wiki link explaining each one. |
| get_disk_spaceA | Get free and total space for every drive and root folder Sonarr can see. |
| get_updatesA | List available Sonarr updates for the current branch, with changelogs and whether each is installed or installable. |
| list_logsA | Page through Sonarr's log entries, newest first by default. Filter by level to find errors quickly. |
| list_log_filesA | List the log files on disk with their names, sizes and download paths. |
| get_log_fileA | Download the contents of one log file as text. |
| list_backupsA | List the database backups Sonarr has taken, with their type, size and date. Run the Backup command to create a new one. |
| restart_sonarrA | Restart the Sonarr application. It is unreachable for a few seconds afterwards. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/OrellBuehler/sonarr-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server