Rqbit
STDIOPython API wrapper and MCP server for rqbit torrent client integration
Python API wrapper and MCP server for rqbit torrent client integration
This repository provides a Python API wrapper and an MCP (Model Context Protocol) server for the rqbit torrent client. It allows for easy integration into other applications or services.
rqbit torrent client.list_torrents: List all torrents and their details.download_torrent: Download a torrent from a magnet link or a file.get_torrent_details: Get detailed information about a specific torrent.get_torrent_stats: Get stats/status of a specific torrent.pause_torrent: Pause a torrent.start_torrent: Start a torrent.forget_torrent: Forget a torrent, keeping the files.delete_torrent: Delete a torrent and its files.uv (for local development)This application requires the URL of your rqbit instance.
Set Environment Variable: Copy .env.example to .env in your project's root directory and edit it with your settings. The application will automatically load variables from .env:
RQBIT_URL: The URL of the rqbit instance (Default: http://localhost:3030).RQBIT_HTTP_BASIC_AUTH_USERPASS: If setup in rqbit instance.RQBIT_HTTP_BASIC_AUTH_USERPASS: The username and password for basic authentication, in the format username:password.RQBIT_HTTP_API_LISTEN_ADDR: The listen address for the HTTP API (e.g., 0.0.0.0:3030).RQBIT_UPNP_SERVER_ENABLE: Enables or disables the UPnP server (e.g., true or false).RQBIT_UPNP_SERVER_FRIENDLY_NAME: The friendly name for the UPnP server (e.g., rqbit-media).RQBIT_EXPERIMENTAL_UTP_LISTEN_ENABLE: Enables or disables the uTP listener (Default: false).Choose one of the following installation methods.
This method is best for using the package as a library or running the server without modifying the code.
pip install rqbit-mcp
.env file in the directory where you'll run the application and add your rqbit URL:RQBIT_URL=http://localhost:3030
python -m rqbit_client
This method is for contributors who want to modify the source code.
Using uv:
git clone https://github.com/philogicae/rqbit-mcp.git cd rqbit-mcp
uv:uv sync --locked
cp .env.example .env
uv run -m rqbit_client
This method uses Docker to run the server in a container. compose.yaml includes rqbit torrent client.
git clone https://github.com/philogicae/rqbit-mcp.git cd rqbit-mcp
cp .env.example .env
docker compose up --build -d
docker logs rqbit-mcp -f
import asyncio from rqbit_client.wrapper import RqbitClient async def main(): # Read the RQBIT_URL from the .env file or fallback to default (http://localhost:3030) async with RqbitClient() as client: # Download a torrent magnet_link = "magnet:?xt=urn:btih:..." torrent = await client.download_torrent(magnet_link) print(torrent) # Check status status = await client.get_torrent_stats(torrent["id"]) print(status) # List torrents torrents = await client.list_torrents() print(torrents) if __name__ == "__main__": asyncio.run(main())
from rqbit_client import RqbitMCP RqbitMCP.run(transport="sse") # 'stdio', 'sse', or 'streamable-http'
Usable with any MCP-compatible client. Available tools:
list_torrents: List all torrents.download_torrent: Download a torrent via magnet link or file path.get_torrent_details: Get details of a specific torrent.get_torrent_stats: Get stats/status of a specific torrent.pause_torrent: Pause a torrent.start_torrent: Start a torrent.forget_torrent: Forget a torrent, keeping the files.delete_torrent: Delete a torrent and its files.Configuration:
{ "mcpServers": { ... # with stdio (only requires uv) "rqbit-mcp": { "command": "uvx", "args": [ "rqbit-mcp" ], "env": { "RQBIT_URL": "http://localhost:3030", # (Optional) Default rqbit instance URL "RQBIT_HTTP_BASIC_AUTH_USERPASS": "username:password" # (Optional) Only if setup in rqbit instance } }, # with docker (only requires docker) "rqbit-mcp": { "command": "docker", "args": [ "run", "-i", "-p", "8000:8000", "-e", "RQBIT_URL=http://localhost:3030", "-e", "RQBIT_HTTP_BASIC_AUTH_USERPASS=username:password", "philogicae/rqbit-mcp:latest", "rqbit-mcp" ] }, # with sse transport (requires installation) "rqbit-mcp": { "serverUrl": "http://127.0.0.1:8000/sse" }, # with streamable-http transport (requires installation) "rqbit-mcp": { "serverUrl": "http://127.0.0.1:8000/mcp" }, ... } }
See CHANGELOG.md for a history of changes to this project.
Contributions are welcome! Please open an issue or submit a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.