servarr-mcp
The servarr-mcp server provides a Model Context Protocol (MCP) interface to manage the Servarr media stack (Sonarr, Radarr, Lidarr, Readarr, Prowlarr). Key capabilities include:
Browse & search content – List and get details for TV series, movies, artists/albums, and authors/books tracked by each app; search for new content to add.
Add & edit media – Add new series/movies/artists/authors with desired quality profile, root folder, and monitor settings; edit existing entries (monitor state, tags, quality profile, root folder).
Calendar – View upcoming TV episodes (Sonarr) and movie releases (Radarr).
Download queue management – View, remove (with blocklist/client-delete control), or re-grab items in the queue across all apps.
History – Review recent download, import, and failure events across all apps; mark failed entries to trigger re-searches.
Wanted & searches – List missing/below-cutoff episodes; trigger searches for missing episodes, by series, season, or specific episode IDs.
Release discovery – Live-search enabled indexers for specific releases and manually grab a chosen one.
Metadata refresh – Trigger metadata re-pulls (e.g., cast, episode lists, artwork) for a series.
System health & config – Check health warnings, disk space, root folders, quality profiles, and tags.
Prowlarr indexer management – List indexers and their stats, search across all enabled indexers, view query/grab history.
Async command monitoring – Poll the status of long-running background operations like searches or refreshes.
Provides tools for managing movies: list movies, get details, search for new movies, view calendar, download queue, and history.
Provides tools for managing TV series: list series, get details, search for new series, list episodes, view calendar, download queue, and history.
Click on "Install 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., "@servarr-mcpshow me the current 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.
servarr-mcp
·
claude-opus-4-8[1m] · 2026-07-07 · details
An MCP server for the
Servarr stack — Sonarr, Radarr, Lidarr,
Readarr, and Prowlarr — packaged as a Docker container. Lets an MCP
client (Claude Desktop, etc.) browse, search, and manage whichever
*arr apps you're running: library reads plus add/edit, queue
management, interactive release grabbing, and search/refresh
commands. Every tool carries MCP annotations (readOnlyHint,
destructiveHint, idempotentHint) so clients can distinguish and
gate the write surface.
Apps are optional: configure only the ones you actually run, and only those tools register.
Tools
Sonarr (TV)
Read:
Tool | Description |
| List all TV series tracked by Sonarr |
| Series details by ID |
| Search TVDB for a new series to add |
| List episodes for a series |
| Episode details by ID |
| Upcoming episodes |
| Current download queue |
| Recent history (newest first) |
| History for one series |
| Monitored episodes with no file |
| Episodes below their quality cutoff |
| Live indexer search for candidate releases |
| Poll an async command's status |
| Health check results |
| Disk space per root folder |
| Quality profiles |
| Root folders |
| Tags |
Write:
Tool | Description |
| Add a series to the library |
| Edit a tracked series (monitoring, profile, etc.) |
| Grab a release from |
| Remove a queue item (optionally blocklist / delete from client) |
| Force re-grab of a stuck queue item |
| Mark a history record failed (triggers re-search) |
| Trigger a search for missing episodes |
| Trigger a search for a whole series |
| Trigger a search for one season |
| Trigger a search for specific episodes |
| Refresh series metadata and rescan disk |
Radarr (movies)
Read:
Tool | Description |
| All movies tracked by Radarr |
| Movie details by ID |
| Search TMDB for a new movie to add |
| Look up a movie by TMDB ID |
| Look up a movie by IMDb ID |
| Upcoming movie releases |
| Current download queue |
| Recent history (newest first) |
| History for one movie |
| Monitored movies with no file |
| Movies below their quality cutoff |
| Live indexer search for candidate releases |
| Poll an async command's status |
| Health check results |
| Disk space per root folder |
| Quality profiles |
| Root folders |
| Tags |
Write:
Tool | Description |
| Add a movie to the library |
| Edit a tracked movie (monitoring, profile, etc.) |
| Grab a release from |
| Remove a queue item (optionally blocklist / delete from client) |
| Force re-grab of a stuck queue item |
| Mark a history record failed (triggers re-search) |
| Trigger a search for missing movies |
| Trigger a search for specific movies |
| Refresh movie metadata and rescan disk |
Lidarr (music)
Read:
Tool | Description |
| All artists tracked by Lidarr |
| Artist details by ID |
| Search for a new artist to add |
| List albums (optionally per-artist) |
| Album details by ID |
| Track details |
| Track files on disk |
| Current download queue |
| Recent history |
| History for one artist |
| Monitored albums with no files |
| Albums below their quality cutoff |
| Live indexer search for candidate releases |
| Poll an async command's status |
| Health check results |
| Disk space per root folder |
| Quality profiles |
| Metadata profiles |
| Root folders |
| Tags |
Write:
Tool | Description |
| Add an artist to the library |
| Edit a tracked artist (monitoring, profiles, etc.) |
| Grab a release from |
| Remove a queue item (optionally blocklist / delete from client) |
| Force re-grab of a stuck queue item |
| Mark a history record failed (triggers re-search) |
| Trigger a search for missing albums |
| Trigger a search for an artist's albums |
| Trigger a search for specific albums |
| Refresh artist metadata and rescan disk |
Readarr (books)
Read:
Tool | Description |
| All authors tracked by Readarr |
| Author details by ID |
| Search for a new author to add |
| List books (optionally per-author) |
| Book details by ID |
| Current download queue |
| Recent history |
| History for one author |
| Monitored books with no files |
| Books below their quality cutoff |
| Live indexer search for candidate releases |
| Poll an async command's status |
| Health check results |
| Disk space per root folder |
| Quality profiles |
| Metadata profiles |
| Root folders |
| Tags |
Write:
Tool | Description |
| Add an author to the library |
| Edit a tracked author (monitoring, profiles, etc.) |
| Grab a release from |
| Remove a queue item (optionally blocklist / delete from client) |
| Force re-grab of a stuck queue item |
| Mark a history record failed (triggers re-search) |
| Trigger a search for missing books |
| Trigger a search for an author's books |
| Trigger a search for specific books |
| Refresh author metadata and rescan disk |
Prowlarr (indexer manager)
Read-only:
Tool | Description |
| All configured indexers |
| Per-indexer query/grab stats |
| Indexer health / disabled status |
| Search across enabled indexers |
| Recent history (queries, grabs) |
| Health check results |
Related MCP server: nas-mcp-server
Configuration
Each app uses two environment variables. Set both for an app to enable its tools; leave them unset to skip the app entirely.
App | URL var | API key var | Default port |
Sonarr |
|
| 8989 |
Radarr |
|
| 7878 |
Lidarr |
|
| 8686 |
Readarr |
|
| 8787 |
Prowlarr |
|
| 9696 |
API keys are found under each app's Settings → General → API Key.
At least one app must be configured or the server exits with an error.
Same-host deployments
When the *arr apps run on the same Docker host as this container
(typical home-lab setup), don't use the host's hostname (e.g.
my-nas) in the *_URL vars — Docker's DNS context can't resolve
the host's own name from inside a container. Use
http://host.docker.internal:<port> instead. The provided
docker-compose.yml already maps host.docker.internal to the host
gateway via extra_hosts, so this works on Linux Docker too (not
just Docker Desktop).
Run with Docker
docker build -t servarr-mcp .
docker run -i --rm \
-e SONARR_URL=http://192.168.1.50:8989 -e SONARR_API_KEY=... \
-e RADARR_URL=http://192.168.1.50:7878 -e RADARR_API_KEY=... \
-e PROWLARR_URL=http://192.168.1.50:9696 -e PROWLARR_API_KEY=... \
servarr-mcpPublished image
After each push to main, GitHub Actions builds and pushes a multi-arch
image to GHCR:
ghcr.io/carldog/servarr-mcp:latest (linux/amd64 + linux/arm64)
Pull instead of building locally:
docker pull ghcr.io/carldog/servarr-mcp:latest
docker run -i --rm \
-e SONARR_URL=... -e SONARR_API_KEY=... \
ghcr.io/carldog/servarr-mcp:latestRun with Docker Compose (HTTP, long-lived)
The compose file runs the server in HTTP mode (Streamable HTTP) for
long-lived deployment via Portainer or Compose. It pulls the published
image from ghcr.io/carldog/servarr-mcp:latest.
# Set whichever app credentials apply:
export SONARR_URL=http://192.168.1.50:8989; export SONARR_API_KEY=...
export RADARR_URL=http://192.168.1.50:7878; export RADARR_API_KEY=...
# ... (other apps as needed)
export HOST_PORT=3002 # optional, defaults to 3002
docker compose upThe MCP endpoint will be at http://<host>:${HOST_PORT}/mcp.
Deploy via Portainer (Stack from Git)
In Portainer, Stacks → Add Stack → Repository.
Repository URL:
https://github.com/CarlDog/servarr-mcpCompose path:
docker-compose.ymlEnvironment variables: set whichever
<APP>_URL/<APP>_API_KEYpairs apply, plus optionallyHOST_PORT.Deploy. Healthcheck reaches green within ~10 seconds.
Use with Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"servarr": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "SONARR_URL", "-e", "SONARR_API_KEY",
"-e", "RADARR_URL", "-e", "RADARR_API_KEY",
"-e", "PROWLARR_URL", "-e", "PROWLARR_API_KEY",
"servarr-mcp"
],
"env": {
"SONARR_URL": "http://192.168.1.50:8989",
"SONARR_API_KEY": "...",
"RADARR_URL": "http://192.168.1.50:7878",
"RADARR_API_KEY": "...",
"PROWLARR_URL": "http://192.168.1.50:9696",
"PROWLARR_API_KEY": "..."
}
}
}
}Repeat the -e and env block patterns for whichever apps you run.
Local development
npm install
cp .env.example .env # then edit
SONARR_URL=... SONARR_API_KEY=... npm run devSecurity
The container runs as a non-root user (
servarr).API keys are passed via env vars — never bake them into the image.
A
.githooks/pre-commitruns gitleaks on every commit. Activate it once per clone:git config core.hooksPath .githooks.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityFmaintenanceA Python-based Model Context Protocol server that allows AI assistants like Claude to access and query your movie and TV show collection via Radarr and Sonarr APIs.Last updated44
- AlicenseAqualityDmaintenanceMCP server for managing a media server stack (Plex, Radarr, Overseerr, Bazarr, Prowlarr, Trakt.tv) using natural language to browse, request, and discover content.Last updated12MIT
- FlicenseAqualityAmaintenanceMCP server to manage your *ARR media stack (Radarr, Sonarr, Lidarr, Readarr, Prowlarr) for searching, adding, and managing movies, TV shows, music, books, and indexers.Last updated1
- Flicense-qualityBmaintenanceA remote MCP server for managing your arr stack (Sonarr, Radarr, qBittorrent, Seerr) via Claude.ai on mobile, enabling you to fix bad downloads, block release groups, request new content, and check trending.Last updated
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server for the FFmpeg Micro video transcoding API — create, monitor, download transcodes.
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/CarlDog/servarr-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server