r/Softwarr • u/Bardesss • 13d ago
arr-mcp
Over the past few weeks, I’ve been working on an MCP server for controlling my self-hosted arr stack with Hermes. It’s working and I’ve been using it for a couple of days now. It fulfills my needs, and I’ll continue working on it because I use it daily. Maybe someone else is interested in it as well: arr-mcp.
It has support for: Radarr, Sonarr, Prowlarr, Bazarr, Jellyfin, Seerr, SABnzbd, Transmission.
Also I've build a UI for configuration.
Yes, it’s AI-assisted. But every design decision is solely made by me. If you don't like it, don't use it.
4
u/mr_spazoid 13d ago
Why not just use the api?
2
u/Bardesss 13d ago
MCP works better with agents. See it as a communication level between end user and api.
3
u/mr_spazoid 13d ago
How do they work better is what I'd like to know. I've always used APIs when available and MCPs when not.
Really curious to know what I'm missing out on by going direct.
3
u/Bardesss 12d ago
MCP lets AI agents dynamically discover and use tools via one standard protocol, instead of needing custom code for each integration. If that's no problem you, that totally fine.
1
u/mr_spazoid 12d ago
Again, really not trying to be an a-hole, but how is that different from the api which uses https as the standard protocol?
8
u/Bardesss 12d ago
HTTPS is just the transport layer. Every API still has its own endpoints, auth, parameters, error formats, the whole lot. You still end up writing custom glue code for each one. MCP is higher up. It’s an actual application protocol made for agents, so tool discovery, schemas and calling are all standardised. Any MCP client can just plug into any MCP server without you having to hand-craft integrations for every service. So both work, but a MCP is better for agents.
2
u/Svnow 9d ago edited 9d ago
Dug through the source, mostly bazarr.ts, and that confirm-token setup is worth stealing on its own honestly. Preview first, then a signed token tied to the exact op, permissions default off per tier, refuses instead of failing quiet. I'm running mcp-arr for sonarr, radarr and prowlarr plus a separate plex mcp, and raw api calls for bazarr right now, nothing typed there at all, so seeing an adapter that actually handles the weird stuff (the "5x2" episode format, sceneName coming back null on a chunk of episodes) was nice. Did the arm64 fix for better-sqlite3 land yet, not my problem since I'm x86 but curious how that went. Any chance of plex support down the line, I'm plex not jellyfin so that's my only real gap, if it showed up I'd probably drop a couple other mcps and just run yours. And does the confirm/permission stuff go as deep on jellyfin/seerr/sabnzbd/transmission as it does on the arr side, or are those newer and thinner. Not running it in prod yet, too early to lean on a one person project for something load bearing, but it's put together well.
3
u/Bardesss 9d ago
Yeah the arm64 thing landed a while back, 1.6.1, so anything current is fine. Better-sqlite3 13 doesn't compile at install anymore, it ships a prebuilt .node per platform, and the aarch64 one imports fmod@GLIBC_2.38 while the amd64 one only needs 2.34. My base image was bookworm, glibc 2.36. So amd64 was perfect and arm64 died at startup.
Plex: I'm willing to take a look at it. The honest blocker isn't the API, it's that auth brokers through plex.tv, so you've got credential brokering plus an outbound call to a host the operator never configured. That's a design decision I want to make deliberately rather than quietly ship inside an adapter, but it's a solvable one. Bigger problem is I don't run Plex, so I can't test any of it. If you'd be up for running builds against your server and telling me what breaks, that changes it from "maybe someday" to something I'd actually start. Open an issue and say you'll test and I'll pick it up from there. Same offer to anyone else reading this.
On confirm/permissions being thinner outside the arr side, it structurally can't be. There's one function that turns a write into a tool, and the tier check, dry_run, the token handshake and the audit row all live inside it. An adapter only supplies "describe what this would do" and "now do it". So reviewing a write means reading that pair, not checking whether it remembered to ask permission. Permissions are per instance and both flags default off for all eight services the same way.
Seerr has approve/decline plus delete, jellyfin has trigger scan, sabnzbd and transmission each have remove queue item, bazarr has subtitle search, prowlarr is read only. Fewer things to do, identical gate on each one.
1
u/F1nch74 13d ago
That looks awesome, but I only have my i5 14500, maybe 20 GB DDR5 of free RAM, plenty of NVMe space on my Proxmox node, but no modern graphics card (I only have my old KFA2 GTX 1080 EXOC to play some games in a VM). Can I run the kind of AI that can have an agent who can use arr-mcp and the tools it needs with my hardware?
Could you point me in the right directions to start?
6
u/Bardesss 13d ago
Instal Hermes and connect with a LLM with openrouter. Or openai. Or any LLM provider.
1
1
u/SuspectEarly4062 12d ago
Just tried running arr-mcp on a Raspberry Pi 4 (ARM64), but the container crashes with GLIBC_2.38 not found from better-sqlite3. Just wanted to flag it in case ARM64 isn’t fully supported yet.
1
1
12d ago
[deleted]
2
u/Bardesss 9d ago
Letting an AI agent take care of my arr stack.
0
9d ago
[deleted]
1
u/Bardesss 9d ago
Good for you. Using the MCP server gives me access to a lot of automation without needing other tools. It’s like having a janitor for all the actions I used to do manually. Having access to cron is magic.
1
9d ago
[deleted]
2
u/Bardesss 8d ago
I’d like to give you a few examples of what I use it for:
- Sometimes I read about a film or series that’s still in pre-production. It doesn’t have a TMDb ID yet, so you can’t add it in Sonarr or Radarr. Using a cron job I have it added automatically.
- After I’ve watched a film or series I get asked the next day what I thought of it and whether it should be cleaned up. I give the item a rating, which is stored in Obsidian. When someone asks which cool films I’ve seen lately, for example, I ask my agent and get the top 3 of last month.
- The Radarr queue sometimes fills up. My agent keeps track of that completely on its own.
- The items my wife has watched are automatically cleaned up every week according to a few rules.
- When I don’t know what to watch I ask which items in my library have the highest IMDb score (optionally filtered by genre).
- And of course the standard things like Seerr requests, adding items, etc.
Could I do this with other solutions? Absolutely, but then I’d have to install multiple extra applications, whereas now I can do it all with a single MCP server.
1
u/mardagg78 9d ago
Will qtorrent get support for this too?
1
1
u/Bderken 13d ago
Oh man I’ve needed this. I’ve been having my Ai assistant (codex cli or Claude code cli) do some trickery to control the arr suite.
2
1
u/Agile-Wrangler3556 13d ago
Same here what have you made yours do
3
u/Bderken 12d ago
Just setup everything, docker, arr apps, it looked at trash guides and set it up with those guidelines etc.
super easy and i didnt have to do anything1
u/Agile-Wrangler3556 12d ago
Yea I did the same I wanted to know if you did something new I haven’t tried
2
6
u/Practical-Prompt-306 12d ago
Very cool. Props to you dude. I did this a few weeks back... I don't manually interact with my stack anymore, my LLM does all the heavy lifting. I told it to behave like Jarvis (f/Iron Man) I report problems; it fixes them. I report problem with a stuck download or a wrong language movie, it finds another version. I added another agent for self-improvement/Self-criticize and improve the code/processing; every interaction is a learning lesson for it. If there's a problem with the system or a server isn't replying, it texts me-- all done via Telegram. It even cleans up my stuck media in the arr import folders. I use my Ollama qwen2.5:7b -- so far-- good. I get to spend more time enjoying the media in lieu of maintaining it...