Skip to main content
Glama

arr-mcp

Un pequeño servidor de Model Context Protocol que pone la pila de medios *arr (Sonarr, Radarr, Prowlarr, Jellyseerr, Bazarr) detrás de herramientas limpias y tipadas. Un cliente MCP como Claude llama a esas herramientas directamente a través de la API REST de cada aplicación — sin navegador, sin extracción de pantalla, sin VPN a la LAN.

El servidor guarda las claves de API él mismo; el cliente nunca las ve. Se ejecuta en el host docker .104 y se accede desde la nube a través de un Cloudflare Tunnel autenticado, por lo que funciona tanto si estás en casa como si usas Claude desde tu teléfono.

Por qué existe esto

Todo lo que Claude hacía antes en la pila de medios pasaba por una extensión de navegador en el Mac — lo que provocaba cambios de identidad de conexión ("¿qué navegador?"), fricción con sesiones/2FA, y el baile de VPN + control remoto. Este servidor elimina el navegador y el Mac del bucle por completo, y sustituye el raspado de la interfaz por llamadas API rápidas y estructuradas.

Related MCP server: mcp-arr-suite

Herramientas

Área

Herramientas

Resumen

stack_health

Sonarr

sonarr_health, sonarr_series, sonarr_series_detail, sonarr_missing_episodes, sonarr_search_episodes, sonarr_search_season, sonarr_queue, sonarr_blocklist_clear*, sonarr_lookup

Radarr

radarr_health, radarr_movies, radarr_search_movies*, radarr_queue

Prowlarr

prowlarr_health, prowlarr_indexers

Jellyseerr

jellyseerr_requests

Bazarr

bazarr_status

* = acción de escritura (dispara una búsqueda, o limpia la lista de bloqueo de una serie). Todo lo demás es de solo lectura. Deliberadamente no hay herramientas de borrado/eliminación ni de mutación de configuración — eso mantiene el radio de impacto pequeño. Añade más más adelante según sea necesario.

Configuración

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 --build

Comprobación local rápida (debería devolver un 400/406 sobre una sesión MCP faltante — eso significa que está activo y que tu token fue aceptado; un 401 significa que el token es incorrecto):

curl -s -o /dev/null -w "%{http_code}\n" \
  -H "Authorization: Bearer <your MCP_AUTH_TOKEN>" \
  http://localhost:8787/mcp

Ejecutar sin Docker (para desarrollo)

pip install -r requirements.txt
set -a; source .env; set +a
python server.py

Exponerlo a Claude

El endpoint MCP es https://<tu-hostname>/mcp.

  1. Tunelízalo. O descomenta el servicio cloudflared en docker-compose.yml y dale su propio túnel, o añade un hostname a tu túnel Jellyfin existente apuntando a http://arr-mcp:8787 (o http://localhost:8787 desde el host). Pon Cloudflare Access delante de el hostname, o confía en el token bearer — idealmente ambos.

  2. Añádelo como conector personalizado en Claude. Configuración → Personalizar → Conectores → Añadir conector personalizado → URL https://<tu-hostname>/mcp. Proporciona el token bearer como cabecera Authorization: Bearer <token>. Claude listará entonces las herramientas anteriores.

Notas de seguridad

  • El token bearer (MCP_AUTH_TOKEN) es obligatorio antes de que el endpoint sea accesible desde internet. Si está vacío, el servidor imprime una advertencia y sirve sin autenticación — solo aceptable vinculado a localhost.

  • El contenedor se vincula a 127.0.0.1:8787 por defecto, por lo que nada queda expuesto excepto a través del túnel que elijas.

  • Las claves de API viven solo en .env (ignorado por git, ignorado por docker). Rota las claves en cada aplicación si alguna vez se filtran.

  • El alcance es intencionadamente pesado en lectura. Antes de añadir herramientas destructivas (borrar series, eliminar de la cola, editar ajustes), decide si la conveniencia vale el riesgo en un endpoint accesible desde internet.

Archivos

  • server.py — el servidor MCP y todas las herramientas (transporte HTTP streamable + autenticación bearer)

  • arr_client.py — cliente REST asíncrono ligero compartido por cada servicio

  • config.py — construye un cliente por servicio a partir de variables de entorno (faltante = deshabilitado)

  • Dockerfile / docker-compose.yml — contenedor + túnel opcional

  • config.example.env — copia a .env

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    A
    maintenance
    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 and search whichever \*arr apps you're running.
    29
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables 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.
    70
    8
    1
    MIT
  • F
    license
    A
    quality
    A
    maintenance
    MCP 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

View all related MCP servers

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)

View all MCP Connectors

Latest Blog Posts

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