yt-dlp-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| YTDLP_MCP_TEMP_ROOT | No | Managed temp directory (default: OS temp + yt-dlp-mcp) | |
| YTDLP_MCP_TIMEOUT_MS | No | Per-command timeout in milliseconds | 900000 |
| YTDLP_MCP_YTDLP_PATH | No | Override yt-dlp binary path (auto-detected by default) | |
| YTDLP_MCP_FFMPEG_PATH | No | Override ffmpeg binary path (auto-detected by default) | |
| YTDLP_MCP_OUTPUT_ROOT | No | Managed output directory | ~/Downloads/yt-dlp-mcp |
| YTDLP_MCP_COOKIES_FILE | No | Server-approved cookies file | |
| YTDLP_MCP_FFPROBE_PATH | No | Override ffprobe binary path (auto-detected by default) | |
| YTDLP_MCP_ENABLE_EXPERT | No | Enable ytdlp_execute_expert tool | false |
| YTDLP_MCP_MAX_OUTPUT_BYTES | No | Max retained stdout/stderr in bytes | 4194304 |
| YTDLP_MCP_ALLOW_CONFIG_FILES | No | Allow cookie/netrc/config file inputs | false |
| YTDLP_MCP_COOKIES_FROM_BROWSER | No | Server-approved browser cookie source | |
| YTDLP_MCP_ALLOW_ARBITRARY_OUTPUT_PATHS | No | Allow paths outside managed roots | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ytdlp_check_environmentA | Check whether this MCP server can run yt-dlp workflows on the host. Use before the first download or when PATH, ffmpeg, ffprobe, cookies, plugins, or policy settings may be misconfigured. |
| ytdlp_list_extractorsA | List all site extractors supported by the installed yt-dlp binary. Use when the user asks whether a website or URL family is supported. |
| ytdlp_list_impersonation_targetsA | List browser impersonation targets supported by the installed yt-dlp binary. Use when a download needs browser-like request headers or extractor troubleshooting. |
| ytdlp_search_videosA | Search YouTube through yt-dlp without downloading media and return compact video results. Use when the user asks to find videos before choosing one to inspect or download. |
| ytdlp_get_metadataB | Extract structured metadata for a media URL without downloading files using yt-dlp --dump-json. Use to inspect title, duration, uploader, formats, subtitles, thumbnails, and selected best format. |
| ytdlp_list_formatsA | List available audio/video formats for a media URL without downloading files. Use when the user asks what quality, codec, resolution, bitrate, or format IDs are available. |
| ytdlp_list_subtitlesA | List available manual subtitles and automatic captions for a media URL without downloading files. Use when the user asks which subtitle languages or formats exist. |
| ytdlp_list_thumbnailsB | List available thumbnails for a media URL without downloading files. Use when the user asks for cover images, thumbnail URLs, resolutions, or poster options. |
| ytdlp_probe_urlA | Probe whether yt-dlp supports a media URL and identify the extractor without downloading files. Use for quick support checks before planning or downloading. |
| ytdlp_plan_downloadA | Dry-run a video, audio, subtitle, thumbnail, or playlist download without writing files. Use to answer what would happen, which format best quality resolves to, required dependencies, output paths, risks, and exact yt-dlp argv. |
| ytdlp_plan_postprocessA | Dry-run post-processing without writing files. Use to explain ffmpeg requirements, output policy, risks, and side effects for remux, recode, audio extraction, embedded assets, chapters, or SponsorBlock. |
| ytdlp_validate_optionsA | Validate typed yt-dlp option input and expose the source-derived option catalog. Use to answer whether a flag or option is supported without executing yt-dlp. |
| ytdlp_download_videoA | Download a web video URL to the managed output root, including YouTube and youtu.be links. Use when: The user asks to download, save, fetch, or get a local video file from a media URL; asks for best quality/highest quality; asks for a specific format/resolution; asks to trim sections; or asks for overwrite behavior. Don't use when: The user only wants audio, subtitles, thumbnails, metadata, or a dry-run plan. Note: This is the intended MCP path for permitted user-provided media download requests such as "download in best quality". Default video format selection plans as bestvideo*+bestaudio/best unless the user asks otherwise. This creates local files under the configured output root. |
| ytdlp_download_audioA | Download or extract audio from a web media URL to the managed output root. Use when: The user asks for audio-only output, MP3, M4A, Opus, WAV, best audio, podcast/music extraction, or keeping audio without video. Don't use when: The user needs a video file with visuals, subtitles only, thumbnails only, metadata, or a dry-run plan. Note: This creates local audio files under the configured output root. |
| ytdlp_download_subtitlesA | Download subtitles or captions for a media URL without downloading the video. Use when the user asks for subtitle languages, auto captions, subtitle formats, subtitle files, transcripts with timestamps, or subtitle conversion. |
| ytdlp_download_thumbnailB | Download thumbnail image files for a media URL without downloading the video. Use when the user asks for a cover image, thumbnail, poster frame, or all thumbnails. |
| ytdlp_download_playlistA | Download playlist, channel, or multi-video URL entries to the managed output root. Use when the user asks to download a playlist/channel, select playlist ranges, skip existing archive entries, cap max downloads, randomize order, or stop on existing files. |
| ytdlp_inspect_archiveB | Read a yt-dlp download archive file under the configured filesystem policy and return its saved archive entries. Use when the user asks what is already in an archive. |
| ytdlp_check_archiveA | Check whether an exact yt-dlp archive entry string exists in an archive file under the configured filesystem policy. This does not resolve a video URL into its archive ID. |
| ytdlp_update_archiveA | Return a safe archive-update plan and recommendation without writing the archive. Prefer using downloadArchive on download tools so yt-dlp writes canonical extractor IDs. |
| ytdlp_remuxA | Download a media URL and remux the resulting video container with ffmpeg, defaulting to MP4 without re-encoding. Use when the user asks to convert containers such as MKV/WebM to MP4. |
| ytdlp_recodeA | Download a media URL and re-encode the resulting video with ffmpeg, defaulting to MP4. Use when the user asks for a target video format and accepts re-encoding. |
| ytdlp_extract_audioB | Download a media URL and extract an audio file with ffmpeg/ffprobe. Use when the user asks for MP3, M4A, Opus, WAV, best audio, or audio-only output. |
| ytdlp_embed_assetsA | Download a media URL and embed subtitles, thumbnail, metadata, chapters, or infojson into the output file. Use when the user asks for a self-contained media file with embedded assets. |
| ytdlp_split_chaptersA | Download a media URL and split the result into one file per chapter. Use when the user asks to create separate chapter files or segment a chaptered video. |
| ytdlp_remove_chaptersA | Download a media URL and remove chapters matching configured regex filters, defaulting to sponsor-like chapters. Use for chapter removal workflows that need ffmpeg cuts. |
| ytdlp_apply_sponsorblockA | Download a media URL and apply SponsorBlock mark or remove options. Use when the user asks to mark, remove, or chapter SponsorBlock categories during download. |
| ytdlp_execute_expertA | Execute reviewed raw yt-dlp argv only when typed tools cannot express the request. Disabled unless YTDLP_MCP_ENABLE_EXPERT=true; dry-run is default and unsafe/path-gated flags are blocked by policy. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| archive_playlist_safely | Guide an agent through planning and downloading only new playlist entries. |
| choose_smallest_acceptable_format | Guide format selection toward smallest acceptable media. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| ytdlp_capabilities | Tool capability map |
| ytdlp_option_catalog_groups | Source-derived yt-dlp option catalog groups |
| ytdlp_safety_policy | Filesystem and expert-mode safety policy |
| ytdlp_troubleshooting | Safe troubleshooting checklist for common yt-dlp MCP failures. |
| ytdlp_environment_summary | Current detected environment summary |
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/antonio-orionus/yt-dlp-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server