# Yarr MCP

Connects self-hosted media services like Sonarr, Radarr, and Plex to AI agents through a unified MCP and CLI layer.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 16
- Author: dinglebear-ai
- License: AGPL-3.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/dinglebear-ai/yarr
- Updated: 2026-10-01
- HTML: https://affpapa.org/en/nevibecode/mcp/yarr-mcp

## What it does

The server organizes self-hosted media apps under one control layer. Instead of crafting distinct connectors for every app, an agent interacts with Sonarr, Radarr, Plex, and Jellyfin via MCP. Operators can run identical actions directly from their shell using the `yarr` CLI.

For applications that supply machine-readable schemas, requests rely on OpenAPI metadata. Other tools like SABnzbd, Bazarr, and qBittorrent use curated command sets. The runtime also includes Code Mode for multi-step automation scripts and saved snippets.

Credentials never pass through chat tool parameters. Authentication values must stay inside environment variables or configuration files. The server does not manage scheduling on its own and does not expose an embedded web panel.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `YARR_SONARR_URL`, `YARR_SONARR_API_KEY`, `YARR_RADARR_URL`, `YARR_RADARR_API_KEY`, `YARR_PLEX_URL`, `YARR_PLEX_TOKEN`, `YARR_VERSION`, `YARR_REPO`, `YARR_RELEASE_BASE_URL`, `RUST_LOG` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env YARR_SONARR_URL=<YARR_SONARR_URL> --env YARR_SONARR_API_KEY=<YARR_SONARR_API_KEY> --env YARR_RADARR_URL=<YARR_RADARR_URL> --env YARR_RADARR_API_KEY=<YARR_RADARR_API_KEY> --env YARR_PLEX_URL=<YARR_PLEX_URL> --transport stdio yarr-mcp -- npx -y @dinglebear/yarr
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
codex mcp add yarr-mcp --env YARR_SONARR_URL=<YARR_SONARR_URL> --env YARR_SONARR_API_KEY=<YARR_SONARR_API_KEY> --env YARR_RADARR_URL=<YARR_RADARR_URL> --env YARR_RADARR_API_KEY=<YARR_RADARR_API_KEY> --env YARR_PLEX_URL=<YARR_PLEX_URL> -- npx -y @dinglebear/yarr
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "yarr-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "@dinglebear/yarr"
            ],
            "env": {
                "YARR_SONARR_URL": "<YARR_SONARR_URL>",
                "YARR_SONARR_API_KEY": "<YARR_SONARR_API_KEY>",
                "YARR_RADARR_URL": "<YARR_RADARR_URL>",
                "YARR_RADARR_API_KEY": "<YARR_RADARR_API_KEY>",
                "YARR_PLEX_URL": "<YARR_PLEX_URL>"
            }
        }
    }
}
```
Replace <…> with your own values. 5 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "yarr-mcp": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@dinglebear/yarr"
            ],
            "env": {
                "YARR_SONARR_URL": "<YARR_SONARR_URL>",
                "YARR_SONARR_API_KEY": "<YARR_SONARR_API_KEY>",
                "YARR_RADARR_URL": "<YARR_RADARR_URL>",
                "YARR_RADARR_API_KEY": "<YARR_RADARR_API_KEY>",
                "YARR_PLEX_URL": "<YARR_PLEX_URL>"
            }
        }
    }
}
```
Replace <…> with your own values. 5 more environment variables are in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e YARR_SONARR_URL=<YARR_SONARR_URL> -e YARR_SONARR_API_KEY=<YARR_SONARR_API_KEY> -e YARR_RADARR_URL=<YARR_RADARR_URL> -e YARR_RADARR_API_KEY=<YARR_RADARR_API_KEY> -e YARR_PLEX_URL=<YARR_PLEX_URL> yarr-mcp npx -y @dinglebear/yarr
```
Replace <…> with your own values. 5 more environment variables are in the server README

## When to use it
- Query status across Sonarr, Radarr, and Plex instances
- Trigger spec-backed OpenAPI operations on media management services
- Execute multi-step automation workflows using Code Mode
- Prevent API tokens from appearing inside model prompt arguments

## Example prompts
- Check the fleet status of Sonarr and Plex via yarr
- Inspect available endpoints for Radarr in the active configuration
- Run the saved snippet to check active downloads in qBittorrent

## Similar
- [Scrapling MCP Server](https://affpapa.org/en/nevibecode/mcp/scrapling-mcp-server.md) — MCP server · ★ 89899
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119231
- [AIHawk](https://affpapa.org/en/nevibecode/mcp/aihawk.md) — MCP server · ★ 32260
- [Skyvern](https://affpapa.org/en/nevibecode/mcp/skyvern.md) — MCP server · ★ 23283
- [SeleniumBase MCP](https://affpapa.org/en/nevibecode/mcp/seleniumbase-mcp.md) — MCP server · ★ 13181
- [Inbox Zero](https://affpapa.org/en/nevibecode/mcp/inbox-zero.md) — MCP server · ★ 12826

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
