mcpField
A
arr-mcp

arr-mcp

本地服务
github.com游戏娱乐843 天前更新

关于 arr-mcp

arr-mcp 面向运行家庭媒体服务的用户,将媒体管理与播放服务整合到一个 MCP 端点。它可关联多个服务的状态,诊断媒体请求卡在哪一步;写入操作默认关闭,并须预览和确认。

主要功能

  1. 01跨服务媒体诊断
  2. 02支持 12 种媒体服务
  3. 03写入操作预览与确认
  4. 04按服务控制写入并记录审计
  5. 05浏览器配置与故障诊断

适用场景

  1. 01追查请求的影片为何未出现在 Jellyfin
  2. 02跨服务检查索引器和下载状态
  3. 03预览媒体监控或文件变更
  4. 04检查质量配置的问题

MCP 相关

通过单一 MCP 端点向兼容客户端提供媒体服务工具。客户端可使用 MCP 令牌或支持的 OAuth 2.1 访问令牌进行身份验证。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"bardesss-arr": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"PUID",
"-e",
"PGID",
"-e",
"TZ",
"ghcr.io/bardesss/arr-mcp:1.45.1"
],
"env": {
"PUID": "<PUID>",
"PGID": "<PGID>",
"TZ": "<TZ>"
}
}
}
}
启动命令docker run -i --rm -e PUID -e PGID -e TZ ghcr.io/bardesss/arr-mcp:1.45.1
需要配置的环境变量
PUIDUser id owning the files in /config
PGIDGroup id owning the files in /config
TZTimezone used for timestamps, e.g. Europe/Amsterdam

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/bardesss/arr-mcp:1.45.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

README 配图

arr-mcp

与整个媒体栈对话。一个服务,一个端点,一场对话。

Radarr · Sonarr · Whisparr · Prowlarr · Bazarr · Jellyfin · Plex · Seerr · SABnzbd · Transmission · qBittorrent · Profilarr

Release CI Image Platforms Licence

arr-mcp 控制面板:实时测试每个已配置的服务,并显示状态、延迟和版本

别人每个服务都提供一个 MCP 服务,而这是专为整个媒体栈打造的 MCP 服务。

这正是它的意义所在,因为真正有意思的问题都发生在服务之间:

“我周二请求的电影为什么没有出现在 Jellyfin 中?”

没有任何一个服务能单独回答这个问题。它涉及 Seerr、Radarr、Prowlarr、SABnzbd 和 Jellyfin——五个 API、五套 ID、五个不完整的答案。arr-mcp 会将它们关联起来, 并给出因果链:

diagnose { query: "Blade" }

磁盘上还没有文件。请在 Radarr 或 Sonarr 中触发搜索——当前没有内容正在 下载,也没有索引器报告故障。

一次调用,一个答案。即使有服务离线,它也能作答,并会告诉你哪些部分无法检查,而不是对无法检查的部分妄加猜测。

为什么大家会用它

🔍 diagnose 能回答任何单个服务都回答不了的问题遍历整条链路——已请求、已管理、已监控、已下载、已索引、已导入、已扫描——并指出最先能解释内容为何缺失的环节。
🧮 揭示质量配置文件无法实现其承诺的情况无法达到的最低分数、偏好但从不强制要求的语言、按格式评分而其范围更广的同类格式却得分为零的情况。对于可通过算术验证的问题,我们会给出证明而非猜测;每项修复都会指出应在 Profilarr 中进行的具体更改,因为这些配置由它管理。
🛡️ 索引器文本只作为数据,绝不作为指令来自公共索引器的发布名称可能受攻击者控制,并会直接流入模型上下文。arr-mcp 会对每一条此类文本进行隔离。
✋ 写入操作默认关闭、可预览且会记录每个服务的写入操作默认关闭,需手动启用。每次写入都会准确展示将执行的操作,并等待确认——无论如何都会记录到审计日志中。
🖥️ 能诊断问题的配置页面通过浏览器添加服务,查看出了什么问题以及该怎么处理,读取日志和写入审计记录。无需 YAML。
📚 三十九个工具,一套通用术语所有列表都采用相同的分页方式;无论客户端是否读取 structuredContent,回复都清晰易读;每个错误都会指出可用于修复的配置键;每次写入都使用 ID,而不是标题。

在这个领域,其他产品完全没有做到最后五项。

快速开始 — 约两分钟

仓库中也提供了 docker-compose.example.yml。 在 Unraid 上,改用 unraid/arr-mcp.xml——这是一个 Community Applications 模板,已设置好 appdata 路径和 99:100 所有权。目前它尚未列入 CA,因此暂时请将其放入 /boot/config/plugins/dockerMan/templates-user/,然后在 Add Container 下的模板列表中选中它。启动后,下面的步骤 1 到 3 相同。

