YouTube Research MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| YT_DLP | No | Enable or disable the yt-dlp helper | on |
| YT_DEBUG | No | Log every YouTube request (status, queue wait, latency) to stderr | off |
| YT_PROXY | No | HTTP(S) proxy for all YouTube requests, yt-dlp and ffmpeg | none |
| FFMPEG_PATH | No | Path to the ffmpeg binary | ffmpeg |
| YT_DLP_PATH | No | Path to the yt-dlp binary | yt-dlp |
| YT_MCP_TOOLS | No | Comma-separated tools to expose | all |
| YT_MIN_GAP_MS | No | Minimum gap between API requests (ms) for the API request queue | 120 |
| YT_TIMEOUT_MS | No | Per-request timeout (ms) | 15000 |
| YT_CACHE_TTL_MS | No | In-memory cache lifetime (ms) | 900000 |
| YT_CAPTION_GAP_MS | No | Minimum gap between caption downloads (ms) | 350 |
| YT_MAX_CONCURRENCY | No | API request queue concurrency | 4 |
| YT_FRAME_MAX_HEIGHT | No | Stream quality height used for frames | 720 |
| YT_FRAME_CONCURRENCY | No | Number of parallel ffmpeg processes for frames | 3 |
| YT_IOS_CLIENT_VERSION | No | Override the Innertube iOS client version if YouTube starts rejecting it | built in |
| YT_WEB_CLIENT_VERSION | No | Override the Innertube web client version if YouTube starts rejecting it | built in |
| YT_CAPTION_CONCURRENCY | No | Caption download queue concurrency | 2 |
| YT_CAPTION_COOLDOWN_MS | No | First pause after a caption 429 (doubles per repeat, max 15 min) | 60000 |
| YT_ANDROID_CLIENT_VERSION | No | Override the Innertube Android client version if YouTube starts rejecting it | built in |
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_searchA | Search YouTube videos and get back ready-to-use results with transcript highlights: the passages where each video actually talks about your topic, with timestamped links. Best for: finding videos on a topic, finding what creators say about something, collecting examples (hooks, claims, tutorials) across many videos. Returns: one merged, de-duplicated list across all queries. Each video has metadata (channel, views, date, duration, views/day), YouTube's matched snippet and key moments, plus transcript highlights for the top results. Query tips:
|
| youtube_fetchA | Read YouTube videos: transcript (whole, a time range, a chapter, or only passages matching a query), real video frames, details, chapters, comments and thumbnail. Batch many videos in one call. Best for: reading what was said after youtube_search, pulling the same slice from many videos (e.g. the first 30 s of each video to study hooks), quoting with exact timestamps. Returns: per video a header (title, channel, exact publish date, views, likes, duration) and the requested parts. Transcript lines carry [m:ss] stamps; links with ?t= jump to the moment. Per-video failures are reported inline, never dropped. Tips:
|
| youtube_channelA | List a channel's videos with an outlier score: how many times more views a video got than the channel's median. Best for: finding a creator's breakout videos (the ones whose hooks/titles/topics worked), reviewing recent uploads, building a list of videos to fetch. Returns: channel stats (subscribers, video count) and videos with views, outlier ×median, date, duration. The median is computed over the videos listed, so list enough (30+) for a fair baseline. |
| youtube_doctorA | Check that every YouTube path this server uses works from this machine right now (search, video details, transcripts, watch page, channels, yt-dlp and ffmpeg for frames), with timings. Run it when other youtube_* tools fail. |
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 has a clearly distinct role: search discovers videos, fetch reads specific videos, channel lists a single channel's videos with outlier scoring, and doctor diagnoses connectivity. The only mild overlap is that search and channel both return video lists, but their query-based vs. per-channel framing is spelled out clearly.
All tools share the youtube_ prefix and snake_case, giving a strong predictable pattern. There is a minor deviation in that search/fetch are verbs while channel/doctor are nouns, but the convention is still readable and consistent.
Four tools is well-scoped for a focused research server, and each earns its place: discovery, deep reading, channel analysis, and diagnostics. No tool feels redundant or tacked on.
The surface covers the core research lifecycle: find videos, read transcripts/frames/comments, analyze channels, and self-diagnose failures. Minor gaps remain, such as no dedicated playlist handling or channel/creator search, but agents can work around these.