Skip to main content
Glama
DivyaV18

YouTube MCP Server

by DivyaV18

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
scopesNoComma-separated OAuth scopes (default includes readonly; add youtube.force-ssl and youtube.upload for full features)
client_idYesOAuth 2.0 Client ID from Google Cloud Console
client_secretYesOAuth 2.0 Client Secret from Google Cloud Console
oauth_redirect_uriNoRedirect URI for OAuth (default: http://localhost)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

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/DivyaV18/Youtube-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server