The useful half is the reading side: transcripts, metadata and comment threads come back structured and truncated to stay inside a context window, so a video becomes something a model can actually analyse. Downloads are there too, and they honour the yt-dlp config file you already have.
A wrapper around the yt-dlp command-line downloader. Every tool name is prefixed with ytdlp_ so it will not collide with other servers, and every call runs locally against yt-dlp rather than a third-party API.
- Search YouTube with pagination and an upload-date filter, returned as JSON or Markdown
- List a video's subtitle languages, then download the VTT with timestamps or a cleaned plain-text transcript
- Download a video at 480p, 720p, 1080p or best, optionally trimmed to a start and end time
- Download audio only, in the best available M4A or MP3
- Full video metadata as JSON, or a short human-readable summary of the key fields
- Comments as flat JSON, threaded JSON, or a Markdown tree that keeps reply branches intact
Yt-dlp installed on the host - winget on Windows, brew on macOS, pip on Linux. The server itself runs with npx @kevinwatt/yt-dlp-mcp@latest, no account or key. Cookie-based access to private or age-restricted video additionally needs deno, because YouTube's authenticated endpoints require JavaScript challenge solving.
One command — npx -y @kevinwatt/yt-dlp-mcp@latest
