youtube-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | Bind host for the server | 0.0.0.0 |
| MCP_PORT | No | Bind port for the server | 9120 |
| COMFYUI_URL | No | ComfyUI HTTP URL for bridge tools (optional, disables bridge if unset) | |
| YOUTUBE_CLIENT_ID | No | Google OAuth client ID | |
| YOUTUBE_TOKEN_FILE | No | Path to refresh token storage file | ~/.config/youtube-mcp/token.json |
| COMFYUI_DEFAULT_CKPT | No | Default checkpoint for bridge tool | sd_xl_base_1.0.safetensors |
| YOUTUBE_CLIENT_SECRET | No | Google OAuth client secret | |
| YOUTUBE_CLIENT_SECRET_FILE | No | Path to Google OAuth JSON client secret file |
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 |
|---|---|
| list_my_videosA | List videos on the authenticated channel (newest first via the uploads playlist). Returns video IDs, titles, view counts, and privacy status. |
| get_videoA | Fetch full details for one video by ID — snippet, status, statistics, duration. |
| delete_videoA | Permanently delete a video. Requires confirm_video_title to match the video's current title exactly — guards against deleting the wrong video by ID. Deletion is irreversible. |
| update_video_metadataA | Update a video's metadata — title, description, tags, category, or privacy. Only provide fields you want changed. |
| create_playlistB | Create a new playlist on the authenticated channel. Default privacy is 'private'. |
| add_to_playlistB | Add a video to an existing playlist. Both playlist_id and video_id are YouTube IDs (not URLs). |
| list_commentsB | List top-level comment threads on a video (newest first). Returns comment IDs, authors, text, and like counts. |
| reply_to_commentB | Reply to a top-level comment. Requires youtube.force-ssl scope. |
| moderate_commentA | Change the moderation status of a comment: heldForReview (hide pending approval), published (approve), or rejected (delete). |
| query_channel_analyticsA | Query YouTube Analytics for the authenticated channel. Returns tabular data — useful for views/watch-time/retention/traffic-source reports. Date-ranged and optionally grouped by dimensions. |
| list_captionsA | List caption tracks on a video with their language, name, status, and whether they are drafts. |
| upload_captionA | Upload a caption track (SRT or WebVTT) to a video. Creates a new track — use a distinct |
| delete_captionA | Delete a caption track by ID. Use list_captions to find the track ID first. |
| list_my_shortsA | List your recent Shorts — scans the most recent uploads and filters to videos ≤60s. Useful when the Data API doesn't expose a direct Shorts filter. |
| get_shorts_analyticsA | Query YouTube Analytics restricted to Shorts for the authenticated channel. Applies filters=creatorContentType==SHORTS on top of the usual start_date/end_date/metrics/dimensions knobs. |
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 15 tools
Each tool targets a distinct resource and action. Analytics tools are clearly differentiated (general vs Shorts-specific), and video list vs Shorts list is scoped by content type. Comments, captions, and playlists each have their own dedicated tools with no overlap.
All tool names follow a consistent verb_noun snake_case pattern (list_, get_, create_, update_, delete_, upload_, reply_to_, add_to_, moderate_, query_). There are no mixed conventions or cryptic abbreviations, making the naming predictable and easy to reason about.
15 tools cover a broad YouTube management surface without feeling bloated. The set is well-scoped for the server's purpose—video, playlist, caption, comment, and analytics operations—and each tool has a clear role within that scope.
The coverage has significant gaps, especially for playlists: there is no way to list, retrieve, delete, or remove items from playlists, creating dead ends after creation. Caption updates are also absent (only create and delete), although video CRUD and comment moderation are well covered.