lutris-source-mcp
Provides a pipeline to search for game sources, download them via Prowlarr and qBittorrent, and prepare them for installation into Lutris, supporting game installation workflows.
Provides tools to interact with qBittorrent for managing torrent downloads, including adding torrents, monitoring download progress, and stopping seeding after installation.
Click on "Install 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., "@lutris-source-mcpfind and prepare Cyberpunk 2077 for installation"
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.
lutris-source-mcp
Source pipeline MCP for lutris-mcp.
Closes the find -> download -> install loop: searches Prowlarr, hands off
to qBittorrent, polls until done, classifies the resulting tree, returns a
path that lutris-mcp's install_from_yaml or install_from_directory
consumes directly.
Tools
Tool | What it does |
| The composite. Search → grab → poll → classify → return path. mutates: true |
| Abort an in-flight grab. mutates: true |
| Remove from qBittorrent without deleting on-disk files. mutates: true |
| Verify Prowlarr + qBittorrent reachable; surface configured indexers. mutates: false |
| Write |
Multi-tracker ranking
Prowlarr aggregates public (1337x, TPB, etc.) and private (Gazelle: RED, OPS, GGn) trackers in one search. The composite ranks across them with this key:
(indexer_priority, # 1 = highest, 50 = lowest
freeleech_first if freeleech_only else 0,
-seeders,
size_bytes) # smaller wins as tiebreakindexer_priority comes from the Prowlarr indexer's priority field — set
it in Prowlarr's UI per tracker (e.g. private = 1, public = 25). The MCP
respects it rather than inventing a separate trust ranking.
Gazelle hygiene
Pass freeleech_only=True (or set policy.freeleech_only = true in TOML)
to drop non-freeleech results from Gazelle indexers before ranking. Public
results pass through unchanged (freeleech is meaningless there). Auth
itself stays in Prowlarr's UI; the MCP never sees Gazelle credentials.
Stall detection
Each poll prints a stdout heartbeat:
[prepare_install_source] deadbeef dl=12345/100000 (12.3%) peers=8 rate=215.4KiB/s elapsed=14sIf downloaded doesn't increase for stall_timeout_seconds (default 5min),
the tool returns {ok: false, reason: "stalled"} so the agent can pick
another candidate.
Config
~/.config/lutris-source-mcp/config.toml:
[prowlarr]
base_url = "http://localhost:9696"
api_key = "..."
[qbittorrent]
base_url = "http://localhost:8080"
username = "admin"
password = "..."
download_dir = "/mnt/games/Downloads"
[policy]
blocklist = ["fitgirl"]
allow_indexers = []
max_size_gb = 50
freeleech_only = false
min_seeders = 1Every key has a LUTRIS_SOURCE_MCP_<SECTION>_<KEY> env override
(e.g. LUTRIS_SOURCE_MCP_PROWLARR_API_KEY, LUTRIS_SOURCE_MCP_POLICY_FREELEECH_ONLY).
Companions
For read-only Prowlarr/qBittorrent inspection, install
jmagar/prowlarr-mcp and
pickpppcc/qbittorrent-mcp
alongside. Three small focused servers, no overlap.
License
MIT.
Available Tools
5 toolscancel_pipelineC
Cancel an in-flight torrent. mutates: true
| Name | Required | Description | Default |
|---|---|---|---|
| infohash | Yes | ||
| delete_files | No | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It mentions 'mutates: true', indicating state change, but it does not disclose potential side effects (e.g., whether delete_files removes data, what confirm does, or impact on seeding).
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 very short (one sentence plus a note), which is concise but fails to provide sufficient information. The structure is front-loaded but not adequately informative.
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 tool has 3 parameters, no annotation support, and an output schema that is not described, the description is incomplete. It does not explain return values or behavior beyond mutation.
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 schema description coverage at 0%, the description should explain parameters. It only says 'Cancel an in-flight torrent', leaving 'infohash', 'delete_files', and 'confirm' largely unexplained beyond their names.
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 description clearly states the action ('Cancel') and the resource ('an in-flight torrent'), providing a specific verb and resource. However, it does not differentiate from sibling tool 'stop_seeding', which might have overlapping functionality.
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?
No guidance is provided on when to use this tool versus alternatives like 'stop_seeding'. There is no mention of prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipeline_healthA
Verify Prowlarr + qBittorrent reachability and surface config. mutates: false
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states 'mutates: false', which is the key behavioral trait given no annotations. This adds value beyond the empty schema, though it could mention additional traits like 'requires active services' or 'returns health status details'.
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 a single concise sentence plus a key-value for mutation status. It is front-loaded and contains no extraneous information.
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?
The description adequately explains the tool's purpose for a simple verification tool with no parameters. It could mention that it outputs a health status, but since an output schema exists, this is not required. Still, it is largely complete.
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 zero parameters and 100% schema coverage, the description does not need to add parameter info. The baseline 4 is appropriate; it provides the necessary context for a param-free tool.
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 description clearly states it verifies reachability of Prowlarr and qBittorrent and surfaces config, using specific verbs and resources. It distinguishes from siblings which involve cancellation, preparation, setup, or stopping.
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 implies use for checking connectivity but lacks explicit context, such as when to use this over siblings (e.g., before triggering other operations). No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_install_sourceA
Search Prowlarr, hand off the best candidate to qBittorrent, poll until complete (5-min stall timeout, configurable), classify the tree, and return a path lutris-mcp's install_from_yaml or install_from_directory consumes directly. mutates: true
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| indexer_categories | No | ||
| indexer_ids | No | ||
| max_size_gb | No | ||
| min_seeders | No | ||
| freeleech_only | No | ||
| stall_timeout_seconds | No | ||
| poll_interval_seconds | No | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the multi-step process, including polling with a configurable stall timeout (5 minutes default). It also notes that the tool mutates state. The return value is a path consumed by specific functions. However, failure modes, error handling, and permission requirements are not discussed.
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 a single sentence that packs the entire process flow without redundancy. It is front-loaded with the key action. However, the sentence is somewhat run-on and could be structured into multiple sentences for clarity. Still, it is concise and each clause adds value.
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 complexity (9 parameters, multi-step process) and absence of annotations, the description provides a high-level overview of the process and return value. It does not cover all parameters or error scenarios, but the existence of an output schema likely compensates for return value details. The description is adequate but not fully comprehensive.
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?
Schema description coverage is 0%, so the description must explain parameters. It only mentions the configurable stall timeout and implies polling interval, but does not detail the other 7 parameters (query, filters, etc.). The parameter names are somewhat self-explanatory, but the description adds minimal semantic value beyond them.
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 description clearly states the tool's purpose: search Prowlarr, hand off to qBittorrent, poll for completion, classify, and return a path for downstream consumption. It differentiates from siblings (pipeline management) by specifying a concrete resource and outcome.
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 implies usage context (preparing an install source) and mentions downstream consumers, but it does not explicitly state when to use this tool versus alternatives or provide exclusions. Sibling tools are for pipeline control, suggesting this is for setup, but no direct guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setupC
Write the TOML config file (first-run setup). mutates: true
| Name | Required | Description | Default |
|---|---|---|---|
| prowlarr_url | Yes | ||
| prowlarr_api_key | Yes | ||
| qb_url | Yes | ||
| qb_username | Yes | ||
| qb_password | Yes | ||
| download_dir | No | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only states 'mutates: true', which is redundant given 'write', and fails to disclose side effects like overwriting existing config, required state, or whether confirmation is mandatory.
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 extremely brief but critically under-specified. While the first sentence is efficient, the second is redundant and overall it lacks necessary details, making it insufficient rather than concise.
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 complexity of 7 parameters and the mutable nature of the tool, the description fails to cover return values, prerequisites, or any behavioral context beyond a single-line summary.
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?
Input schema has 7 parameters with 0% description coverage, and the description offers no explanations for any parameter, such as the purpose of 'confirm' or format of URLs.
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 description states 'Write the TOML config file (first-run setup)', clearly specifying the action and resource. This distinguishes it from sibling tools like cancel_pipeline and stop_seeding, which focus on different operations.
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 implies 'first-run' usage but provides no explicit guidance on when to use vs alternatives, nor any prerequisites or conditions for calling this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_seedingC
Stop seeding without deleting on-disk files. mutates: true
| Name | Required | Description | Default |
|---|---|---|---|
| infohash | Yes | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description includes 'mutates: true' and clarifies that files are not deleted, which adds some behavioral insight beyond the action name. However, it lacks details on side effects, state changes, or permissions required.
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 extremely concise (one sentence plus a note), but the brevity sacrifices necessary information, especially given the lack of schema descriptions.
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?
With no annotations, 0% schema coverage, and no explanation of the output schema or parameters, the description is severely incomplete for a tool requiring input parameters and producing output.
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?
Schema description coverage is 0%, and the description fails to explain the two parameters (infohash and confirm). No additional meaning is provided beyond the schema structure.
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 description clearly states the action 'Stop seeding' and distinguishes it from deletion by noting 'without deleting on-disk files'. The resource (seeding) is implied, and the sibling tools are unrelated, making the purpose stand out.
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?
No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or context. The sibling list doesn't include similar tools, so no comparison can be drawn.
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. Dates show when Glama detected each change.
5 tool updates
v0.1.0- First observed
cancel_pipeline - First observed
pipeline_health - First observed
prepare_install_source - First observed
setup - First observed
stop_seeding
TDQS
Each tool has a clearly distinct purpose: cancel_pipeline stops a torrent, pipeline_health checks connectivity, prepare_install_source handles full search and download, setup writes config, and stop_seeding stops seeding without deletion. No ambiguity between them.
Tools use snake_case and mostly follow a verb_noun pattern (e.g., cancel_pipeline, prepare_install_source). However, 'setup' is a single verb and 'pipeline_health' is noun_noun, introducing minor inconsistency.
With 5 tools, the set is well-scoped for a source management server. Each tool covers an essential operation without bloat or deficiency.
The tool surface covers core workflows: setup, health check, download/prepare, cancellation, and seeding control. Minor gaps like listing pipelines or updating config exist but are not critical for the intended use.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Search and install 4,000+ security-scanned MCP servers from inside any MCP-aware AI client.
Search and get install details on MCP servers, right from your agent -- a unified marketplace index.
Fleet discovery for the cyanheads MCP ecosystem — semantic search + install snippets.
Turn a GitHub repo or docs site into agent-ready context: pack it or search it, over MCP.
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/revelri/lutris-source-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server