cleanuparr-mcp
cleanuparr-mcp
Part of the arr-mcps collection. An MCP server exposing Cleanuparr's REST API as tools for inspecting status, history, statistics, jobs, and configuration.
Requirements
Cleanuparr with its REST API enabled
An API key from Cleanuparr
Python 3.11+ and
uvfor source development
Configuration
Variable | Required | Description |
| Yes | Cleanuparr URL, including any reverse-proxy |
| Usually | API key sent as |
Install a built wheel and register it with Claude Code:
uv tool install cleanuparr_mcp-*.whl
claude mcp add cleanuparr \
--env CLEANUPARR_URL=https://cleanuparr.example.com \
--env CLEANUPARR_API_KEY=your-api-key \
-- cleanuparr-mcpFor a source checkout:
uv sync
claude mcp add cleanuparr \
--env CLEANUPARR_URL=https://cleanuparr.example.com \
--env CLEANUPARR_API_KEY=your-api-key \
-- uv run --directory /path/to/cleanuparr-mcp cleanuparr-mcpTools
8 resource-scoped tools, each covering multiple Cleanuparr REST endpoints
(84 total) via an operation parameter. Call a tool with operation set to
one of its listed operations and an arguments dict matching that
operation's parameters — the tool's own description (visible to your MCP
client) lists every operation, its signature, and a one-line doc. This keeps
the full API surface available while costing a fraction of the context
budget of registering all 84 endpoints as separate tools.
Tool | Operations | Covers |
| 19 | Queue/download cleaners, dead torrents, orphaned/unlinked files, seeding rules |
| 18 | Events, manual events, strikes, timelines, stats |
| 15 | General config, *arr instances, download clients |
| 8 | Health, readiness, system/*arr/download-client status |
| 7 | Seeker search events, custom-format scores |
| 6 | Notification providers |
| 6 | Malware blocker, Seeker, blacklist sync |
| 5 | List, inspect, trigger, start, schedule jobs |
Example: cleanuparr_jobs(operation="cleanuparr_trigger_job", arguments={"job_type": "QueueCleaner"}).
Endpoint-level naming (cleanuparr_<verb>_<resource>) is preserved as the
operation value, so the full endpoint list is still discoverable from each
group tool's description at runtime.
Destructive operations are noted in their operation-line doc. Cleanuparr
returns 503 when its configuration database is busy; this server does not
retry and instead returns the upstream error to the MCP client.
Request bodies are pass-through JSON dictionaries matching the DTOs in the running Cleanuparr version. Sensitive update fields should use Cleanuparr's placeholder value to preserve an existing secret. Do not place real API keys, passwords, or notification tokens in prompts.
Development
make sync
make test
make test-integration # requires CLEANUPARR_URL and optionally CLEANUPARR_API_KEY
make buildThe offline tests use httpx.MockTransport; integration tests are skipped by
default.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/arr-mcps/cleanuparr-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server