Arr MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ARR_TIMEOUT | No | Seconds to wait for an answer. Default 30. | 30 |
| ARR_BAZARR_KEY | No | Bazarr API key | |
| ARR_BAZARR_URL | No | Bazarr base URL, e.g. http://localhost:6767 | |
| ARR_RADARR_KEY | No | Radarr API key | |
| ARR_RADARR_URL | No | Radarr base URL, e.g. http://localhost:7878 | |
| ARR_SONARR_KEY | No | Sonarr API key | |
| ARR_SONARR_URL | No | Sonarr base URL, e.g. http://localhost:8989 | |
| ARR_VERIFY_TLS | No | Set to false to skip TLS verification for an https address with a self-signed certificate. | |
| ARR_JELLYFIN_KEY | No | Jellyfin API key | |
| ARR_JELLYFIN_URL | No | Jellyfin base URL, e.g. http://localhost:8096 | |
| ARR_PROWLARR_KEY | No | Prowlarr API key | |
| ARR_PROWLARR_URL | No | Prowlarr base URL, e.g. http://localhost:9696 | |
| ARR_OVERSEERR_KEY | No | Overseerr API key | |
| ARR_OVERSEERR_URL | No | Overseerr base URL, e.g. http://localhost:5055 | |
| ARR_QBITTORRENT_URL | No | qBittorrent web UI URL | |
| ARR_QBITTORRENT_PASS | No | qBittorrent web UI password | |
| ARR_QBITTORRENT_USER | No | qBittorrent web UI username |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| arr_servicesA | List which services are set up (Sonarr, Radarr, Prowlarr, Bazarr, Overseerr, Jellyfin, qBittorrent). Shows addresses only, never keys. |
| arr_callA | Call any API path on a service. service: sonarr, radarr, prowlarr, bazarr, overseerr, jellyfin or qbittorrent. path: the path after the API root, for example /series, /movie/12, /system/status, /torrents/info, /Items. Do not add a query string. method: GET, POST, PUT, DELETE or PATCH. params: query options (for qBittorrent POST calls these are the form fields). body: JSON body for POST and PUT (not used by qBittorrent). API roots added for you: Sonarr and Radarr /api/v3, Prowlarr and Overseerr /api/v1, Bazarr /api, qBittorrent /api/v2, Jellyfin none. GET runs at once. Any change is NOT run until you set confirm=true, and you must first tell the user what will change and get a clear yes. Deleting, restarting, restoring a backup, host or security settings and password changes also need confirm_phrase set to exactly " ", for example "sonarr DELETE /series/5". Never guess a body: read an existing item with GET first and send it back with changes. |
| arr_statusA | Check that services answer. Shows version and health warnings. service: one name, or leave empty to check every service that is set up. |
| arr_queueA | Show what Sonarr and Radarr are downloading right now. service: sonarr, radarr, or empty for both. |
| arr_searchA | Look up a show or movie by name. Nothing is added. service: sonarr (shows), radarr (movies) or overseerr (both). Shows the id to use with arr_add. "in_library" is set when it already exists. |
| arr_addA | Add a show to Sonarr or a movie to Radarr. service: sonarr or radarr. external_id: the TVDB id for a show, or the TMDB id for a movie (from arr_search). quality_profile: profile name. If empty and there is only one, it is used. root_folder: folder path. If empty and there is only one, it is used. search_now: start looking for downloads right away. First call without confirm to see what will be added. Ask the user, then call again with confirm=true. |
| arr_calendarB | Upcoming episodes (sonarr) or movie releases (radarr) for the next days. |
| arr_downloadsB | Show qBittorrent torrents. filter: all, downloading, seeding, completed, paused, active, stalled, errored. |
| arr_requestsA | Show Overseerr requests. filter: pending, approved, available, processing, unavailable, failed, all. To approve or decline, use arr_call with POST /request//approve (or /decline) after the user says yes. |
| jellyfin_now_playingA | Show who is watching on Jellyfin right now, and on which device. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 10 tools
arr_call is a generic catch-all that overlaps with every specialized tool (e.g., arr_search, arr_add, arr_requests), so an agent could bypass them. Descriptions clarify intended use, but boundaries remain fuzzy for GET operations and request approval.
Most tools follow arr_<noun/verb> snake_case (arr_services, arr_call, arr_add). The outlier jellyfin_now_playing lacks the arr_ prefix, but the overall convention is readable and consistent.
10 tools cover seven services without excessive sprawl, and the generic arr_call prevents the need for a tool per endpoint. The count is well-scoped for the server's purpose.
Core workflows (search, add, status, queue, calendar, requests, downloads, now playing) are covered, and arr_call provides an escape hatch for any missing API operation. Minor gaps like dedicated update/delete tools are mitigated by arr_call.