youtube-transcript-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| YTA_GL | No | Region sent to YouTube; affects track display names. | US |
| YTA_HL | No | Interface language sent to YouTube; affects track display names. | en |
| YTA_YTDLP | No | auto uses a local yt-dlp as fallback, always puts it first, never disables it. | auto |
| YTA_COOKIES | No | Raw Cookie header, for age-restricted or your own private videos. | |
| YTA_RETRIES | No | Retries for transport-level failures, with backoff. | 2 |
| YTA_MAX_CHARS | No | Transcript cap per call; truncation is reported, not hidden. | 200000 |
| YTA_PROVIDERS | No | Override the provider order. | innertube,watch-page,yt-dlp |
| YTA_TIMEOUT_MS | No | Timeout per HTTP request. | 20000 |
| YTA_USER_AGENT | No | Sent on every request. | desktop Chrome UA |
| YTA_YTDLP_PATH | No | Path to the yt-dlp binary. | yt-dlp |
| YTA_CACHE_TTL_MS | No | In-memory transcript cache lifetime. | 300000 |
| YTA_COOKIES_FILE | No | Netscape cookie file (the format browser extensions and yt-dlp emit); parsed for HTTP and passed to yt-dlp. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| youtube_get_transcriptA | Return the transcript of a YouTube video, from any YouTube URL. Handles watch / youtu.be / shorts / live / embed / music / nocookie links and bare video ids. If the video has no captions it fails with code NO_TRANSCRIPT instead of inventing text; if the requested language is missing it fails with LANGUAGE_UNAVAILABLE plus the available list. Use output=segments for timestamped cues, or timestamps=true for [mm:ss] prefixed lines. |
| youtube_list_languagesA | List every caption track a video offers, marking which are auto-generated. Use it after LANGUAGE_UNAVAILABLE, or to decide what youtube_get_transcript can return. hasCaptions=false means the video has no transcript at all. |
| youtube_video_infoA | Cheap report for one video: title, author, duration, whether captions exist and in which languages. Call it before a batch of transcript requests, or to explain why a transcript is missing. |
| youtube_parse_urlA | Offline parse of a YouTube reference: video id, playlist id, start offset and how it was recognised. Makes no network requests. Useful for validating a link and explaining playlist, channel or clip links. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 4 tools
Each tool targets a distinct concern: parsing URLs, fetching transcripts, listing caption languages, and summarizing video info. Although list_languages and video_info both mention captions, their purposes are clearly separated (exploring vs. explaining/planning).
All tool names follow the consistent pattern youtube_<verb>_<object>: parse_url, get_transcript, list_languages, video_info. The style is uniform and predictable across the set.
Four tools is a well-scoped size for a focused YouTube transcript server. Each tool serves a clear function without redundancy or bloat, covering the primary workflow.
The surface covers the core transcript workflow completely: parse/validate references, fetch transcripts, list available languages, and get video-level metadata to explain missing captions. There are no dead ends for the stated purpose.