prowlarr-mcp
This server is a Prowlarr MCP server that lets you search and discover indexers, categories, and download clients through MCP tools.
Search for releases across configured Prowlarr indexers using
search_releases.Use query, search type (
search,tvsearch,movie,music,book), optional indexer IDs, category IDs, limit, and offset.Perform empty-query searches to request recent releases.
List configured indexers and their safe, search-relevant capabilities with
list_indexers.List Prowlarr's hierarchical search category taxonomy with
list_categories.List configured download clients with submission-relevant fields using
list_download_clients.Retrieve release details such as title, protocol, size, publish date, seeders/leechers/grabs, categories, and indexer/guid for future download submission.
Download submission is not yet available; roadmapped for a future version.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@prowlarr-mcpsearch for recent 4K movie releases"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
prowlarr-mcp
An MCP server for Prowlarr.
Setup
cd prowlarr-mcp
uv sync
cp .env.example .envSet PROWLARR_API_KEY in .env. The API key is available in Prowlarr under
Settings → General → Security.
Configuration:
Variable | Default | Description |
|
| Prowlarr base URL, including any URL base path |
| required | Prowlarr API key |
|
| HTTP timeout, greater than 0 and at most 300 seconds |
|
| Hard upper bound accepted by |
Related MCP server: qBittorrent MCP Server
Run
uv run prowlarr-mcpThe container image also runs the MCP server over stdio:
docker run --rm -i \
-e PROWLARR_URL=http://prowlarr.example:9696 \
-e PROWLARR_API_KEY \
ghcr.io/amphineko/prowlarr-mcp:latestKeep stdin attached with -i; the server does not expose a network port.
Example Codex/OpenCode-style stdio configuration:
{
"command": "uv",
"args": [
"--directory",
"/path/to/prowlarr-mcp",
"run",
"prowlarr-mcp"
]
}Tools
list_indexers lists configured indexers and their safe, search-relevant
capabilities. It omits disabled indexers by default; pass enabled_only=false
to include them. Each result includes supported search types and category IDs,
without provider configuration fields or credentials.
list_categories returns Prowlarr's hierarchical search category taxonomy.
Use these category IDs with search_releases. Category ID 0 is valid in
Prowlarr's taxonomy and is accepted by the search tool.
list_download_clients lists configured download clients and omits disabled
clients by default. It returns only submission-relevant fields and numeric
category IDs; provider configuration, client category names, hosts, and
credentials are excluded.
grab_release submits a release returned by search_releases to a configured
download client. Pass the release's indexer_id and guid, plus an optional
download_client_id from list_download_clients. Omitting the client ID lets
Prowlarr select its configured default. Search results are cached by Prowlarr
for about 30 minutes; search again if submission reports that the release has
expired from the cache.
get_health returns Prowlarr's current health checks with their severity,
message, source, and optional help URL. get_indexer_status returns failure and
retry timing only for currently blocked indexers; resolve its numeric IDs with
list_indexers.
search_releases accepts:
query: text query; an empty string requests recent releases.search_type:search,tvsearch,movie,music, orbook.indexer_ids: optional Prowlarr indexer IDs.categories: optional Newznab category IDs.limit: number of results, default 20 and capped by configuration.offset: non-negative result offset.
The response is intentionally smaller than Prowlarr's full ReleaseResource,
but retains indexer_id and guid for a future download-submission workflow.
Prowlarr may apply limit independently to several indexers, so the MCP server
also enforces it on the combined response. truncated means that the MCP server
discarded part of the response it received; it is not a has_more pagination
indicator and cannot prove whether Prowlarr has additional results.
Error handling
For Prowlarr 4xx responses, the server reports bounded, sanitized details from recognized JSON error formats. It ignores stack traces, diagnostic content, trace IDs, URLs, filesystem paths, API keys, and unknown response shapes. Authentication errors, non-JSON bodies, and 5xx responses use generic messages with an HTTP status code.
Roadmap
v0.1: Search releases through configured Prowlarr indexers.
v0.2: Discover search and download capabilities, and submit a selected release to a configured download client.
v0.2.1: Inspect Prowlarr health and indexer status.
Inspect Prowlarr search history.
Testing with the MCP client
The repository includes a generic stdio client for launching the server and calling one tool:
uv run src/prowlarr_mcp/scripts/mcp_client.py \
--command "uv run prowlarr-mcp" \
--method "search_releases" \
--arguments '{"query": "yani neko"}'Use --cwd when the server command must run from a different directory, and
--timeout to override the default 60-second tool-call timeout. The script
prints structured tool output as JSON and exits non-zero for invalid input,
connection failures, or MCP tool errors.
Development
uv run ruff format --check .
uv run ruff check .
uv run pyrefly check
uv run python -m unittest discover -s testsAvailable Tools
1 toolsearch_releasesARead-onlyIdempotent
Search enabled Prowlarr indexers for Torrent or Usenet releases.
An empty query requests recent releases. Omit indexer_ids and categories to search all enabled indexers and categories. Results preserve Prowlarr's ordering. The indexer_id and guid identify a release for a future download submission capability, which is not available in version 0.1.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| offset | No | ||
| categories | No | ||
| indexer_ids | No | ||
| search_type | No | search |
Output Schema
| Name | Required | Description |
|---|---|---|
| limit | Yes | |
| query | Yes | |
| offset | Yes | |
| releases | Yes | |
| returned | Yes | |
| truncated | Yes | |
| search_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds meaningful behavioral context beyond annotations: results preserve Prowlarr ordering, empty queries mean recent releases, and indexer_id plus guid are not yet usable for downloads. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: three short sentences that front-load the main action and then add behavioral clarifications. The future-download-availability caveat is a small but relevant addition that prevents the agent from assuming a download capability that doesn't exist in this version. No sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameter set, no required parameters, a complete output schema, and safety annotations, this description covers everything needed to call the tool correctly. An agent can understand the search scope, the empty-query special case, filtering by indexers/categories, and the result-ordering guarantee.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining the key query semantics: empty query means recent releases, and omitted indexer_ids/categories search all enabled ones. It does not explicitly describe limit, offset, or search_type, but those are straightforward from the schema defaults and the enum values. This is strong semantic coverage despite a few remaining gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific action ('Search'), a specific resource ('enabled Prowlarr indexers'), and the result domain ('Torrent or Usenet releases'). The empty-query and omit-filter explanations further clarify the scope. Although there are no sibling tools to differentiate from, the purpose is unambiguous and complete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly tells the agent when behaviors change: an empty query requests recent releases, and omitting indexer_ids and categories searches all enabled indexers and categories. There are no sibling tools to compare against, so the lack of alternatives guidance is acceptable; the exclusion of download submission capability is also useful context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.0- First observed
search_releases
TDQS
Scored across 1 tool
There is only one tool, so there is no possibility of confusing it with another. Its purpose is clearly focused on searching releases, making misselection unnecessary.
search_releases follows a clean verb_noun naming convention. With a single tool there is no conflicting pattern, and the name accurately describes the operation.
A single tool is slightly thin for a server named Prowlarr, but it is appropriate for the currently advertised search-only capability. The missing functionality is explicitly reserved for a future version, so the count is reasonable, not excessive.
The search tool offers robust coverage for querying, filtering by categories or indexer_ids, and fetching recent releases. However, there is no way to discover available indexer_ids or continue from a search result to download submission, and the description explicitly notes that capability is unavailable, leaving a meaningful workflow gap.
Maintenance
Related MCP Connectors
Search CRM contacts, deals, tasks, appointments, calls and workflows with workspace-scoped OAuth.
Search ATProto writing, annotations, identity, agents, and forum posts. 12 read-only tools.
Search public open-source code, documentation, metadata, vulnerabilities, changelogs, and examples.
Scholarly search: OpenAlex, Crossref, arXiv, OpenCitations and PubMed in one endpoint.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables privacy-respecting web searches through SearXNG metasearch engine with customizable parameters like language, time range, categories, and engines. Supports safe search levels, pagination control, and basic authentication for secure search operations.12MIT
- FlicenseAqualityDmaintenanceEnables interaction with qBittorrent through its Web API to search for torrents using search plugins and manage downloads. Supports torrent searching, downloading via URLs/magnet links, and torrent management operations like pause, resume, and delete.73-
- AlicenseNot gradedqualityNot gradedmaintenanceEnables privacy-focused web searches through the Presearch API and web content scraping. Supports multi-language search, configurable safe search, result caching, and multiple export formats (JSON, CSV, Markdown).4-
- AlicenseBqualityBmaintenanceEnables unified control of \*arr media management applications (Sonarr, Radarr, Lidarr, Readarr, Prowlarr) through natural language queries. Manage TV shows, movies, music, books, search for content, monitor downloads, and check upcoming releases across all services.66373 npm209MIT