Building an MCP Server for the *arr Stack: Media Management Through Natural Language

I built an MCP server to manage Sonarr, Radarr, Lidarr, Readarr, and Prowlarr through Claude—query downloads and search libraries without switching between five dashboards.

I run Sonarr, Radarr, Lidarr, Readarr, and Prowlarr on my home server for managing TV, movies, music, books, and indexers. They’re excellent tools individually, but managing five separate web interfaces means a lot of tab switching when I want to check what’s downloading or search for something across my library.

So I built mcp-arr—an MCP server that lets me query and manage all five services through natural language conversation with Claude.

The Problem With Multiple Dashboards

Here’s a typical workflow before mcp-arr:

  1. I’m working with Claude on something

  2. I want to check if I have a particular show

  3. I open Sonarr in a new tab

  4. I search, don’t find it, wonder if it’s in Radarr instead

  5. I open Radarr

  6. Repeat for Lidarr if it’s music

  7. I’ve lost track of what I was doing

With mcp-arr, that becomes:

  1. “Do I have Breaking Bad in my library?”

  2. Claude checks all configured services and tells me

What You Can Do

The server provides 17 tools across the *arr suite:

Cross-Service:

  • “Check status of all my *arr services”

  • “Search for ‘The Office’ across all services”

Sonarr (TV):

  • “Show me all my TV series”

  • “Search for a show called Severance”

  • “What’s in the Sonarr download queue?”

  • “What episodes are coming this week?”

Radarr (Movies):

  • “List all movies in my library”

  • “Search for Inception”

  • “Show upcoming movie releases”

Lidarr (Music) and Readarr (Books):

  • “List all artists in my music library”

  • “Search for books by Brandon Sanderson”

  • “What’s downloading in Readarr?”

Prowlarr (Indexers):

  • “Show all configured indexers”

  • “Search indexers for a specific release”

The Complete Tool List

CategoryTools
Generalarr_status, arr_search_all
Sonarrget_series, search, get_queue, get_calendar
Radarrget_movies, search, get_queue, get_calendar
Lidarrget_artists, search, get_queue
Readarrget_authors, search, get_queue
Prowlarrget_indexers, search

Configuration

The server detects which services you have based on environment variables. Only configure what you use:

{
  "mcpServers": {
    "arr": {
      "command": "npx",
      "args": ["-y", "mcp-arr-server"],
      "env": {
        "SONARR_URL": "http://localhost:8989",
        "SONARR_API_KEY": "your-sonarr-api-key",
        "RADARR_URL": "http://localhost:7878",
        "RADARR_API_KEY": "your-radarr-api-key"
      }
    }
  }
}

Get your API keys from Settings > General > Security in each *arr application.

Get It

npm: mcp-arr-server — Install with npx mcp-arr-server, configure your API keys, and you’re running.

Learn More About MCP Servers

If you’re new to the Model Context Protocol or want to dive deeper, these videos provide excellent tutorials and explanations:

MCP In 26 Minutes - A comprehensive tutorial covering MCP fundamentals, how to use MCP servers, and how to build your own:

https://www.youtube.com/watch?v=kOhLoixrJXo

you need to learn MCP RIGHT NOW!! - Explains how MCP works and how to use it with both Claude Desktop and local models:

https://www.youtube.com/watch?v=GuTcle5edjk