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 |
Capabilities
Features and capabilities supported by this server
| 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 | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/miller-joe/youtube-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server