qbittorrent-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| QBITTORRENT_URL | Yes | The URL of the qBittorrent WebUI (e.g., http://localhost:8080). Required. | |
| QBITTORRENT_API_KEY | No | API key for qBittorrent >= v5.2.0. One authentication method is required: either this or username/password. | |
| QBITTORRENT_PASSWORD | No | Password for the qBittorrent WebUI login. Use with QBITTORRENT_USERNAME as the alternative authentication method. | |
| QBITTORRENT_USERNAME | No | Username for the qBittorrent WebUI login. Use with QBITTORRENT_PASSWORD as the alternative authentication method. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| qbittorrent_logoutA | Invalidate the current WebUI session. With API-key auth this endpoint is not reachable (API keys cannot interact with /auth/*) and the API will return an error which is surfaced as-is. |
| qbittorrent_app_versionA | The qBittorrent application version, e.g. v5.0.4. |
| qbittorrent_app_webapi_versionA | The WebAPI version implemented by this qBittorrent, e.g. 2.14.1. |
| qbittorrent_app_build_infoA | Build info: Qt, libtorrent, Boost and OpenSSL versions plus app bitness. |
| qbittorrent_app_shutdownA | Shut down the qBittorrent application. This stops the whole daemon/WebUI -- use sparingly, it cannot be undone from here. |
| qbittorrent_app_get_preferencesA | All application preferences as a key/value object (locale, limits, paths, WebUI settings, etc). See README for the full field list. |
| qbittorrent_app_set_preferencesA | Update application preferences. Pass only the keys you want to change, e.g. {"max_active_downloads": 5, "save_path": "/downloads"}. String values must be quoted; integers and booleans must not. |
| qbittorrent_app_default_save_pathA | The default save path for new torrents, e.g. C:/Users/me/Downloads. |
| qbittorrent_app_get_cookiesA | The cookies qBittorrent sends when downloading .torrent files. Each entry has name/domain/path/value/expirationDate. |
| qbittorrent_app_set_cookiesA | Replace the cookies used when downloading .torrent files. cookies is a JSON array of {name, domain, path, value, expirationDate} objects. |
| qbittorrent_log_mainA | The application log as a JSON array of {id, message, timestamp, type}. Filter message classes with normal/info/warning/critical (default true for all). Pass last_known_id to fetch only messages newer than a given id. |
| qbittorrent_log_peersA | Peer-block log entries as a JSON array of {id, ip, timestamp, blocked, reason}. Pass last_known_id to fetch only entries newer than a given id. |
| qbittorrent_sync_maindataA | Differential state snapshot for UI sync. Pass the rid from the previous reply to get only changes; full_update=true means you received everything. Includes torrents, categories, tags and server_state. |
| qbittorrent_sync_torrent_peersA | Differential peers data for one torrent. Pass the rid from the previous reply to get only changes. |
| qbittorrent_transfer_infoA | Global transfer info: download/upload rates and totals, rate limits, DHT nodes and connection status. |
| qbittorrent_transfer_speed_limits_modeA | 1 if alternative speed limits are enabled, 0 otherwise. |
| qbittorrent_transfer_toggle_speed_limitsA | Toggle the alternative speed limits on/off. |
| qbittorrent_transfer_download_limitA | Global download speed limit in bytes/s (0 if no limit is applied). |
| qbittorrent_transfer_set_download_limitA | Set the global download speed limit in bytes/s (0 removes the limit). |
| qbittorrent_transfer_upload_limitA | Global upload speed limit in bytes/s (0 if no limit is applied). |
| qbittorrent_transfer_set_upload_limitA | Set the global upload speed limit in bytes/s (0 removes the limit). |
| qbittorrent_transfer_ban_peersA | Ban peers. peers is one or more |
| qbittorrent_torrents_listA | List torrents matching the given filters. filter is one of all, downloading, seeding, completed, stopped, active, inactive, running, stalled, stalled_uploading, stalled_downloading, errored. category/tag filter by them (empty string = "without category/tag"). sort by any response field; reverse for descending order. limit/offset for paging; hashes (pipe-separated or "all") to select specific torrents. |
| qbittorrent_torrent_propertiesA | Generic properties of one torrent: save_path, creation/completion dates, total uploaded/downloaded, seeding_time, share_ratio, speeds, peer counts, isPrivate, etc. 404 if the hash is not found. |
| qbittorrent_torrent_trackersA | Trackers of one torrent: url, status (0 disabled, 1 not contacted yet, 2 working, 3 updating, 4 not working), tier, peer/seed/leech counts, msg. |
| qbittorrent_torrent_web_seedsB | Web seeds of one torrent (array of {url}). |
| qbittorrent_torrent_contentsA | Files of one torrent: index, name, size, progress, priority (0 skip, 1 normal, 6 high, 7 maximal), is_seed, piece_range, availability. Pass indexes (pipe-separated) to fetch only those files. |
| qbittorrent_torrent_piece_statesA | Piece states of one torrent as ints: 0 not downloaded, 1 downloading, 2 downloaded. |
| qbittorrent_torrent_piece_hashesB | SHA1 hashes of all pieces of one torrent, in order. |
| qbittorrent_torrents_pauseA | Pause (stop) torrents. hashes is pipe-separated or "all". |
| qbittorrent_torrents_resumeA | Resume (start) torrents. hashes is pipe-separated or "all". |
| qbittorrent_torrents_deleteA | Delete torrents. hashes is pipe-separated or "all". With delete_files=true the downloaded data is deleted from disk too -- this is irreversible. |
| qbittorrent_torrents_recheckA | Force recheck of torrents. hashes is pipe-separated or "all". |
| qbittorrent_torrents_reannounceA | Reannounce torrents to their trackers. hashes is pipe-separated or "all". |
| qbittorrent_torrents_addA | Add torrents. urls is one or more http(s)/magnet/bc:// links separated by newlines. Alternatively (or additionally) pass one raw .torrent file base64-encoded in torrent_b64. Optional: save_path, category, tags (comma-separated), skip_checking, paused, root_folder, rename, up_limit / dl_limit (bytes/s), ratio_limit, seeding_time_limit (minutes), auto_tmm, sequential_download, first_last_piece_prio. |
| qbittorrent_torrents_add_trackersA | Add trackers to a torrent. urls is one or more tracker URLs separated by newlines. |
| qbittorrent_torrents_edit_trackerA | Replace a tracker URL on a torrent with new_url. |
| qbittorrent_torrents_remove_trackersA | Remove trackers from a torrent. urls is one or more URLs separated by a pipe. |
| qbittorrent_torrents_add_peersA | Add peers to torrents. hashes is pipe-separated or "all"; peers is one or
more |
| qbittorrent_torrents_increase_priorityA | Increase queue priority of torrents. hashes is pipe-separated or "all". |
| qbittorrent_torrents_decrease_priorityA | Decrease queue priority of torrents. hashes is pipe-separated or "all". |
| qbittorrent_torrents_top_priorityA | Move torrents to the top of the queue. hashes is pipe-separated or "all". |
| qbittorrent_torrents_bottom_priorityA | Move torrents to the bottom of the queue. hashes is pipe-separated or "all". |
| qbittorrent_torrents_file_priorityA | Set file priority for a torrent. id is one or more file ids (from qbittorrent_torrent_contents) separated by a pipe; priority is 0 (skip), 1 (normal), 6 (high) or 7 (maximal). |
| qbittorrent_torrents_download_limitA | Per-torrent download speed limits (bytes/s), keyed by hash. hashes is pipe-separated or "all". |
| qbittorrent_torrents_set_download_limitA | Set download speed limit (bytes/s) for torrents. hashes is pipe-separated or "all"; limit 0 means no limit. |
| qbittorrent_torrents_set_share_limitsA | Set share limits for torrents (hashes pipe-separated or "all"). ratio_limit (share ratio), seeding_time_limit and inactive_seeding_time_limit (minutes). -2 = use global limit, -1 = no limit. |
| qbittorrent_torrents_upload_limitA | Per-torrent upload speed limits (bytes/s), keyed by hash. hashes is pipe-separated or "all". |
| qbittorrent_torrents_set_upload_limitA | Set upload speed limit (bytes/s) for torrents. hashes is pipe-separated or "all"; limit 0 means no limit. |
| qbittorrent_torrents_set_locationA | Move torrents to a new download location on disk. hashes is pipe-separated or "all"; location is the destination directory. |
| qbittorrent_torrents_set_nameA | Rename a torrent (display name only, does not touch files on disk). |
| qbittorrent_torrents_set_categoryA | Set the category of torrents. hashes is pipe-separated or "all"; pass an empty category to remove the current category. |
| qbittorrent_torrents_categoriesA | All categories as {name: {name, savePath}}. |
| qbittorrent_torrents_create_categoryB | Create a category with an optional save_path. |
| qbittorrent_torrents_edit_categoryB | Change the save_path of an existing category. |
| qbittorrent_torrents_remove_categoriesA | Remove categories. categories is one or more names separated by newlines. Torrents in a removed category become uncategorized. |
| qbittorrent_torrents_add_tagsA | Add tags (comma-separated) to torrents (hashes pipe-separated or "all"). |
| qbittorrent_torrents_remove_tagsA | Remove tags (comma-separated) from torrents (hashes pipe-separated or "all"). An empty tags value removes all tags from the torrents. |
| qbittorrent_torrents_tagsA | All tags as a JSON array of strings. |
| qbittorrent_torrents_create_tagsB | Create tags. tags is one or more names separated by commas. |
| qbittorrent_torrents_delete_tagsA | Delete tags. tags is one or more names separated by commas. Torrents keep their data but lose the deleted tags. |
| qbittorrent_torrents_set_auto_managementA | Enable/disable Automatic Torrent Management for torrents (hashes pipe-separated or "all"). |
| qbittorrent_torrents_toggle_sequential_downloadA | Toggle sequential download mode for torrents (hashes pipe-separated or "all"). |
| qbittorrent_torrents_toggle_first_last_piece_priorityA | Toggle first/last piece priority for torrents (hashes pipe-separated or "all"). |
| qbittorrent_torrents_set_force_startA | Force-start or un-force-start torrents (hashes pipe-separated or "all"). |
| qbittorrent_torrents_set_super_seedingA | Enable/disable super seeding for torrents (hashes pipe-separated or "all"). |
| qbittorrent_torrents_rename_fileA | Rename a file inside a torrent (relative paths from the torrent root). |
| qbittorrent_torrents_rename_folderA | Rename a folder inside a torrent (relative paths from the torrent root). |
| qbittorrent_rss_add_folderA | Create an RSS folder, e.g. "The Pirate Bay\Top100". |
| qbittorrent_rss_add_feedA | Add an RSS feed by URL, optionally into a folder path. |
| qbittorrent_rss_remove_itemA | Remove an RSS folder or feed, e.g. "The Pirate Bay\Top100". |
| qbittorrent_rss_move_itemA | Move or rename an RSS folder/feed from item_path to dest_path. |
| qbittorrent_rss_itemsA | All RSS items as a nested object of folder -> feed -> URL. Set with_data to also include current feed articles. |
| qbittorrent_rss_mark_as_readA | Mark an RSS feed as read; pass article_id to mark only one article. |
| qbittorrent_rss_refresh_itemA | Force-refresh an RSS folder or feed. |
| qbittorrent_rss_set_ruleA | Create or replace an auto-downloading RSS rule. rule_def keys: enabled, mustContain, mustNotContain, useRegex, episodeFilter, smartFilter, previouslyMatchedEpisodes, affectedFeeds, ignoreDays, lastMatch, addPaused, assignedCategory, savePath. e.g. {"enabled": true, "mustContain": "Ubuntu", "affectedFeeds": ["https://example.com/rss"]} |
| qbittorrent_rss_rename_ruleB | Rename an auto-downloading rule. |
| qbittorrent_rss_remove_ruleB | Remove an auto-downloading rule. |
| qbittorrent_rss_rulesB | All auto-downloading rules as {name: rule definition}. |
| qbittorrent_rss_matching_articlesA | All feed articles matching a rule, as {feed name: [article titles]}. |
| qbittorrent_search_startA | Start a search job across the configured plugins and return its id. plugins
is plugin names separated by |
| qbittorrent_search_stopA | Stop a running search job by id. |
| qbittorrent_search_statusA | Status of one search job (id) or all jobs: {id, status: Running|Stopped, total}. |
| qbittorrent_search_resultsB | Results of a search job: {results: [{descrLink, fileName, fileSize, fileUrl, nbLeechers, nbSeeders, siteUrl}], status, total}. limit caps the count (0/negative = no limit); negative offset counts back from the end. |
| qbittorrent_search_deleteA | Delete a search job and free its results. |
| qbittorrent_search_pluginsB | Installed search plugins: enabled, fullName, name, supportedCategories, url, version. |
| qbittorrent_search_install_pluginA | Install search plugins. sources is one or more URLs or file paths separated by a pipe. |
| qbittorrent_search_uninstall_pluginA | Uninstall search plugins. names is one or more names separated by a pipe. |
| qbittorrent_search_enable_pluginA | Enable or disable search plugins. names is one or more names separated by a pipe. |
| qbittorrent_search_update_pluginsA | Update all installed search plugins to their latest versions. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/arr-mcps/qbittorrent-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server