在 Proxmox VE 上,proxmox/ 会从源代码构建一个非特权 Debian LXC,而不是使用 Docker。请在主机上运行,不要在虚拟机中运行:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/bardesss/arr-mcp/main/proxmox/ct/arr-mcp.sh)"

默认配置为 2 个核心、2 GB 内存和 8 GB 磁盘——内存是为可选的 IMDb 导入配置的,而非用于服务。config.yaml、MCP 令牌(经过哈希处理)和数据库都位于 /config 中,更新不会触碰这些内容;在容器内运行 update,即可从最新版本重新构建。在主机上再次运行上面的命令会创建第二个容器。如果安装成功却始终没有响应,请查看日志 journalctl -u arr-mcp。

它遵循 Community Scripts 的约定,但未列入其目录中,也从未在真实主机上运行过——尤其是 arm64,因此脚本会先询问,而不是自行假定。无论安装成功与否,我们都希望听到反馈: #265。启动后,下面的步骤 1 到 3 相同。

services:
  arr-mcp:
    image: ghcr.io/bardesss/arr-mcp:latest
    container_name: arr-mcp
    ports:
      - 6060:6060
    volumes:
      - ./config:/config
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Amsterdam
    restart: unless-stopped

1. 打开 http://<host>:6060——直接访问主机,不带路径。无需从容器日志中查找信息。

2. 认领实例。 首个页面是设置表单,而非登录页面:选择用户名和至少 12 个字符的密码。

重要

请在开放端口之前完成此操作。在实例被认领前,第一个打开该页面的人就会拥有此实例——而实例保存着每项服务的 API 密钥。

3. 添加服务——点击 Add a service,粘贴服务 URL 和 API 密钥(对于 Plex,使用其 X-Plex-Token;对于 Transmission 和 qBittorrent,使用用户名和密码),然后保存。设置会立即生效,无需重启。只配置你实际运行的服务。现在,即使配置文件无法解析,也不会再导致容器停止运行:arr-mcp 会显示包含错误信息和编辑器的修复页面。

你的 MCP 客户端通过 MCP 令牌访问 http://<host>:6060/mcp。在配置页面创建令牌;它只会显示一次,请立即复制到客户端中。每个令牌都有自己的级别和有效期,详见 MCP 令牌。如果客户端只能填写 URL、无法设置请求头,也可以通过 ?token= 携带令牌——详见 allow_token_in_url。如果你已经在运行身份提供方,/mcp 也接受短期 OAuth 2.1 访问令牌,因此每个客户端都能获得各自的凭证和权限范围,以限制其可执行的操作——一个客户端只读,另一个可以写入,但权限始终不会超出 config.yaml 已允许的范围。详见 auth.oauth。界面执行的所有操作最终都只涉及 config.yaml,仍然支持手动编辑。读取 MCP 注册表 的客户端可以在其中找到它,标识为 io.github.bardesss/arr-mcp。

可与任何指向它的客户端配合使用。 请求 Accept: application/json 的客户端(或完全不发送 Accept 的客户端)会收到一个带有 Content-Length 的 JSON 对象,而不会因为没有同时指定 text/event-stream 而遭到拒绝。接受流式响应的客户端仍会收到流。即使请求被拒绝,响应也会是 JSON。因此,普通的 curl 无需额外配置即可使用,完整的 MCP 客户端也同样可以。

镜像标签包括 X.Y.Z、X.Y、X 和 latest,以及用于尝鲜最新功能的 main。如果你希望自行审核每次新增的工具功能,可以固定使用一个次版本——例如 :1.6。镜像支持 amd64 和 arm64,因此 Raspberry Pi 或 ARM NAS 运行的构建与其他设备相同。

你可以这样提问

共有 38 个工具,但你无需说出它们的名称——只管提问,由模型来选择:

“现在正在下载什么?有没有卡住的?” “本周播出了哪些我还没看过的内容?” “我的哪些索引器出了问题?它们提示了什么?” “帮我找一部 1994 年出品、评分很高而且我还没有的影片。” “帮我给刚刚入库的电影找荷兰语字幕。” “不要那个版本——改下 1080p remux 版本。” “这一集为什么总是失败,也一直无法下载?” “暂停 SABnzbd,我需要用一小时带宽。” “我的做种规则是什么?现在还有内容超出规则限制仍在做种吗?” “那个下载几天前就完成了,却一直没导入——处理一下。” “将这部剧集设为 4K 配置文件,并且只监控未来的季。” “这个配置文件说要荷兰语,却一直下载英语版本——为什么?” “Radarr 中有没有内容偏离 Profilarr 的设置?” “我的哪些剧集的元数据与文件不匹配?” “这些剧集标题和文件不符——修正一下。” “取消监控第 5 季并删除它的文件。” ——始终先预览。

