Provides MCP integration with the rqbit BitTorrent client to manage torrents programmatically. Lets you add, monitor, and control torrent downloads through standardized API commands.

Integrates with the rqbit BitTorrent client to enable torrent management operations including adding torrents via magnet links, monitoring download progress, and controlling torrent lifecycle with pause, start, delete, and forget commands.

3264 views2Local (stdio)

What it does

  • Add torrents via magnet links
  • Monitor download progress and status
  • Pause and resume active torrents
  • Delete torrents from client
  • Control torrent lifecycle operations
  • Query torrent statistics and metadata

Best for

Automating torrent downloads in applicationsBuilding torrent management dashboardsIntegrating BitTorrent functionality into workflowsRemote torrent client administration
Requires rqbit client installationFull torrent lifecycle managementPython API wrapper included

About rqbit

rqbit is a community-built MCP server published by philogicae that provides AI assistants with tools and capabilities via the Model Context Protocol. Easily manage torrent downloads with rqbit: add, pause, start, or delete torrents using magnet links and our advanced ma It is categorized under file systems.

How to install

You can install rqbit in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.

License

rqbit is released under the MIT license. This is a permissive open-source license, meaning you can freely use, modify, and distribute the software.

Python API Wrapper & MCP Server for rqbit

uv Python PyPI Actions status License: MIT Ask DeepWiki

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 MCP server

Table of Contents

Features

  • API wrapper for the rqbit torrent client.
  • MCP server interface for standardized communication (stdio, sse, streamable-http)
  • Tools:
    • 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.

Setup

Prerequisites

  • An running instance of rqbit. (Included in docker compose)
  • Python 3.10+ (required for PyPI install).
  • uv (for local development)

Configuration

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:

  • MCP Server:
    • RQBIT_URL: The URL of the rqbit instance (Default: http://localhost:3030).
    • RQBIT_HTTP_BASIC_AUTH_USERPASS: If setup in rqbit instance.
  • 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).
    • Check rqbit for other variables and more information.

Installation

Choose one of the following installation methods.

Install from PyPI (Recommended)

This method is best for using the package as a library or running the server without modifying the code.

  1. Install the package from PyPI:
pip install rqbit-mcp
  1. Create a .env file in the directory where you'll run the application and add your rqbit URL:
RQBIT_URL=http://localhost:3030
  1. Run the MCP server (default: stdio):
python -m rqbit_client

For Local Development

This method is for contributors who want to modify the source code. Using uv:

  1. Clone the repository:
git clone https://github.com/philogicae/rqbit-mcp.git
cd rqbit-mcp
  1. Install dependencies using uv:
uv sync --locked
  1. Create your configuration file by copying the example and add your settings:
cp .env.example .env
  1. Run the MCP server (default: stdio):
uv run -m rqbit_client

For Docker

This method uses Docker to run the server in a container. compose.yaml includes rqbit torrent client.

  1. Clone the repository (if you haven't already):
git clone https://github.com/philogicae/rqbit-mcp.git
cd rqbit-mcp
  1. Create your configuration file by copying the example and add your settings:
cp .env.example .env
  1. Build and run the container using Docker Compose (default port: 8000):
docker compose up --build -d
  1. Access container logs:
docker logs rqbit-mcp -f

Usage

As Python API Wrapper

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())

As MCP Server

from rqbit_client import RqbitMCP

RqbitMCP.run(transport="sse") # 'stdio', 'sse', or 'streamable-http'

Via MCP Clients

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.

Example with Windsurf

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" 
    },
    ...
  }
}

Changelog

See CHANGELOG.md for a history of changes to this project.

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Alternatives

Related Skills

Browse all skills
godot

This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.

398
markdown-to-html

Convert Markdown files to HTML similar to `marked.js`, `pandoc`, `gomarkdown/markdown`, or similar tools; or writing custom script to convert markdown to html and/or working on web template systems like `jekyll/jekyll`, `gohugoio/hugo`, or similar web templating systems that utilize markdown documents, converting them to html. Use when asked to "convert markdown to html", "transform md to html", "render markdown", "generate html from markdown", or when working with .md files and/or web a templating system that converts markdown to HTML output. Supports CLI and Node.js workflows with GFM, CommonMark, and standard Markdown flavors.

2
google-gemini-file-search

Build document Q&A and searchable knowledge bases with Google Gemini File Search - fully managed RAG with automatic chunking, embeddings, and citations. Upload 100+ file formats (PDF, Word, Excel, code), configure semantic search, and query with natural language.Use when: building document Q&A systems, creating searchable knowledge bases, implementing semantic search without managing embeddings, indexing large document collections (100+ formats), or troubleshooting document immutability errors (delete+re-upload required), storage quota issues (3x input size for embeddings), chunking configuration (500 tokens/chunk recommended), metadata limits (20 key-value pairs max), indexing cost surprises ($0.15/1M tokens one-time), operation polling timeouts (wait for done: true), force delete errors, or model compatibility (Gemini 2.5 Pro/Flash only).

1
instrument-data-to-allotrope

Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D CSV. Use this skill when scientists need to standardize instrument data for LIMS systems, data lakes, or downstream analysis. Supports auto-detection of instrument types. Outputs include full ASM JSON, flattened CSV for easy import, and exportable Python code for data engineers. Common triggers include converting instrument files, standardizing lab data, preparing data for upload to LIMS/ELN systems, or generating parser code for production pipelines.

0
ffind

Advanced file finder with type detection and filesystem extraction for analyzing firmware and extracting embedded filesystems. Use when you need to analyze firmware files, identify file types, or extract ext2/3/4 or F2FS filesystems.

0
geopandas

Python library for working with geospatial vector data including shapefiles, GeoJSON, and GeoPackage files. Use when working with geographic data for spatial analysis, geometric operations, coordinate transformations, spatial joins, overlay operations, choropleth mapping, or any task involving reading/writing/analyzing vector geographic data. Supports PostGIS databases, interactive maps, and integration with matplotlib/folium/cartopy. Use for tasks like buffer analysis, spatial joins between datasets, dissolving boundaries, clipping data, calculating areas/distances, reprojecting coordinate systems, creating maps, or converting between spatial file formats.

0