mcp-youtube
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_YOUTUBE_CLIENT_ID | Yes | OAuth client ID | |
| MCP_YOUTUBE_CLIENT_SECRET | Yes | OAuth client secret | |
| MCP_YOUTUBE_REFRESH_TOKEN | Yes | long-lived refresh token |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| searchA | Search YouTube for videos, channels, or playlists. Costs 100 quota units per call — use sparingly. |
| list-playlistsA | List the authenticated user's playlists. Costs 1 quota unit per call. |
| get-playlistB | Read a playlist's items/contents. Costs 1 quota unit per call. |
| create-playlistB | Create a new playlist. Costs 50 quota units. |
| add-to-playlistA | Add one or more videos to a playlist. Costs 50 quota units per video. |
| remove-from-playlistA | Permanently remove specific items from a playlist by playlist-item ID. Costs 50 quota units per item. Requires confirm: true. |
| clean-playlistA | Scan a playlist (1 unit/page) and plan removal of [Deleted video]/[Private video] tombstones, duplicates, and/or videos from given channels. Defaults to dry-run (dryRun: true) — returns the plan without deleting. Pass dryRun: false to actually delete, at 50 quota units per item. |
| delete-playlistA | Permanently delete an entire playlist. Costs 50 quota units. Requires confirm: true. |
| update-playlistA | Rename, re-describe, or change the privacy of a playlist. Full-replace on the snippet/status parts — reads the current playlist first so omitted fields aren't blanked. Costs 50 quota units. |
| update-playlist-itemA | Move a playlist item to a new position (reorder). Costs 50 quota units. |
| list-videosA | Fetch metadata, status, and statistics for up to 50 videos by ID. Costs 1 quota unit per call. |
| update-videoA | Update a video's title, description, category, tags, privacy, and related status flags. Full-replace on the snippet/status parts — reads the current video first so omitted fields aren't blanked. Costs 50 quota units. |
| rate-videoA | Like, dislike, or clear your rating on a video. Costs 50 quota units. |
| get-video-ratingA | Get the authenticated user's rating (like/dislike/none) for up to 50 videos. Costs 1 quota unit per call. |
| delete-videoA | Permanently delete a video you own. Costs 50 quota units. Requires confirm: true. |
| upload-videoA | Upload a video from a local file path via resumable upload. This is the most expensive tool in the server — costs 1600 quota units, 16% of the default daily budget. |
| report-video-abuseA | Report a video to YouTube for abuse/policy violation. Costs 50 quota units. Irreversible outward action — requires confirm: true. |
| update-channelA | Update your channel's branding metadata (title, description, keywords, trailer, language, country). Full-replace on the brandingSettings part — reads the current settings first so omitted fields aren't blanked. Costs 50 quota units. |
| list-channelsA | List the authenticated user's own channel(s) with snippet, statistics, and status. Costs 1 quota unit per call. |
| list-channel-sectionsA | List channel sections (the shelves shown on a channel's homepage) for a channel, or your own if channelId is omitted. Costs 1 quota unit per call. |
| create-channel-sectionA | Create a new channel section (homepage shelf). Costs 50 quota units. |
| update-channel-sectionA | Update an existing channel section. Full-replace on the snippet/contentDetails parts — reads the current section first so omitted fields aren't blanked. Costs 50 quota units. |
| delete-channel-sectionA | Permanently delete a channel section. Costs 50 quota units. Requires confirm: true. |
| list-subscriptionsA | List the authenticated user's channel subscriptions. Costs 1 quota unit per call. |
| subscribeB | Subscribe to a channel. Costs 50 quota units. |
| unsubscribeA | Unsubscribe from a channel. Costs 50 quota units. Requires confirm: true. |
| list-commentsA | List replies under a top-level comment. Costs 1 quota unit per call. |
| reply-to-commentA | Reply to an existing top-level comment. Costs 50 quota units. |
| update-commentA | Edit the text of a comment you posted. Costs 50 quota units. |
| delete-commentA | Permanently delete a comment. Costs 50 quota units. Requires confirm: true. |
| set-comment-moderation-statusA | Set the moderation status of one or more comments on your videos — publish, hold for review, or reject (hide from public view; the current replacement for the removed markAsSpam method). Costs 50 quota units. Requires confirm: true. |
| list-comment-threadsA | List top-level comment threads for a video or channel. Costs 1 quota unit per call. |
| create-comment-threadA | Post a new top-level comment on a video or channel. Costs 50 quota units. |
| list-captionsA | List caption tracks for a video. Costs 50 quota units. |
| upload-captionA | Upload a new caption track from a local file (SRT/VTT/SBV/TTML). Costs 400 quota units. |
| update-captionA | Update a caption track's draft status, optionally re-uploading its file from a local path. Costs 450 quota units. |
| download-captionB | Download a caption track to a local file path. Costs 200 quota units. |
| delete-captionA | Permanently delete a caption track. Costs 50 quota units. Requires confirm: true. |
| set-thumbnailA | Upload and set a video's custom thumbnail from a local image file. Costs 50 quota units. |
| set-watermarkA | Upload and set a channel's video watermark from a local image file. Costs 50 quota units. |
| unset-watermarkA | Remove a channel's video watermark. Costs 50 quota units. Requires confirm: true. |
| list-activitiesA | List recent channel activity (uploads, likes, playlist additions, etc.) for a channel, or your own if channelId is omitted. Costs 1 quota unit per call. |
| list-playlist-imagesA | List cover images for a playlist. Costs 1 quota unit per call. |
| upload-playlist-imageA | Upload a cover image for a playlist from a local file. Costs 50 quota units. |
| update-playlist-imageA | Replace a playlist cover image's file. Costs 50 quota units. |
| delete-playlist-imageA | Permanently delete a playlist cover image. Costs 50 quota units. Requires confirm: true. |
| list-membersA | List members of your channel's memberships program. Costs 1 quota unit per call. MONETISATION-GATED: 403s unless the channel is an active YouTube Partner Program channel with memberships enabled. |
| list-membership-levelsA | List your channel's membership pricing levels. Costs 1 quota unit per call. MONETISATION-GATED: 403s unless the channel is an active YouTube Partner Program channel with memberships enabled. |
| list-video-categoriesA | List assignable video categories for a region. Costs 1 quota unit per call. |
| list-i18n-languagesA | List the application languages supported by YouTube. Costs 1 quota unit per call. |
| list-i18n-regionsA | List the content regions supported by YouTube. Costs 1 quota unit per call. |
| list-video-abuse-report-reasonsA | List the reason IDs accepted by report-video-abuse. Costs 1 quota unit per call. |
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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/kud/mcp-youtube'
If you have feedback or need assistance with the MCP directory API, please join our Discord server