文档

工具全部 39 个工具、每个工具能回答什么,以及含义不明显的字段
写入操作如何启用写入操作、两个级别,以及预览并确认的流程
配置config.yaml、需要使用列表的 7 个服务、Jellyfin 的 default_user,以及如何同时运行 Plex 和 Jellyfin
配置界面4 个页面,以及每个页面不那么显而易见的功能
管理 API供配套应用查看和管理服务、设置及令牌的 JSON API,使用在配置页面生成的密钥
IMDb 评分获取剧集 IMDb 评分的唯一方法,以及相关费用
安全针对 OWASP MCP Top 10 逐项说明威胁模型,包括无法解决的问题
贡献指南符合条件的服务、如何添加适配器,以及 AI Agent 经常违反的规则

要求

  • 至少有一项受支持且可通过局域网访问的服务:Radarr 4.0+、Sonarr 4.0+、 Whisparr 2.x(仅限 V2,不包括 Eros)、Prowlarr 1.0+、Bazarr 1.4+、Jellyfin 10.9+、Plex Media Server 1.32+、 Seerr 1.0+、SABnzbd 3.0+、Transmission 3.0+、qBittorrent 4.1+、Profilarr 2.2.0+
  • Docker,或者 Node 24+,用于从源代码运行
  • 使用协议修订版本 2026-07-28 的 MCP 客户端

自 1.0 起,工具接口就是公共 API:重命名或移除工具、参数或响应字段都属于重大变更,因为这种破坏是无声的——模型会找不到改名后的工具,而不会报错。

贡献

欢迎贡献,尤其欢迎新增服务适配器——目前我们会接受 Lidarr、Emby 和 Deluge 的适配器,列表中已提前说明,也列出了不会接受的适配器。适配器是代码库中刻意设计得最为独立的部分。请先了解两点:并非所有服务都符合要求,而且标准已明确写出,不会针对每个拉取请求单独决定——符合要求的服务。另外,我无法测试自己没有运行的服务,因此第二条标准是:你已在自己的实际实例上进行测试,并在 PR 中说明测试内容和对应的版本。

还有一个适配器尚未验证:qBittorrent。 维护者既没有运行 Plex,也没有运行 qBittorrent——测试意味着在你自己的服务器上运行构建,并报告测试结果。Plex 后来已由两位志愿测试者在两台实际运行的 Plex Media Server 上完成验证,其中包括首次写入;此后,它的元数据修复功能也已在实际服务器上成功修复电影和剧集(#312);qBittorrent 已发布,但仍在等待同类测试报告。Plex 背后的设计,以及其他待处理项目。

欢迎使用 AI 辅助贡献,但标准不变,也没有其他额外要求;arr-mcp 本身就是借助编码 Agent 构建的。请让你的 Agent 参考CONTRIBUTING.md。

缺少某个工具? 请提交问题,描述你无法获得答案的问题,而不是你认为应该存在的工具。很多时候,只需为现有工具新增参数即可;如果确实需要新工具,你提出的问题就能帮助我们判断。

安全

arr-mcp 并非为暴露到互联网而设计。/mcp 端点需要持有者令牌,因为“仅限局域网”只是一种网络假设,并非安全控制——该端点连接着你配置的所有服务凭据,启用后还涉及文件删除,而家庭网络中也有访客手机和物联网设备。如果需要让它离开局域网,请将其置于带 TLS 的反向代理之后,并设置 allowed_hosts。

网络之外:写入功能默认关闭,启用后每次写入都会先预览并确认,然后才会执行;服务返回的所有内容都会被限定为数据,而非指令。安全 逐项对照 OWASP MCP Top 10 进行说明,也明确指出了它无法解决的问题。发现问题?请参阅 SECURITY.md。

致谢

arr-mcp 是粘合层;困难的部分都归功于其他人。它对接的几乎所有服务都是主要由志愿者维护的免费软件——Radarr、Sonarr、Whisparr、Prowlarr、Bazarr、Jellyfin、Seerr、SABnzbd、Transmission、qBittorrent、Profilarr——它所基于的库也同样如此:MCP TypeScript SDK、Hono、Zod、Pino、Vitest、yaml 和 TypeScript。如果你觉得 arr-mcp 有用,不妨优先支持这些项目。Plex 是个例外:它是商业产品,但其 API 承担的工作量不亚于其他服务。

启用 IMDb 数据集 时:相关信息由 IMDb 提供,经许可用于个人及非商业用途。

许可

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。