tdarr-mcp
Click on "Deploy 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., "@tdarr-mcp Show me the current status of all workers"
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.
tdarr-mcp
A Model Context Protocol (MCP) server for Tdarr — the distributed media transcoding/health-check automation platform. It gives AI assistants (Claude Desktop, Claude Code, and any MCP-compatible client) programmatic control over a Tdarr server through its HTTP API.
Speaks MCP over stdio and exposes 105 tools across 12 categories.
Features
Category | Tools | Examples |
Libraries | 19 | scan, create/update/delete libraries, folder & filter settings, transcode/health-check options |
Nodes | 19 | list nodes & workers, pause/resume, set worker limits, reassign jobs |
Server | 18 | server status, settings, schedules, statistics, maintenance |
Files | 11 | search, bulk update/delete, create samples, inspect file records |
Plugins | 9 | list/get plugins, plugin stacks, community plugins |
Stats | 7 | transcode/health stats, space saved, processing history |
Users | 7 | list/create/update/delete users, auth settings |
Backups | 5 | create backup, status, reset |
Jobs | 5 | queue management, job control |
Database | 3 |
|
Automations | 1 | run an automation |
Processes | 1 | process info |
All tools are prefixed tdarr_* (e.g. tdarr_get_nodes, tdarr_search_db, tdarr_run_automation).
Related MCP server: Arr-MCP
Prerequisites
Installation & build
git clone https://github.com/maximeallanic/tdarr-mcp.git
cd tdarr-mcp
# with Bun
bun install
bun run build # tsc → dist/
# …or with npm
npm install
npm run buildThis compiles src/ to dist/.
Configuration
The server reads its target from environment variables:
Variable | Required | Description |
| ❌ | Base URL of the Tdarr server. Defaults to |
| ❌ | API key, sent as the |
Usage with an MCP client
Add the server to your MCP client configuration (e.g. Claude Desktop / Claude Code mcpServers block):
{
"mcpServers": {
"tdarr": {
"command": "node",
"args": ["/absolute/path/to/tdarr-mcp/dist/main.js"],
"env": {
"TDARR_URL": "http://your-tdarr-host:8265"
}
}
}
}During development you can run the TypeScript entry directly with Bun (no build step):
TDARR_URL=http://your-tdarr-host:8265 bun run src/main.tsHow it works
Each tool is a thin declarative mapping (TdarrToolDef) to a Tdarr API endpoint: HTTP method, path (with :param substitution), and an input JSON schema. POST bodies are wrapped in { data: ... } by default (Tdarr's convention) unless a tool sets dataWrapped: false. Responses are returned as pretty-printed JSON text.
License
MIT © Maxime Allanic
Available Tools
105 toolstdarr_add_audio_codec_excludeC
Add an audio codec to be excluded/included in basic audio transcoding settings
Inputs: ele (required), dbID (required).
tdarr_add_plugin_includeB
Add a plugin to a classic plugin stack
Inputs: ele (required), dbID (required), index (required), source (required).
tdarr_add_video_codec_excludeC
Add a video codec to be excluded/included in basic video transcoding settings
Inputs: ele (required), dbID (required).
tdarr_admin_registerB
Admin register a new user
Inputs: roles (required), username (required).
tdarr_admin_reset_passwordC
Admin reset a user password
Inputs: username (required).
tdarr_alter_worker_limitB
Change the number of running workers of a specific type on a specific node
Inputs: nodeID (required), process (required), workerType (required).
tdarr_auth_logoutA
Log out the current user
Inputs: no named parameters.
tdarr_auth_reset_passwordC
Reset current user password
Inputs: password (required), oldPassword (required).
tdarr_auth_statusC
Check Tdarr Pro status
Inputs: saU (required).
tdarr_auth_verify_tokenB
Verify a user token
Inputs: no named parameters.
tdarr_bulk_delete_filesA
Bulk delete selected files from disk and remove them from the database
Inputs: fileIds (required).
tdarr_bulk_update_filesB
Bulk update specific files by their IDs
Inputs: fileIds (required), updatedObj (required).
tdarr_cancel_worker_itemB
Cancel a running worker item on a specific node
Inputs: cause (required), nodeID (required), workerID (required).
tdarr_clientC
Load and update data in various tables found around the Tdarr UI. clientType can be: files, staging, rejected, transcode_success, transcode_error, health_check_success, health_check_error
Inputs: opts (required), sorts (required), start (required), filters (required), +2 more.
tdarr_copy_community_to_localC
Copy a community plugin to local plugins
Inputs: pluginID (required), forceOverwrite (required).
tdarr_create_backupA
Create a backup of the Tdarr database
Inputs: no named parameters.
tdarr_create_pluginC
Create a basic classic plugin using the classic plugin creator
Inputs: action (required), details (required), conditionalNotes (required), conditionalsString (required).
tdarr_create_sampleB
Create a 30 second sample of a file
Inputs: filePath (required).
tdarr_cruddbB
Interact with the database. Modes: insert (requires collection, docID, obj), getById (requires collection, docID), getAll (requires collection), update (requires collection, docID, obj), delete (requires collection, docID), filter (requires collection, filters)
Inputs: mode (required), collection (required), obj, docID, +1 more.
tdarr_debugB
Get a page with various debug info
Inputs: no named parameters.
tdarr_debug_varsC
Get various debug info by type
Inputs: type (required).
tdarr_delete_backupB
Delete a backup of the Tdarr database
Inputs: name (required).
tdarr_delete_cache_fileC
Delete a cache file
Inputs: file (required).
tdarr_delete_fileB
Delete a file on disk of a file in Tdarr DB
Inputs: file (required).
tdarr_delete_job_reportA
Delete a single job report from both database and disk
Inputs: jobId (required).
tdarr_delete_job_reportsA
Delete multiple job reports from both database and disk (with optional filters)
Inputs: filters.
tdarr_delete_pluginC
Delete a plugin
Inputs: pluginID (required), pluginSource (required).
tdarr_delete_unhealthy_filesA
Delete files which have failed to transcode (table3) or unhealthy files (table6)
Inputs: table (required).
tdarr_disconnect_nodeC
Forcefully disconnect a node
Inputs: nodeID (required).
tdarr_download_pluginsA
Download the latest plugins zip (used by nodes)
Inputs: no named parameters.
tdarr_file_downloadC
Download a file
Inputs: filePath.
tdarr_file_uploadC
Upload a file
Inputs: no named parameters.
tdarr_find_duplicatesC
Start the find duplicates process
Inputs: count (required), threshold (required).
tdarr_get_backupsA
Get a list of backups of the Tdarr database
Inputs: no named parameters.
tdarr_get_backup_statusB
Get the status of a Tdarr backup in progress
Inputs: no named parameters.
tdarr_get_db_statusesB
Get the statuses of the Tdarr database
Inputs: no named parameters.
tdarr_get_filescanner_statusB
Get the status of a file scanner in progress
Inputs: dbID (required).
tdarr_get_new_taskB
Request a new task for a node
Inputs: nodeID (required), workerID (required), workerType (required), automation.
tdarr_get_node_logC
Get the log of a node
Inputs: nodeID (required).
tdarr_get_nodesA
Get connected nodes information
Inputs: no named parameters.
tdarr_get_process_infoA
Get process information from server and nodes with child process relationships
Inputs: no named parameters.
tdarr_get_res_statsC
Get server resource information
Inputs: no named parameters.
tdarr_get_server_logB
Get the server log
Inputs: no named parameters.
tdarr_get_subdirectoriesB
Get subdirectories of a folder
Inputs: folderPath (required).
tdarr_get_time_nowA
Get the current time on the server
Inputs: no named parameters.
tdarr_is_server_aliveA
Check if the server is alive (legacy, prefer tdarr_status)
Inputs: no named parameters.
tdarr_item_proc_endB
Signal that a node completed processing an item
Inputs: obj (required), nodeID (required).
tdarr_kill_file_scannerB
Kill a file scanner in progress
Inputs: dbID (required).
tdarr_kill_workerB
Kill a worker on a node
Inputs: nodeID (required), workerID (required).
tdarr_list_footprint_reportsC
List all job reports for a specific footprintId
Inputs: footprintId (required).
tdarr_log_job_reportC
Update a job report
Inputs: job (required), date (required), text (required).
tdarr_nodes_version_checkB
Verify the server version before establishing a full node connection
Inputs: nodeVersion (required), nodeID, inDocker, nodeName, +2 more.
tdarr_performance_statsC
Get various performance stat info
Inputs: no named parameters.
tdarr_poll_worker_limitsA
Get worker limits for a node and check if there's anything in the queue
Inputs: nodeID (required).
tdarr_public_auth_loginC
Log in a user
Inputs: password (required), username (required).
tdarr_public_auth_registerC
Register a new user
Inputs: password (required), username (required).
tdarr_read_job_fileC
Read a job report
Inputs: jobId (required), jobFileId (required), footprintId (required).
tdarr_read_pluginC
Read a plugin (used by nodes)
Inputs: plugin (required).
tdarr_read_plugin_textA
Read a plugin file for the classic plugin editor
Inputs: pluginID (required), pluginSource (required).
tdarr_remove_audio_codec_excludeB
Remove an audio codec from the excluded/included list in basic audio transcoding settings
Inputs: ele (required), dbID (required).
tdarr_remove_library_filesB
Remove all files from a Tdarr library DB (files on disk are not removed)
Inputs: DB (required).
tdarr_remove_plugin_includeB
Remove a plugin from a classic plugin stack
Inputs: ele (required), dbID (required).
tdarr_remove_video_codec_excludeC
Remove a video codec from the excluded/included list in basic video transcoding settings
Inputs: ele (required), dbID (required).
tdarr_rescan_fileC
Rescan a file
Inputs: DB (required), _id (required).
tdarr_reset_backup_statusB
Reset the backup status
Inputs: no named parameters.
tdarr_restart_nodeC
Restart a specific node
Inputs: nodeID (required).
tdarr_restart_serverA
Restart Tdarr Server
Inputs: no named parameters.
tdarr_restart_uiC
Restart the Tdarr UI
Inputs: no named parameters.
tdarr_run_automationC
Manually trigger an automation
Inputs: configId (required), payload, libraryIds, targetNodeIds, +4 more.
tdarr_run_help_commandB
Run an ffmpeg or handbrake help command on the Help tab
Inputs: mode (required), text (required).
tdarr_save_plugin_textC
Save plugin text for the classic plugin editor
Inputs: text (required), pluginID (required), pluginSource (required).
tdarr_scan_filesB
Run a scanFresh, scanFindNew or scanFolderWatcher on a library. scanFresh & scanFindNew require a single string dbID inside scanConfig.
Inputs: scanConfig (required).
tdarr_scan_individual_fileC
Scan an individual file with various tools
Inputs: file (required), scanTypes (required).
tdarr_search_dbA
Search the file database (legacy endpoint, prefer tdarr_client instead)
Inputs: string (required), lessThanGB (required), greaterThanGB (required).
tdarr_search_flow_pluginsC
Search flow plugins
Inputs: string (required), pluginType (required).
tdarr_search_flow_templatesC
Search flow templates
Inputs: string (required), pluginType (required).
tdarr_search_job_reportsD
Search job reports
Inputs: searchTerms (required).
tdarr_search_pluginsC
Search classic plugins
Inputs: string (required), pluginType (required).
tdarr_set_all_statusC
Requeue files for transcode or health check for a specific library
Inputs: dbID (required), mode (required), table (required), processStatus (required).
tdarr_stats_get_piesC
Get all or library pie stats
Inputs: libraryId.
tdarr_stats_get_res_histC
Get server resource history
Inputs: timeframe.
tdarr_stats_get_running_worker_histC
Get running worker history
Inputs: timeframe.
tdarr_stats_get_space_savedC
Get space saved history
Inputs: nodeId, pluginId, libraryId, timeframe, +1 more.
tdarr_stats_get_streamsC
Get stream stats info
Inputs: libraryId.
tdarr_stats_get_worker_verdict_histC
Get worker verdict history
Inputs: nodeId, libraryId, timeframe, workerType.
tdarr_stats_space_saved_addC
Add a space saved record
Inputs: libraryId, spaceSaved.
tdarr_statusB
Check server status
Inputs: no named parameters.
tdarr_stop_dedupeB
Stop the dedupe process
Inputs: no named parameters.
tdarr_sync_pluginsA
Sync plugins from server to all nodes
Inputs: no named parameters.
tdarr_toggle_folder_watchC
Enable/disable folder watching on a library
Inputs: auto (required), dbID (required), folder (required), status (required).
tdarr_toggle_scheduleC
Update the schedule of a library
Inputs: end (required), dbID (required), type (required), start (required).
tdarr_transcode_user_verdictC
Take action on a staged item
Inputs: obj (required), verdict (required).
tdarr_update_audio_codec_excludeA
Update an audio codec excluded/included status in basic audio transcoding settings
Inputs: ele (required), dbID (required), status (required).
tdarr_update_nodeC
Update a connected node from the UI
Inputs: nodeID (required), nodeUpdates (required).
tdarr_update_node_relayC
Update the server with node status (used by nodes)
Inputs: nodeID (required), workers (required), resStats (required).
tdarr_update_plugin_includeB
Enable/disable a plugin in a classic plugin stack
Inputs: ele (required), dbID (required), status (required).
tdarr_update_pluginsB
Request the server to update community plugins
Inputs: force (required).
tdarr_updater_checkC
Check if an update is available
Inputs: applyUpdate (required), resetUpdater (required), downloadUpdate (required).
tdarr_updater_package_indexB
Get the package index
Inputs: no named parameters.
tdarr_updater_relaunchA
Relaunch Tdarr Server when an update is ready
Inputs: no named parameters.
tdarr_update_schedule_blockB
Update a block in a library schedule
Inputs: ele (required), dbID (required), status (required).
tdarr_update_video_codec_excludeC
Update a video codec excluded/included status in basic video transcoding settings
Inputs: ele (required), dbID (required), status (required).
tdarr_use_tokenD
Use a token
Inputs: token (required), redirect (required).
tdarr_verify_folder_existsB
Verify if a folder exists
Inputs: folderPath (required).
tdarr_verify_pluginC
Verify if a classic plugin exists
Inputs: pluginID (required), community (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 105 tools
While most tools are named by resource+action, several generic database accessors overlap: tdarr_cruddb, tdarr_client, and legacy tdarr_search_db all provide table/file lookups or updates. tdarr_status/tdarr_is_server_alive and tdarr_read_plugin/tdarr_read_plugin_text also blur boundaries, so an agent may not reliably pick the right tool.
All tools share the tdarr_ prefix and mostly use snake_case verb_noun names, but conventions are mixed: generic tools like tdarr_cruddb, tdarr_client, tdarr_status, tdarr_debug, and tdarr_item_proc_end break the verb_noun pattern, while stats_get_* and auth_*/admin_*/public_auth_* introduce different orderings. The pattern is readable but not predictable enough for a set this large.
105 tools is far beyond a typical MCP surface and includes low-level node handshake/relay methods, updater mechanics, and raw database access that duplicate higher-level operations. The sheer count makes browsing and selection impractical, fitting the extreme mismatch calibration.
The set covers most Tdarr workflows: backups, libraries/scans, transcode decisions, plugins, nodes, stats, auth, and job reports. It lacks explicit library create/delete operations and some higher-level flow management, but the generic db/client tools and broad coverage mean agents can work around minor gaps.
Maintenance
Related MCP Connectors
MCP server for the FFmpeg Micro video transcoding API — create, monitor, download transcodes.
Hosted MCP tools for FFmpeg-style video and audio processing through FFMPEG API.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for managing Transmission BitTorrent client. Provides tools to add, remove, monitor, and control torrents, as well as configure session settings.151MIT
- AlicenseAqualityCmaintenanceMCP server to manage your *ARR media stack (Radarr, Sonarr, Lidarr, Readarr, Prowlarr) for searching, adding, and managing movies, TV shows, music, books, and indexers.1ISC
- AlicenseNot gradedqualityCmaintenanceA FastMCP server that exposes Tdarr's OpenAPI endpoints as MCP tools, enabling management and monitoring of Tdarr transcoding jobs.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that enables local LLMs to manage a home media stack including Radarr, Sonarr, Prowlarr, and others.MIT