The translate call fetches captions in a language — including YouTube's auto-translated ones — rather than machine-translating arbitrary text, and the README says so instead of letting the name imply more. Same for the parts still on the roadmap: Redis caching falls back to the memory cache, and the metrics endpoint returns a placeholder. Checking available languages before asking for one is the habit that avoids most empty responses.
A Go MCP server for fetching YouTube video transcripts, with in-memory caching, rate limiting and proxy rotation built in. It implements MCP protocol 2024-11-05 and ships both a stdio binary for clients and an HTTP mode for testing.
- A transcript for one video by URL or ID, with a language preference list and an option to preserve formatting — `get_transcript`
- Batch fetching across several videos in one call, with `continue_on_error` so one failure does not sink the run — `get_multiple_transcripts`
- Captions in a specified language, including YouTube's auto-translated captions where they exist — `translate_transcript`
- Reformatting into plain text, SRT, VTT and other formats — `format_transcript`
- The list of subtitle languages actually available for a video, before you ask for one — `list_available_languages`
No account and no key. Go 1.24 or higher; install with `go install github.com/kyong0612/youtube-mcp/cmd/mcp@latest`, rename the binary to youtube-mcp-stdio, then `claude mcp add youtube-transcript -- youtube-mcp-stdio`. Clients need the stdio binary, not the HTTP server. `YOUTUBE_DEFAULT_LANGUAGES`, `CACHE_ENABLED` and `LOG_LEVEL` are the environment variables worth setting. Docker Compose is supported for the HTTP mode.
One command — go install github.com/kyong0612/youtube-mcp/cmd/mcp@latest
