YouTube Knowledge MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP port. The Docker image sets 10000; Render and similar platforms inject their own | 3000 |
| MCP_MODE | No | http selects the HTTP transport when no --http flag is given | |
| MCP_BIND_HOST | No | Interface to bind. The Docker image sets 0.0.0.0. A non-loopback bind refuses to start without MCP_AUTH_TOKEN unless MCP_ALLOW_UNAUTHENTICATED=true | 127.0.0.1 |
| MCP_AUTH_TOKEN | No | Require this bearer token on the HTTP transport. Set this if you expose the server beyond localhost. | |
| MCP_PUBLIC_URL | No | The URL clients reach the server at; used in the OAuth metadata it publishes instead of the request's Host | |
| MCP_RATE_LIMIT | No | Requests per window, per client | 60 |
| MCP_TRUST_PROXY | No | true, false, or the number of reverse-proxy hops whose X-Forwarded-* headers to believe. Off, forwarded headers are ignored for rate limiting and URLs | false |
| MCP_MAX_SESSIONS | No | Reject new sessions past this many | 1000 |
| MCP_ALLOWED_HOSTS | No | Comma-separated Host allowlist; enables DNS-rebinding protection | |
| YOUTUBE_MCP_PROXY | No | An http, https, socks4 or socks5 proxy URL for yt-dlp | |
| MCP_MAX_BODY_BYTES | No | Largest request body accepted | 1048576 |
| MCP_RATE_WINDOW_MS | No | Rate-limit window | 60000 |
| MCP_ALLOWED_ORIGINS | No | Comma-separated Origin allowlist | |
| MCP_SESSION_IDLE_MS | No | Close HTTP sessions idle this long | 1800000 |
| YOUTUBE_MCP_COOKIES_FILE | No | A Netscape-format cookies file inside your home directory, as an alternative to a browser | |
| MCP_ALLOW_UNAUTHENTICATED | No | Explicit consent to listen on a network interface with no token | false |
| YOUTUBE_MCP_MAX_CONCURRENCY | No | Concurrent yt-dlp processes | 3 |
| YOUTUBE_MCP_SLEEP_REQUESTS_S | No | Seconds yt-dlp sleeps between its own requests, to stay under YouTube's limits | |
| YOUTUBE_MCP_TRANSCRIPT_TTL_MS | No | Transcript cache lifetime | 30 days |
| YOUTUBE_MCP_COOKIES_FROM_BROWSER | No | Browser whose cookies yt-dlp should read: brave, chrome, chromium, edge, firefox, opera, safari, vivaldi or whale. See Signed-in content |
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 |
|---|---|
| search_videosA | Search YouTube for videos by keyword or phrase. Returns video IDs, titles, durations, channels, view counts, and URLs. Results sorted by relevance. |
| fetch_videosA | List videos from a YouTube playlist or channel. Returns video IDs, titles, durations, upload dates, and URLs. Sorted by playlist or channel order. |
| get_video_infoA | Get detailed metadata for a single YouTube video. Returns title, channel, duration, upload date, view count, like count, comment count, description, tags, and thumbnail URL. |
| get_transcriptA | Extract the full transcript from a YouTube video. Supports auto-generated and manual captions. Returns plain text with word count and detected language. Results are cached locally. |
| get_chaptersA | Extract chapter markers and timestamps from a YouTube video. Returns chapter titles with start and end times. Not all videos have chapters. Returns empty list if none found. |
| get_commentsA | Get top comments from a YouTube video sorted by popularity. Returns author, text, like count, and pinned status. Only top-level comments, no replies. |
| get_channel_infoA | Get metadata for a YouTube channel. Returns channel name, handle, subscriber count, description, and channel URL. |
| search_channelsA | Search YouTube for channels by keyword or phrase. Returns channel names, handles, subscriber counts, descriptions, and URLs. |
| get_playlist_infoA | Get metadata for a YouTube playlist. Returns title, channel, video count, last updated date, and description. |
| list_formatsA | List all available download formats for a YouTube video. Returns format IDs, extensions, resolutions, FPS, codecs, and file sizes. Grouped by video+audio, video-only, and audio-only. |
| save_to_libraryA | Save a summary or skill note to the local YouTube knowledge library. Overwrites existing content of the same type for the same video. Returns the saved file path. |
| list_libraryA | List all saved items in the local YouTube knowledge library. Returns titles, channels, content types, tags, and save dates. Optionally filter by tag. Sorted by most recently saved. |
| download_videoA | Download a YouTube video to local disk. Use the quality parameter for automatic format selection with smart fallbacks, or formatId for a specific format from list_formats. Returns the downloaded file path, title, and format details. |
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 13 tools
Each tool targets a distinct resource/action combination: searching vs fetching videos, retrieving metadata, transcripts, chapters, comments, channel info, playlist info, formats, downloading, and library operations. No two tools appear to do the same thing.
The vast majority use a consistent verb_noun pattern (get_video_info, search_channels, list_formats). The only deviation is 'save_to_library' which uses a preposition, but it's still clear and readable.
13 tools is well within the ideal 3-15 range and each tool serves a necessary function for the server's purpose of YouTube knowledge management—no redundancy or bloat.
The surface covers search, retrieval, metadata, transcripts, chapters, comments, channels, playlists, download, and library save/list. Minor gap: no explicit delete or update for library items, though save_to_library does overwrite.