qBittorrent MCP Server
# qBittorrent MCP Server
An MCP (Model Context Protocol) server that connects to qBittorrent's Web API to search and download torrents.
## Features
- **Search Torrents**: Search for torrents using qBittorrent's search plugins
- **Download Torrents**: Add torrents by URL or magnet link
- **Manage Torrents**: Get info, pause, resume, and delete torrents
- **List Plugins**: View available search plugins
## Prerequisites
1. **qBittorrent** with Web UI enabled
- Download from [qbittorrent.org](https://www.qbittorrent.org/)
- Enable Web UI in qBittorrent: `Tools > Options > Web UI`
- Note your username, password, and port (default: 8080)
2. **Search Plugins** (for search functionality)
- In qBittorrent: `View > Search Engine`
- Click "Search plugins..." at bottom right
- Install desired search plugins
## Installation
1. Open qbittorent and go into Options -> Webui -> Enable web interface, create login and set it up
2. Install qbittorent search plugins
3. Clone this repository:
```bash
git clone <repository-url>
cd qbit-mcp
```
4. Install dependencies:
```bash
pip install uv
```
5. Configure environment variables:
```bash
cp .env.example .env
```
Edit `.env` with your qBittorrent credentials:
```env
QBITTORRENT_HOST=http://localhost:8080
QBITTORRENT_USERNAME=admin
QBITTORRENT_PASSWORD=your_password
```
## Usage
### Running the MCP Server
In witsy, click on the AC plug on the left panel, add a new server.
type: `stdio`
label: `qbit-mcp`
command: `uv`
arguments: `run --with fastmcp --with qbittorrent-api --with python-dotenv fastmcp run C:\directy\to\qbit-mcp\main.py`
Open a new Chat, click on the + sign and enable the qbit-mcp server.
Ask the LLM to download a torrent for you.
## Available Tools
### search_torrents
Search for torrents using qBittorrent's search plugins.
**Parameters:**
- `query` (string, required): Search query
- `plugins` (string, optional): Plugin names or "all" (default: "all")
- `category` (string, optional): Filter by category (default: "all")
**Example:**
```
Search for "ubuntu 24.04" torrents
```
### download_torrent
Download a torrent by URL or magnet link.
**Parameters:**
- `url` (string, required): Torrent URL or magnet link
- `save_path` (string, optional): Directory to save the torrent
- `category` (string, optional): Category to assign
- `tags` (string, optional): Comma-separated tags
- `paused` (boolean, optional): Start paused (default: false)
**Example:**
```
Download torrent from magnet:?xt=urn:btih:...
```
### get_torrent_info
Get information about torrents in qBittorrent.
**Parameters:**
- `torrent_hash` (string, optional): Specific torrent hash (returns all if not provided)
**Example:**
```
Show all torrents currently downloading
```
### list_search_plugins
List all available search plugins.
**Example:**
```
What search plugins are available?
```
### pause_torrent
Pause a torrent.
**Parameters:**
- `torrent_hash` (string, required): Hash of the torrent
### resume_torrent
Resume a paused torrent.
**Parameters:**
- `torrent_hash` (string, required): Hash of the torrent
### delete_torrent
Delete a torrent from qBittorrent.
**Parameters:**
- `torrent_hash` (string, required): Hash of the torrent
- `delete_files` (boolean, optional): Also delete files (default: false)
## Troubleshooting
### Connection Issues
- Verify qBittorrent Web UI is enabled and running
- Check that the host, port, username, and password are correct
- Ensure no firewall is blocking the connection
### Search Not Working
- Install search plugins in qBittorrent's Search Engine
- Verify plugins are enabled
- Some plugins may require updating
### Authentication Failed
- Check your username and password in `.env`
- Default credentials are usually `admin`/`adminadmin`
- You can change these in qBittorrent's Web UI settings
## License
MIT
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose: delete_torrent removes torrents, download_torrent adds new torrents, get_torrent_info retrieves status, list_search_plugins shows available plugins, pause_torrent and resume_torrent control torrent state, and search_torrents finds new torrents. There is no overlap or ambiguity between these functions.
All tool names follow a consistent verb_noun pattern using snake_case (e.g., delete_torrent, download_torrent, get_torrent_info). The naming is predictable and readable throughout the set, with no deviations or mixed conventions.
With 7 tools, the server is well-scoped for managing torrents in qBittorrent. It covers core operations like adding, removing, controlling, and querying torrents, plus search functionality, without being overly sparse or bloated.
The tool set provides comprehensive coverage for basic torrent management, including CRUD-like operations (download, delete, get info) and state control (pause/resume). A minor gap is the lack of tools for managing torrent properties (e.g., setting priorities, moving files) or categories/tags directly, but core workflows are well-supported.