Rytdl MCP server
{
"mcpServers": {
"dinglebear-rytdl": {
"command": "npx",
"args": [
"-y",
"@dinglebear/rytdl@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-rytdl": {
"command": "npx",
"args": [
"-y",
"@dinglebear/rytdl@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-rytdl": {
"command": "npx",
"args": [
"-y",
"@dinglebear/rytdl@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-rytdl": {
"command": "npx",
"args": [
"-y",
"@dinglebear/rytdl@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-rytdl": {
"command": "npx",
"args": [
"-y",
"@dinglebear/rytdl@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 @dinglebear/rytdlversion 1.0.4
What it does
Rytdl exposes yt-dlp search, download, and metadata operations through MCP tools and a CLI. It handles audio and video downloads with proper tagging, transfer to local/SSH/rclone destinations, and optional Plex playlist integration, designed for personal media workflows with trusted callers.
- Search YouTube and retrieve video metadata without downloading files.
- Download audio or video from YouTube, tag the files with metadata, and transfer them to local or remote destinations.
- Create and maintain Plex playlists from downloaded audio with fingerprinting via AcoustID/MusicBrainz.
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_probe | Retrieve metadata and information about a YouTube video without downloading. |
| youtube_identify | Identify audio files and fingerprint them through AcoustID/MusicBrainz. |
| youtube_download | Download audio, video, or both from YouTube into a staging tree with metadata tagging. |
| youtube_stats | Retrieve download statistics and ledger information. |
| youtube_plex_playlist | Build and sync Plex playlists from download history. |
| youtube_transfer_queue | Drain server-made retained-staging transfer manifests. |
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.