Yarr MCP
ai.dinglebear由 dinglebear.ai 发布v2.2.2更新于 Nov 3, 2026
Self-hosted media fleet operations across Sonarr, Radarr, Plex, and related apps over MCP and CLI.
发布方自己的服务:Tailscale RMCP
概览
一个 MCP 服务器兼 CLI,为助手提供统一工具面,用于查询和操控 Sonarr、Radarr、Plex 等自建媒体服务。
- 可以做什么
- 检查已配置媒体服务的运行状态,并代理带凭据的 GET、POST、PUT、DELETE 请求
- 执行 Sonarr、Radarr、Prowlarr、Overseerr、Jellyfin、Plex 的 OpenAPI 生成操作,以及 SABnzbd、qBittorrent、Tautulli、Bazarr、Tracearr 的精选命令
- 运行覆盖整个服务群的 JavaScript Code Mode 多步脚本,并提供检索与原始透传辅助函数
- 保存、列出、运行和删除可复用片段,并写出产物
- 通过按服务分组的 CLI 提供同样的操作,供运维人员使用
- 适用场景
- 适合自建媒体自动化环境,希望助手通过一套工具而非多个临时集成来查看和操作这些服务。它本身不是通用 REST 网关,也不是调度或自动化引擎。
- 运行要求
- 以 stdio 方式运行的本地进程(例如 npm 启动器或原生二进制),并至少配置一个服务:YARR_SERVICES 及各服务的 URL 与凭据变量,如 YARR_SONARR_URL、YARR_SONARR_API_KEY、YARR_RADARR_API_KEY、YARR_PLEX_TOKEN。可选 HTTP 服务需 YARR_MCP_TOKEN。README 提示固定版本的 npm 包可能尚不可用,建议使用原生安装器。
安装
在 SourceWeft 中
- 打开 控制台中的 Yarr MCP,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
yarr
Self-hosted media fleet operations across Sonarr, Radarr, Plex, and related apps over MCP and CLI.
If you run Claude Code, Codex, or Gemini CLI against a self-hosted media stack,
yarr gives an agent one consistent way to query and control all of it instead
of eleven different ad hoc integrations. It is an upstream-client MCP server:
it does not replace those applications or mirror every REST endpoint as a web
UI. Its job is to provide one consistent tool surface for agents and one
equivalent CLI surface for operators.
Not for: a general-purpose REST gateway to arbitrary services, or a
scheduler/automation engine in its own right. yarr only talks to the service
kinds it knows about, and only does what you or your agent ask it to do.
Contents
- Naming
- Capabilities And Boundaries
- Install
- Unraid Plugin
- Quickstart
- Client Configuration
- Runtime Surfaces
- MCP Tool Reference
- CLI Reference
- Configuration
- Authentication
- Safety And Trust Model
- Architecture
- Distribution Contract
- Development
- Verification
- Deployment
- Troubleshooting
- Related Servers
- Documentation
- License
Naming
This repository is published at github.com/dinglebear-ai/yarr.
The Rust package and installed binary are both yarr. The npm launcher package
is yarr-mcp because the shorter yarr name is occupied on npm; installing the
launcher still gives you a yarr command. The MCP registry name is
ai.dinglebear/yarr, and Docker images use ghcr.io/dinglebear-ai/yarr.
Production Compose deployments select that image by immutable manifest digest.
Plugin naming is intentionally split:
yarris the full MCP server plugin. It launches the repository-coupled@dinglebear/yarrnpm package over stdio and includes every per-service fallback skill; it does not commit a platform-specific binary.sonarr,radarr,prowlarr,overseerr,sabnzbd,qbittorrent,plex,jellyfin,tautulli,tracearr, andbazarrare skills-only plugins with no MCP server and no bundled binary.
Capabilities And Boundaries
yarr wraps a configured media automation fleet through one action-dispatched
service layer. The same implementation backs MCP and CLI calls, so behavior
does not drift between "agent used the tool" and "operator ran the command."
Primary capabilities:
- Fleet status checks across the configured services.
- Credentialed upstream API passthrough for known service kinds.
- Table-driven OpenAPI operation metadata for Sonarr, Radarr, Prowlarr, Overseerr, Jellyfin, and Plex. The executor preserves the declared parameter, request-media, and successful-response transport contract; unsupported rows are excluded and listed in the generated capability matrix.
- Curated commands for SABnzbd, qBittorrent, Tautulli, Bazarr, and Tracearr, whose upstreams do not ship usable machine-readable specs.
- Code Mode over MCP for multi-step media automation scripts.
- Snippet storage and execution for repeatable Code Mode workflows.
- Skills-only direct-HTTP plugin fallbacks for each individual service.
Boundaries:
yarrdoes not store or schedule media jobs on its own.- It does not expose a local REST action API or embedded web UI.
- It does not accept arbitrary unknown service kinds.
- MCP callers never provide credentials, tokens, keys, or secrets as action arguments. Credentials come from environment variables, config files, or strict per-service plugin config JSON.
Install
The native release installer is the safest default because it verifies the
release archive and SHA-256 before installing yarr into ~/.local/bin:
The npm launcher is a coupled distribution, not an alias for whatever version
happens to be tagged latest. Verify the exact release version exists on npm
before using it:
Never use an unpinned npx @dinglebear/yarr or @latest in an MCP manifest: npm may
still point at an older launcher after a partial release. At the time of this
documentation refresh, GitHub release v2.1.0 is public but
@dinglebear/[email protected] is not yet available on npm; recovery is tracked in
issue #80. Use the native
installer, a verified release archive, a source build, or the independent
Unraid package until the exact npm version resolves.
Unraid Plugin
The coordinated Unraid distribution lives under
unraid-plugin/. It combines the classic .plg
installer and privileged service lifecycle, an external NestJS GraphQL
extension, and Vue settings/dashboard custom elements.
Install the plugin URL from Unraid's Plugins > Install Plugin page:
Fresh installs bind Yarr to loopback. LAN or custom-address binding is rejected until authentication is configured; Tailscale Serve is the supported tailnet-only option. Service credentials stay in server-side boot configuration and are never returned to the browser. See the Unraid operator and release guide for persistence, discovery, updates, rollback, uninstall retention, troubleshooting, and release gates.
Quickstart
The first-screen 30-second path is:
Then point an MCP client at the stdio command:
For Claude Code plugin installs, use the marketplace commands inside a Claude Code chat session, not in a shell:
The full plugin starts the exact launcher pinned in its manifest. Confirm that version exists before installing or debugging the plugin:
Until issue #80 is resolved, the full plugin cannot start from npm. The service-specific skills-only plugins do not depend on that launcher and remain available for direct upstream workflows.
Install one skills-only plugin when you want direct service scripts without the MCP server:
Client Configuration
stdio
stdio is the preferred local MCP transport. It starts yarr mcp on demand and
does not require binding a local HTTP port.
Streamable HTTP
Run a persistent server when several clients or machines should share one MCP endpoint:
HTTP MCP initialization smoke call:
Use an MCP client such as mcporter for session-aware tools/list and Code Mode
calls; a raw one-shot tools/call is not a complete MCP session.
Runtime Surfaces
Set YARR_MCP_TOOL_MODE=flat to advertise one action-dispatched MCP tool per
configured service instead of the single Code Mode tool. That mode is useful
behind a gateway such as Labby that already provides its own discovery and
sandbox layer. codemode is the default and the right choice for standalone
MCP clients.
MCP Tool Reference
By default, MCP exposes one tool named yarr.
Inside Code Mode, scripts can use:
- Per-service callables such as
sonarr.get_series(),radarr.post_movie({ body }),prowlarr.get_indexer(), andplex.get_sessions(). - Curated commands such as
qbittorrent.download_queue()andtautulli.stats_activity(). - Raw passthrough helpers at
api.<service>.get/post/put/delete(path, body). callTool(action, params)for the underlying action-dispatch escape hatch.codemode.search(query)andcodemode.describe(path)for discovery.codemode.run(name, input),codemode.snippets(), andwriteArtifact(...)for reusable scripts and artifacts.
Generated callables come from metadata tables. They preserve method/path,
required path arguments, known query names, JSON-body presence, and a bounded
single-file multipart escape hatch. They do not enforce every required query,
header/cookie parameter, style/explode rule, form schema, media type, or
response schema. See docs/API.md before relying on a generated operation for
a non-JSON or serialization-sensitive endpoint.
Example:
Generic Actions
These actions work for every configured service kind:
Code Mode Actions
There is no confirm argument. CLI destructive commands dispatch immediately.
MCP direct and nested Code Mode destructive calls require elicitation and fail
closed if the peer cannot elicit or approval is not granted.
CLI Reference
The CLI is service-grouped:
There is no --service flag. Infra commands such as help, codemode, and
snippet are service-less.
Configuration
Copy .env.example or use config.example.toml as a starting point. Common
environment variables:
Supported service kinds are sonarr, radarr, prowlarr, tautulli,
overseerr, bazarr, tracearr, sabnzbd, qbittorrent, plex, and
jellyfin.
*_API_KEY covers most Arr-style services. qBittorrent uses username/password
login. Plex and Jellyfin token headers are handled separately.
YARR_MCP_TOOL_MODE=codemode is the default. Use
YARR_MCP_TOOL_MODE=flat only when a gateway should see separate per-service
tools.
Authentication
YARR_MCP_TOKEN authenticates /mcp on any HTTP bind, including loopback.
It receives the scopes in YARR_MCP_STATIC_TOKEN_SCOPES, which defaults to
read-only yarr:read. A read-only bearer deployment must use
YARR_MCP_TOOL_MODE=flat; using the default Code Mode surface requires an
explicit yarr:write scope. On 127.0.0.1 or localhost with no explicit
bearer/OAuth configuration, auth is bypassed for local development.
Auth states:
Unauthenticated health endpoints are /health, /ready, /status, and
/metrics. /status redacts secrets; /metrics exposes HTTP and bounded
domain metrics and should be network-restricted when needed.
Safety And Trust Model
Secrets stay server-side. MCP clients provide action parameters, never upstream
tokens. Query-string secrets such as apikey=, token=, and X-Plex-Token
are rejected by path validation.
help is public at the action layer, but mounted HTTP transports still require
bearer or OAuth transport auth. service_status requires yarr:read.
Credentialed passthrough, generated operations, curated write operations, and
Code Mode require yarr:write; write satisfies read.
Generated DELETE operations, api_delete, download_remove,
stats_delete_image_cache, and trace_terminate_stream are destructive. CLI
commands dispatch them immediately. MCP callers get an interactive elicitation
prompt at the actual dispatch point, including inside Code Mode, with no call
argument or nested callTool path that can skip it.
Responses are capped by the shared token-limit layer before they are returned to MCP clients.
Architecture
src/mcp.rs and src/cli.rs are thin facades re-exporting their own
submodules. execute_service_action makes CLI-to-MCP parity structural rather
than something kept in sync by hand.
The service layer owns:
- supported service catalog and config lookup
- safe path validation
- credential redaction
- qBittorrent login flow
- response normalization
Distribution Contract
The source of truth for release identity is the version shared by Cargo.toml,
Cargo.lock, xtask/Cargo.toml, .release-please-manifest.json,
packages/yarr-mcp/package.json, and server.json.
Generated code and docs must be regenerated from the committed source inputs, not patched by hand:
- Generated OpenAPI operations live under
src/openapi/generated/and come from vendored specs inspecs/. - Curated actions live in the handwritten action registries and docs.
- Plugin manifests stay versionless; marketplaces derive plugin version from the git commit SHA.
- The npm package version and the GitHub Release tag must match.
server.jsonmust name the exactyarr-mcpnpm version and stdio launch contract under theai.dinglebear/yarrregistry identity.- The Docker image path is
ghcr.io/dinglebear-ai/yarr; production deployment uses a promoted immutable@sha256:digest.
Development
When changing generated operations:
When changing plugin packaging:
Verification
Use the README guide checker before landing documentation changes:
Use the package and Rust checks for distribution-sensitive work:
For live install verification, validate the native installer and only exercise the npm path after the exact coupled version resolves:
Documentation changes also require the repository-local link and anchor guard:
Deployment
Run as a persistent HTTP MCP server:
Docker Compose deployments are covered by docker-compose.yml,
docker-compose.prod.yml, docs/DOCKER.md, and docs/DEPLOYMENT.md.
Production deployments should put yarr behind a trusted reverse proxy or MCP
gateway when exposed outside loopback.
Troubleshooting
-
401or403from HTTP MCP: confirmYARR_MCP_TOKEN, OAuth mode, and gateway headers. -
unknown service: confirm the service is listed inYARR_SERVICESand has a matchingYARR_<SERVICE>_URL. -
upstream
401: confirm the service-specific API key or token in the server environment, not in tool arguments. -
query-string secret rejected: remove tokens from--pathand put them in config. -
plugin skill cannot reach a service: its per-service config JSON under
~/.config/lab-<service>/config.jsonis missing or stale. It is written by the plugin'sSessionStart/ConfigChangehook, so start a new session (or change a plugin setting) to refresh it. To rebuild it by hand, export the settings yourself — the scripts readCLAUDE_PLUGIN_OPTION_*, which only the hook sets:Skill scripts run through the Bash tool, which receives no
CLAUDE_PLUGIN_OPTION_*variables — only hook processes do. That is why these plugins need the hook: it is the one channel that can carry asensitive: truevalue to a skill, since sensitive values are never substituted into skill prose and these plugins have no MCP server to receive an${user_config.*}env block. -
Code Mode cannot find a callable: use
codemode.search(...)andcodemode.describe(...); generated names follow upstream OpenAPI operation IDs after normalization. -
npmor the full plugin reportsE404/ETARGET: check the exact pinned launcher withnpm view @dinglebear/[email protected] version. Do not fall back to unpinnedlatest; use the native binary while issue #80 is open.
Related Servers
- soma - RMCP runtime for provider-backed MCP servers.
- unifi-rmcp - UniFi controller REST API bridge.
- tailscale-rmcp - Tailscale API bridge for devices, users, and tailnet operations.
- unraid-rmcp - Unraid GraphQL bridge for NAS and server management.
- apprise-rmcp - Apprise notification fan-out bridge for many delivery backends.
- gotify-rmcp - Gotify push notification bridge for sends, messages, apps, and clients.
- arcane-rmcp - Arcane Docker management bridge for containers and related resources.
- ytdl-rmcp - Media download and metadata workflow server.
- synapse-rmcp - Local Synapse workflow server for scout and flux actions.
- cortex - Syslog and homelab log aggregation MCP server.
- axon - RAG, crawl, scrape, extract, and semantic search project.
- labby - Homelab control plane and MCP gateway project.
- lumen - Local semantic code search MCP server.
Documentation
The source of truth docs split is:
docs/README.mdis the audience-oriented documentation index.docs/DOCS.mddefines authority, generated-doc rules, freshness checks, and where new documentation belongs.docs/API.mdcovers action contracts and Code Mode call shape.docs/CONFIG.md,docs/ENV.md, anddocs/AUTH.mdcover configuration, environment variables, auth states, and tool modes.docs/QUICKSTART.mdcovers native, source, exact-version npm, and Unraid first-run paths.docs/MCP_SCHEMA.mdanddocs/TOOLS_ACTIONS_ENDPOINTS.mdare checked schema/action references.docs/DEPLOYMENT.md,docs/DOCKER.md, anddocs/SYSTEMD.mdcover production runtime choices.docs/CI.md,docs/SCRIPTS.md, anddocs/runbooks/cover validation, releases, incidents, and rollback.docs/PATTERNS.mdholds conventions shared across the RMCP server family.docs/PLUGINS.md,plugins/README.md, andplugins/yarr/README.mdcover marketplace packaging and launcher availability.unraid-plugin/README.mdis the operator, API, recovery, verification, and release guide for the classic Unraid distribution.CLAUDE.mdholds repo-local agent memory and the "How to add an action" checklist.
License
Original Dinglebear-authored portions of this project are licensed under AGPL-3.0-only. Separate commercial licensing is available for organizations that need terms outside the AGPL. Third-party material remains under its original license. See LICENSING.md.
来源:README.md,提交 15a599b
工具
0版本历史
1- v2.2.2最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
其他 Dinglebear 集成
Tailscale RMCP
ai.dinglebear官方发布者
把 Tailscale 网络接入助手:列出设备、查看路由、DNS、ACL、密钥与用户,并可授权或删除设备。
Yarr MCP
ai.dinglebear
MCP 与 CLI 服务器,让助手查询并控制自建的 Sonarr、Radarr、Prowlarr、Plex、Jellyfin 等媒体服务。

Unraid MCP
ai.dinglebear
Python 版 MCP 服务器,让助手通过 Unraid 的 GraphQL API 查询和管理 Unraid 服务器。
Soma
ai.dinglebear
Soma 是一个本地 Rust 运行时,只暴露一个精简的 MCP 工具,让助手通过 stdio 或 HTTP 调用内置动作和放入的 provider 工具。
Labby
ai.dinglebear
Labby 是一个本地运行的 Rust MCP 网关,提供 Code Mode、认证、安装配置、日志、CLI、HTTP API 和运维网页界面,通过 npx 启动。