Skip to main content
Glama

arr-mcp

一个小的 Model Context Protocol 服务器,将 *arr 媒体栈(Sonarr、Radarr、Prowlarr、Jellyseerr、Bazarr)置于干净、类型化的工具之后。MCP 客户端(如 Claude)直接通过每个应用的 REST API 调用这些工具——无需浏览器、无需屏幕抓取、无需 VPN 进入局域网。

服务器自己持有 API 密钥;客户端永远看不到它们。它运行在 .104 docker 主机上,并通过经过身份验证的 Cloudflare Tunnel 从云端访问,因此无论你是在家还是用手机驱动 Claude,它都能工作。

为什么存在

Claude 之前在媒体栈上所做的一切都是通过 Mac 上的浏览器扩展完成的——这带来了连接身份混乱(“哪个浏览器?”)、会话/2FA 摩擦,以及 VPN + 远程控制的舞蹈。这个服务器完全将浏览器和 Mac 从循环中移除,并用快速、结构化的 API 调用取代了 UI 抓取。

Related MCP server: mcp-arr-suite

工具

区域

工具

概览

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

* = 写操作(触发搜索,或清除系列的阻止列表)。其他一切都是只读的。故意没有删除/移除或配置修改工具——这保持了较小的爆炸半径。以后根据需要添加更多。

设置

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

快速本地检查(应返回关于缺少 MCP 会话的 400/406——这意味着它已启动并且你的令牌被接受;401 表示令牌错误):

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

不使用 Docker 运行(用于开发)

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

将 Claude 暴露给它

MCP 端点是 https://<your-hostname>/mcp。

  1. 隧道化。 要么取消注释 docker-compose.yml 中的 cloudflared 服务并给它自己的隧道,要么在你的现有 Jellyfin 隧道中添加一个主机名,指向 http://arr-mcp:8787(或从主机指向 http://localhost:8787)。将 Cloudflare Access 放在主机名前面,或依赖 bearer token——理想情况下两者都做。

  2. 在 Claude 中将其添加为自定义连接器。 设置 → 自定义 → 连接器 → 添加自定义连接器 → URL https://<your-hostname>/mcp。提供 bearer token 作为 Authorization: Bearer <token> 头。Claude 将随后列出上述工具。

安全说明

  • bearer token(MCP_AUTH_TOKEN)在端点从互联网可达之前是必需的。如果为空,服务器会打印警告并以未认证方式服务——仅可接受绑定到 localhost。

  • 容器默认绑定到 127.0.0.1:8787,因此除了你选择的隧道外,不会暴露任何内容。

  • API 密钥仅存在于 .env(git 忽略,docker 忽略)中。如果泄露,请在每个应用中轮换它们。

  • 范围故意以读取为主。在添加破坏性工具(删除系列、从队列中移除、编辑设置)之前,请决定在互联网可达的端点上,便利是否值得冒险。

文件

  • server.py — MCP 服务器和所有工具(流式 HTTP 传输 + bearer 认证)

  • arr_client.py — 每个服务共享的轻量异步 REST 客户端

  • config.py — 从环境变量为每个服务构建客户端(缺失 = 禁用)

  • Dockerfile / docker-compose.yml — 容器 + 可选隧道

  • config.example.env — 复制到 .env

Related MCP Connectors

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
    1
    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
    11 npm
    1
    MIT
  • A
    license
    A
    quality
    B
    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
    ISC