arr-mcp
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., "@arr-mcplist my missing TV episodes"
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.
arr-mcp
A small Model Context Protocol server that puts the *arr media stack (Sonarr, Radarr, Prowlarr, Jellyseerr, Bazarr) behind clean, typed tools. An MCP client such as Claude calls those tools directly over each app's REST API — no browser, no screen-scraping, no VPN into the LAN.
The server holds the API keys itself; the client never sees them. It runs on the
.104 docker host and is reached from the cloud over an authenticated Cloudflare
Tunnel, so it works whether you're home or driving Claude from your phone.
Why this exists
Everything Claude previously did on the media stack went through a browser extension on the Mac — which brought connection-identity churn ("which browser?"), session/2FA friction, and the VPN + remote-control dance. This server removes the browser and the Mac from the loop entirely, and replaces UI scraping with fast, structured API calls.
Related MCP server: mcp-arr-suite
Tools
Area | Tools |
Overview |
|
Sonarr |
|
Radarr |
|
Prowlarr |
|
Jellyseerr |
|
Bazarr |
|
* = write action (triggers a search, or clears a series' blocklist). Everything
else is read-only. There are deliberately no delete/remove or config-mutation
tools — that keeps the blast radius small. Add more later as needed.
Setup
cp config.example.env .env
# edit .env: real API keys (Settings > General > Security > API Key in each app)
# and a strong MCP_AUTH_TOKEN: python3 -c "import secrets; print(secrets.token_urlsafe(48))"
docker compose up -d --buildQuick local check (should return a 400/406 about a missing MCP session — that means it's up and your token was accepted; a 401 means the token is wrong):
curl -s -o /dev/null -w "%{http_code}\n" \
-H "Authorization: Bearer <your MCP_AUTH_TOKEN>" \
http://localhost:8787/mcpRun without Docker (for development)
pip install -r requirements.txt
set -a; source .env; set +a
python server.pyExposing it to Claude
The MCP endpoint is https://<your-hostname>/mcp.
Tunnel it. Either uncomment the
cloudflaredservice indocker-compose.ymland give it its own tunnel, or add a hostname to your existing Jellyfin tunnel pointing athttp://arr-mcp:8787(orhttp://localhost:8787from the host). Put Cloudflare Access in front of the hostname, or rely on the bearer token — ideally both.Add it as a custom connector in Claude. Settings → Customize → Connectors → Add custom connector → URL
https://<your-hostname>/mcp. Provide the bearer token as theAuthorization: Bearer <token>header. Claude will then list the tools above.
Security notes
The bearer token (
MCP_AUTH_TOKEN) is required before the endpoint is ever reachable from the internet. With it empty the server prints a warning and serves unauthenticated — only acceptable bound to localhost.The container binds to
127.0.0.1:8787by default so nothing is exposed except through the tunnel you choose.API keys live only in
.env(git-ignored, docker-ignored). Rotate them in each app if they ever leak.Scope is intentionally read-heavy. Before adding destructive tools (delete series, remove from queue, edit settings), decide whether the convenience is worth the risk on an internet-reachable endpoint.
Files
server.py— the MCP server and all tools (streamable-HTTP transport + bearer auth)arr_client.py— thin async REST client shared by every serviceconfig.py— builds a client per service from env vars (missing = disabled)Dockerfile/docker-compose.yml— container + optional tunnelconfig.example.env— copy to.env
This server cannot be installed
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
- AlicenseAqualityAmaintenanceAn 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 and search whichever \*arr apps you're running.29MIT
- AlicenseAqualityCmaintenanceEnables interaction with the *arr media management suite (Sonarr, Radarr, Lidarr, Prowlarr, SABnzbd) and TRaSH Guides through MCP tools, allowing media library management, searching, and configuration via natural language.7081MIT
- 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.1
- AlicenseBqualityBmaintenanceEnables control and management of a self-hosted media stack (Radarr, Sonarr, Prowlarr, SABnzbd, qBittorrent) through natural language via MCP.15GPL 3.0
Related MCP Connectors
Jikan MCP — wraps the Jikan v4 API (anime/manga data, free, no auth)
AniList MCP — wraps AniList GraphQL API (free, no auth)
Podcast Index MCP — wraps the Podcast Index API (podcastindex.org)
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/dogeared/arr-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server