Ytdl R MCP server
{
"mcpServers": {
"dinglebear-ytdl-r": {
"command": "npx",
"args": [
"-y",
"ytdl-rmcp@latest"
],
"env": {
"YTDLP_TARGET_PATH": "/path/to/directory",
"YTDLP_VIDEO_TARGET_PATH": "/path/to/directory",
"YTDLP_REMOTE_PATH": "/path/to/directory",
"YTDLP_VIDEO_REMOTE_PATH": "/path/to/directory",
"YTDLP_HISTORY_PATH": "/path/to/directory",
"YTDLP_PLEX_URL": "https://..."
}
}
}
}{
"mcpServers": {
"dinglebear-ytdl-r": {
"command": "npx",
"args": [
"-y",
"ytdl-rmcp@latest"
],
"env": {
"YTDLP_TARGET_PATH": "/path/to/directory",
"YTDLP_VIDEO_TARGET_PATH": "/path/to/directory",
"YTDLP_REMOTE_PATH": "/path/to/directory",
"YTDLP_VIDEO_REMOTE_PATH": "/path/to/directory",
"YTDLP_HISTORY_PATH": "/path/to/directory",
"YTDLP_PLEX_URL": "https://..."
}
}
}
}{
"mcpServers": {
"dinglebear-ytdl-r": {
"command": "npx",
"args": [
"-y",
"ytdl-rmcp@latest"
],
"env": {
"YTDLP_TARGET_PATH": "/path/to/directory",
"YTDLP_VIDEO_TARGET_PATH": "/path/to/directory",
"YTDLP_REMOTE_PATH": "/path/to/directory",
"YTDLP_VIDEO_REMOTE_PATH": "/path/to/directory",
"YTDLP_HISTORY_PATH": "/path/to/directory",
"YTDLP_PLEX_URL": "https://..."
}
}
}
}{
"servers": {
"dinglebear-ytdl-r": {
"command": "npx",
"args": [
"-y",
"ytdl-rmcp@latest"
],
"env": {
"YTDLP_TARGET_PATH": "${input:ytdlp_target_path}",
"YTDLP_VIDEO_TARGET_PATH": "${input:ytdlp_video_target_path}",
"YTDLP_REMOTE_PATH": "${input:ytdlp_remote_path}",
"YTDLP_VIDEO_REMOTE_PATH": "${input:ytdlp_video_remote_path}",
"YTDLP_HISTORY_PATH": "${input:ytdlp_history_path}",
"YTDLP_PLEX_URL": "${input:ytdlp_plex_url}"
}
}
},
"inputs": [
{
"id": "ytdlp_target_path",
"type": "promptString",
"description": "Ytdlp target path",
"password": true
},
{
"id": "ytdlp_video_target_path",
"type": "promptString",
"description": "Ytdlp video target path",
"password": true
},
{
"id": "ytdlp_remote_path",
"type": "promptString",
"description": "Ytdlp remote path",
"password": true
},
{
"id": "ytdlp_video_remote_path",
"type": "promptString",
"description": "Ytdlp video remote path",
"password": true
},
{
"id": "ytdlp_history_path",
"type": "promptString",
"description": "Ytdlp history path",
"password": true
},
{
"id": "ytdlp_plex_url",
"type": "promptString",
"description": "Ytdlp plex url",
"password": true
}
]
}{
"mcpServers": {
"dinglebear-ytdl-r": {
"command": "npx",
"args": [
"-y",
"ytdl-rmcp@latest"
],
"env": {
"YTDLP_TARGET_PATH": "/path/to/directory",
"YTDLP_VIDEO_TARGET_PATH": "/path/to/directory",
"YTDLP_REMOTE_PATH": "/path/to/directory",
"YTDLP_VIDEO_REMOTE_PATH": "/path/to/directory",
"YTDLP_HISTORY_PATH": "/path/to/directory",
"YTDLP_PLEX_URL": "https://..."
}
}
}
}file .mcp.json (in your project root)file claude_desktop_config.jsonfile ~/.cursor/mcp.jsonfile .vscode/mcp.jsonfile ~/.codeium/windsurf/mcp_config.jsoninstall npx -y ytdl-rmcpversion 1.0.2
What it does
This server wraps yt-dlp for searching, downloading, and managing YouTube media over MCP and CLI. It handles audio/video downloads with metadata tagging, transfers to local/SSH/rclone destinations, and can sync completed downloads into Plex playlists. Built in Rust and designed for personal media workflows with clear trust boundaries.
- Search YouTube for content and retrieve metadata without downloading.
- Download audio or video with automatic metadata tagging and organize files for media server indexing.
- Transfer downloaded media to remote destinations via SSH or rclone, with retry support for failed transfers.
Tools this server exposes
| Tool | Does |
|---|---|
| youtube_search | Search YouTube through yt-dlp and return result URLs without downloading media. |
| youtube_search_ui | Open an interactive YouTube search UI in MCP App. |
| youtube_download | Download audio, video, or both into a staging tree with metadata tagging and transfer to specified destinations. |
| youtube_probe | Retrieve metadata and extraction details for a YouTube URL without downloading. |
| youtube_identify | Fingerprint downloaded audio through AcoustID/MusicBrainz for music identification. |
| youtube_stats | Expose statistics and history from the JSONL download ledger. |
| youtube_plex_playlist | Build or sync Plex playlists from successful download transfer history. |
| youtube_transfer_queue | Drain server-made retained-staging transfer manifests for retry or cleanup. |
Before you enable it
An MCP server runs with whatever access you give it. Start with a development account rather than production, and check which tools the server exposes before you let an agent call them unattended.