Read-only diagnostic MCP server for a self-hosted arr stack (Sonarr, Radarr, Prowlarr & more).
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"oraclarr": {
"args": [
"-y",
"mcp-remote",
"http://<host>:7979/mcp",
"--allow-http"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Ask your media stack what's going on, in plain language.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
uvx 'oraclarr-mcp' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked oraclarr-mcp against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in other
Pi Coding Agent extension (CLI-first) — routes bash/read/grep/find/ls through lean-ctx CLI for strong token savings. Optional MCP bridge can register advanced tools.
Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 60-95% fewer tokens, same answers. Library, proxy, MCP server.
97% token reduction for AI coding sessions — zero deps, 21 languages, MCP server
Autonomous spec-to-product coding-agent CLI with an MCP server exposing 34 tools over stdio.
MCP Security Weekly
Get CVE alerts and security updates for io.github.bdog720/oraclarr and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Ask your media stack what's going on, in plain language.
A locally-run, read-only MCP server that lets an LLM client (Claude Code, Claude Desktop) diagnose a self-hosted *arr media stack.
Oraclarr gives a language model one place to answer the operational "why" questions that normally mean tabbing through six web UIs. It aggregates across your services and returns a single, structured answer without changing anything (it is strictly read-only in this phase).
Covered now: Sonarr, Radarr, Prowlarr, qBittorrent, Tdarr, and Profilarr — including multiple instances of the same type (e.g. a separate anime or 4K Sonarr/Radarr). Every tool fans out across all the instances you define and reports each one separately.
Once registered, you just ask your MCP client. Oraclarr picks the right tool and answers:
| You ask… | Oraclarr runs | …and tells you |
|---|---|---|
| "Is anything in my stack down?" | stack_health | which services are unreachable, unhealthy, or low on disk |
| "Why hasn't the new episode of X downloaded yet?" | diagnose | where X is in the wanted → grab → download → import pipeline |
| "Why did a sub-only release get grabbed when I only allow English dubs?" | explain_decision | the release that was grabbed, its custom-format score, and the language formats that matched |
| "Why does Profilarr keep upgrading stuff that already looks fine?" | explain_decision + get_quality_config | the profile cutoff/upgrade thresholds vs. the current file's score |
| "What's stuck downloading right now?" | get_queues | unified queue with progress, ETA, and stall flags |
All read-only and outcome-oriented (not one-per-endpoint, which keeps the model accurate):
| Tool | Answers |
|---|---|
stack_health | Is anything down / unhealthy / low on disk? |
get_queues | Unified active downloads (arr queue ↔ qBittorrent), stalls |
diagnose | Where is X in the pipeline / why isn't it here yet? |
explain_decision | Why was X grabbed or being upgraded? (profile, custom formats, grab history) |
get_quality_config | Quality profiles, custom formats, release profiles, Profilarr sync state |
get_history | Recent grabs / imports / failures |
get_wanted | What's missing / cutoff-unmet? |
search_media | Do I have X, what's its status? |
get_indexers | Which indexers are failing? |
get_transcodes | What's transcoding / stuck? |
There are two ways to run Oraclarr — pick one, you don't need both:
Both options need the same two files. Make them from the templates in this repo —
config.example.yaml (your service URLs) and
.env.example (your API keys / passwords):
cp config.example.yaml config.yaml and
cp .env.example .env, then edit them.config.yaml and a .env in your stack folder, and
fill in your details.See Configuration below for exactly what goes in config.yaml.
Your config.yaml and .env are never committe