YouTube MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| scopes | No | Comma-separated OAuth scopes (default includes readonly; add youtube.force-ssl and youtube.upload for full features) | |
| client_id | Yes | OAuth 2.0 Client ID from Google Cloud Console | |
| client_secret | Yes | OAuth 2.0 Client Secret from Google Cloud Console | |
| oauth_redirect_uri | No | Redirect URI for OAuth (default: http://localhost) |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_captionsA | Retrieves a list of caption tracks for a YouTube video. Returns an empty list if no captions exist, or fails if the video ID is invalid or not found. Args: video_id: The YouTube video ID for which to return caption tracks. part: Comma-separated list of caption resource parts to include. Valid parts are 'id' and 'snippet'. Default: 'id,snippet'. Returns: Object with 'data' (caption list), 'error' (if any), and 'successful' boolean. |
| download_caption_trackA | Downloads a specific YouTube caption track, which must be owned by the authenticated user, and returns its content as text. Args: id: Unique YouTube-assigned ID of the caption track to download (from list_captions response). tfmt: Desired format: 'srt' (SubRip), 'sbv' (SubViewer), 'vtt' (WebVTT). Default: 'srt'. Returns: Object with 'data' (contains 'content' with caption text), 'error' (if any), and 'successful' boolean. |
| get_channel_activitiesA | Gets recent activities from a YouTube channel including video uploads, playlist additions, likes, and other channel events. Args: channel_id: The YouTube channel ID to retrieve activities for. Channel IDs typically start with 'UC'. max_results: Maximum number of activities to return (0-50). page_token: Pagination token from a previous response to get the next page. part: Comma-separated list of activity resource properties to include (e.g., 'snippet', 'contentDetails', 'id'). published_after: Return activities published after this date-time (RFC 3339 format: YYYY-MM-DDTHH:MM:SSZ). published_before: Return activities published before this date-time (RFC 3339 format: YYYY-MM-DDTHH:MM:SSZ). Returns: Object with 'data', 'error' (if any), and 'successful' boolean. |
| get_channel_id_by_handleA | Retrieves the YouTube channel ID for a specific YouTube channel handle. Args: channel_handle: The YouTube channel handle (e.g., @Google) for which to retrieve the corresponding channel ID. May include or omit the '@' symbol. Returns: Object with 'data' (channel info including id), 'error' (if any), and 'successful' boolean. |
| get_channel_statisticsA | Gets detailed statistics for YouTube channels including subscriber counts, view counts, and video counts. Args: id: Comma-separated list of YouTube channel IDs. Channel IDs typically start with 'UC'. part: Comma-separated list of channel resource properties to include. Use 'statistics' for subscriber count. Default: 'statistics,snippet'. Returns: Object with 'data' (channel stats), 'error' (if any), and 'successful' boolean. |
| list_channel_videosA | Lists videos from a specified YouTube channel, ensuring results are of type 'video'. Args: channel_id: The unique ID of the YouTube channel for which videos are to be retrieved. max_results: Maximum number of videos to return per page (default 5, max 50). page_token: Token for pagination; use nextPageToken from a previous response. part: Search resource properties to include; must be 'snippet' for this action. Returns: Object with 'data' (video list), 'error' (if any), and 'successful' boolean. |
| list_user_playlistsA | Retrieves playlists owned by the authenticated user, implicitly using mine=true. Args: max_results: Maximum number of playlists to return (0-50). Default: 5. page_token: Token for pagination to retrieve a specific page of results. part: Comma-separated list of playlist resource properties to include. Common values are 'snippet', 'id', and 'contentDetails'. Default: 'snippet,contentDetails'. Returns: Object with 'data' (playlist list), 'error' (if any), and 'successful' boolean. |
| search_youtubeA | Searches YouTube for videos, channels, or playlists using a query term, returning the raw API response. Args: q: Search query term. Supports: basic text ('machine learning'), exact phrases ('"exact phrase"'), exclusions ('python -snake'), multiple terms ('AI OR ML'), channel search ('@channelhandle' or channel name). max_results: Maximum number of items to return per page (0-50). Default: 5. page_token: Pagination token from a previous response's nextPageToken or prevPageToken. part: Comma-separated list of search resource properties (e.g. 'id', 'snippet') to include. type: Restrict search to 'video', 'channel', or 'playlist'; comma-separate for multiple. Returns: Object with 'data' (raw API response), 'error' (if any), and 'successful' boolean. |
| list_user_subscriptionsA | Retrieves the authenticated user's YouTube channel subscriptions, allowing specification of response parts and pagination. Args: max_results: Maximum number of subscription items to return per page (0-50). Default: 5. page_token: Token for a specific page of results, obtained from a previous response. part: Comma-separated subscription resource parts to include. Valid parts are 'id', 'snippet', 'contentDetails', and 'subscriberSnippet'. Default: 'snippet,contentDetails'. Returns: Object with 'data' (subscription list), 'error' (if any), and 'successful' boolean. |
| subscribe_to_channelA | Subscribes the authenticated user to a specified YouTube channel, identified by its unique channelId which must be valid and existing. Args: channel_id: Unique identifier (ID) of the YouTube channel to subscribe to (typically starts with 'UC'). Returns: Object with 'data' (subscription resource), 'error' (if any), and 'successful' boolean. |
| update_thumbnailA | Sets the custom thumbnail for a YouTube video using an image from thumbnailUrl. The authenticated user must have permission to edit the video. Args: thumbnail_url: Publicly accessible URL of the new thumbnail image. Must be JPG, GIF, or PNG; under 2MB. Recommended: 16:9, 1280x720 (min 640px width). video_id: Identifier of the YouTube video for which to update the thumbnail. Returns: Object with 'data' (thumbnail resource), 'error' (if any), and 'successful' boolean. |
| update_videoA | Updates metadata for a YouTube video identified by videoId, which must exist. An empty list for tags removes all existing tags. Omitted fields are left unchanged. Args: video_id: The video's unique YouTube ID (typically found in its URL). title: New video title. No change if omitted. description: New video description. No change if omitted. tags: New tags, replacing all existing. An empty list removes all. No change if omitted. category_id: New YouTube category ID. No change if omitted. privacy_status: New privacy status ('public', 'private', or 'unlisted'). No change if omitted. Returns: Object with 'data' (updated video resource), 'error' (if any), and 'successful' boolean. |
| upload_videoA | Uploads a video from a local file path to a YouTube channel. The video file must be in a YouTube-supported format (e.g. MP4, MOV, AVI). Args: video_file_path: Local file path (absolute or relative) of the video to upload. title: The title for the video. description: Detailed description of the video content. tags: List of keyword tags (strings) for the video. category_id: YouTube category ID (e.g. '22' for People & Blogs). privacy_status: 'public', 'private', or 'unlisted'. Returns: Object with 'data' (uploaded video resource), 'error' (if any), and 'successful' boolean. |
| video_detailsA | Retrieves specified information parts (e.g., snippet, contentDetails, statistics) for a YouTube video, identified by its id. Args: id: The YouTube video ID (typically 11 characters) for which to retrieve details. part: Comma-separated list of video resource parts to include. Valid parts: 'snippet', 'contentDetails', 'statistics', 'status', 'player', etc. Default: 'snippet,contentDetails,statistics'. Returns: Object with 'data' (video resource), 'error' (if any), and 'successful' boolean. |
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/DivyaV18/Youtube-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server