
Youtube Mcp
OAuth-authenticated YouTube server built for creators who need write access. Goes beyond read-only Data API wrappers by letting you update video metadata, moderate comments, manage playlists, and pull channel analytics. The standout feature is the ComfyUI bridge: generate a thumbnail from a text prompt and push it to YouTube in a single tool call. Runs over streamable HTTP or stdio, handles token refresh automatically, and stays comfortably under the 10k daily quota for most workflows. Useful when you're running a channel from Claude and need more than search and fetch.
- tools
- 16
- auth
- Secret needed
- transport
- HTTP
- env vars
- 6
- last updated
- Apr 20, 2026
Tools
16 toolsPublic tool metadata for what this MCP can expose to an agent.
YOUTUBE_GET_CHANNEL_ACTIVITIESGets recent activities from a YouTube channel including video uploads, playlist additions, likes, and other channel events.6 params
Gets recent activities from a YouTube channel including video uploads, playlist additions, likes, and other channel events.
channelIdstringmaxResultsintegerpageTokenstringpartstringpublishedAfterstringpublishedBeforestringYOUTUBE_GET_CHANNEL_ID_BY_HANDLERetrieves the YouTube Channel ID for a specific YouTube channel handle.1 params
Retrieves the YouTube Channel ID for a specific YouTube channel handle.
channel_handlestringYOUTUBE_GET_CHANNEL_STATISTICSGets detailed statistics for YouTube channels including subscriber counts, view counts, and video counts.2 params
Gets detailed statistics for YouTube channels including subscriber counts, view counts, and video counts.
idstringpartstringYOUTUBE_GET_VIDEO_DETAILS_BATCHRetrieves multiple YouTube video resource parts in a single batch call. Use when you need cohort-level metrics for many videos to reduce quota usage and latency.3 params
Retrieves multiple YouTube video resource parts in a single batch call. Use when you need cohort-level metrics for many videos to reduce quota usage and latency.
hlstringidarraypartsarrayYOUTUBE_LIST_CAPTION_TRACKRetrieves a list of caption tracks for a YouTube video, returning an empty list if no captions exist or failing if the video ID is invalid or not found.2 params
Retrieves a list of caption tracks for a YouTube video, returning an empty list if no captions exist or failing if the video ID is invalid or not found.
partstringvideoIdstringYOUTUBE_LIST_CHANNEL_VIDEOSLists videos from a specified YouTube channel, ensuring results are of `type: 'video'`.4 params
Lists videos from a specified YouTube channel, ensuring results are of `type: 'video'`.
channelIdstringmaxResultsintegerpageTokenstringpartstringYOUTUBE_LIST_PLAYLIST_ITEMSTool to list videos in a playlist, with pagination support. Use when walking through a channel's uploads playlist to enumerate all videos.7 params
Tool to list videos in a playlist, with pagination support. Use when walking through a channel's uploads playlist to enumerate all videos.
fieldsstringmaxResultsintegeronBehalfOfContentOwnerstringpageTokenstringpartstringplaylistIdstringvideoIdstringYOUTUBE_LIST_USER_PLAYLISTSRetrieves playlists owned by the authenticated user, implicitly using mine=True.3 params
Retrieves playlists owned by the authenticated user, implicitly using mine=True.
maxResultsintegerpageTokenstringpartstringYOUTUBE_LIST_USER_SUBSCRIPTIONSRetrieves the authenticated user's YouTube channel subscriptions, allowing specification of response parts and pagination.3 params
Retrieves the authenticated user's YouTube channel subscriptions, allowing specification of response parts and pagination.
maxResultsintegerpageTokenstringpartstringYOUTUBE_LOAD_CAPTIONSDownloads a specific YouTube caption track, which must be owned by the authenticated user, and returns its content as text. Note: This action requires you to own the video (YouTube Data API v3 restriction). Non-owned videos will return 403 Forbidden errors, including many auto...2 params
Downloads a specific YouTube caption track, which must be owned by the authenticated user, and returns its content as text. Note: This action requires you to own the video (YouTube Data API v3 restriction). Non-owned videos will return 403 Forbidden errors, including many auto...
idstringtfmtstringYOUTUBE_SEARCH_YOU_TUBESearches YouTube for videos, channels, or playlists using a query term, returning the raw API response.5 params
Searches YouTube for videos, channels, or playlists using a query term, returning the raw API response.
maxResultsintegerpageTokenstringpartstringqstringtypestringYOUTUBE_SUBSCRIBE_CHANNELSubscribes the authenticated user to a specified YouTube channel, identified by its unique `channelId` which must be valid and existing.1 params
Subscribes the authenticated user to a specified YouTube channel, identified by its unique `channelId` which must be valid and existing.
channelIdstringYOUTUBE_UPDATE_THUMBNAILSets the custom thumbnail for a YouTube video using an image from thumbnailUrl; the authenticated user must have permission to edit the video.2 params
Sets the custom thumbnail for a YouTube video using an image from thumbnailUrl; the authenticated user must have permission to edit the video.
thumbnailUrlstringvideoIdstringYOUTUBE_UPDATE_VIDEOUpdates metadata for a YouTube video identified by videoId, which must exist; an empty list for tags removes all existing tags.6 params
Updates metadata for a YouTube video identified by videoId, which must exist; an empty list for tags removes all existing tags.
categoryIdstringdescriptionstringprivacyStatusstringtagsarraytitlestringvideoIdstringYOUTUBE_UPLOAD_VIDEOUploads a video from a local file path to a YouTube channel; the video file must be in a YouTube-supported format.6 params
Uploads a video from a local file path to a YouTube channel; the video file must be in a YouTube-supported format.
categoryIdstringdescriptionstringprivacyStatusstringtagsarraytitlestringvideoFilePathstringYOUTUBE_VIDEO_DETAILSRetrieves specified information parts (e.g., snippet, contentDetails, statistics) for a YouTube video, identified by its ID.2 params
Retrieves specified information parts (e.g., snippet, contentDetails, statistics) for a YouTube video, identified by its ID.
idstringpartstringSponsors
Configuration
YOUTUBE_CLIENT_ID*Google OAuth 2.0 Client ID (from Google Cloud Console, Desktop app type). See README for setup.
YOUTUBE_CLIENT_SECRET*secretGoogle OAuth 2.0 Client Secret. Pair with YOUTUBE_CLIENT_ID.
YOUTUBE_CLIENT_SECRET_FILEAlternative to CLIENT_ID/CLIENT_SECRET: path to the JSON credentials file downloaded from Google Cloud.
YOUTUBE_TOKEN_FILERefresh token storage path. Default: ~/.config/youtube-mcp/token.json
COMFYUI_URLComfyUI HTTP URL for the generate_and_set_thumbnail bridge tool. When unset, that tool is disabled.
COMFYUI_DEFAULT_CKPTDefault ComfyUI checkpoint filename for bridge tool (default: sd_xl_base_1.0.safetensors)
Readme
youtube-mcp
OAuth-authenticated YouTube MCP for channel owners. Edit video metadata, reply to and moderate comments, manage playlists, query channel analytics, and generate or set AI thumbnails via a ComfyUI bridge. Goes beyond the read-only Data API v3 wrappers that dominate this space.
The pitch
Most existing YouTube MCPs use an API key against Data API v3. Search videos, fetch public metadata, read-only. This one uses OAuth 2.0 (Authorization Code + PKCE) so it can actually write to your channel: update video titles, descriptions and tags, reply to comments, moderate spam, manage playlists. It also hits the separate YouTube Analytics API for channel stats, and generates a thumbnail via ComfyUI and pushes it to YouTube in a single MCP call.
Details
- Repository
- github.com/miller-joe/youtube-mcp
- Category
- Media & Entertainment
- Package
@miller-joe/youtube-mcp- Transport
- HTTP
- Auth
- Required
- Registry
- MCP registry, active