ConnectGet API Key API Key https://gateway.mewcp.com/youtube/mcp Copy Infrastructure You Can Trust for Agentic Products
© 2026 MewCP. All rights reserved.
Manage YouTube channels, videos, playlists, and analytics via API.
A Model Context Protocol (MCP) server that exposes YouTube's API for managing channels, uploading content, interacting with videos, and accessing comprehensive analytics.
Overview
The YouTube MCP Server provides stateless, multi-user access to YouTube's core operations:
Channel Management — Access and manage authenticated user's YouTube channel, subscriptions, and activities
Video Operations — Search, retrieve, rate, and comment on videos with detailed metadata
Playlist Management — Create playlists, manage playlist items, and organize video collections
Content Interaction — Subscribe to channels, like/dislike videos, and post comments
Perfect for:
Automated YouTube content management and distribution
Building AI-powered video discovery and recommendation systems
Integrating YouTube capabilities into multi-agent applications and workflows
get_my_channel — Get information about the authenticated user's YouTube channelRetrieve detailed information about the authenticated user's YouTube channel including channel ID, name, subscriber count, and other metadata.
Inputs:
oauth_token (object, required) — Valid Google OAuth token object with YouTube scopes
Output:
{
"result" : {
"kind" : "youtube#channelListResponse" ,
"pageInfo" : {
"totalResults" : 1 ,
"resultsPerPage" : 1
},
"items" : [
{
"id" : "UCxxxxxxxxxxxxxx" ,
"snippet" : {
"title" : "Channel Name" ,
"description" : "Channel description"
}
}
]
}
Usage Example:
POST /mcp/cyoutube/get_my_channel
{
"oauth_token" : {
"token" : "ya29.a0AfH6SMxxxxxxxxxxxxxx",
"refresh_token" : "1//0xxxxx",
"token_uri" : "https://oauth2.googleapis.com/token",
"client_id" : "xxx.apps.googleusercontent.com",
"client_secret" : "xxxxx",
"scopes" : [ "https://www.googleapis.com/auth/youtube" ]
}
}
get_my_playlists — Get playlists from the authenticated user's channelRetrieve all playlists created by the authenticated user with pagination support.
Inputs:
oauth_token (object, required) — Valid Google OAuth token object
max_results (integer, optional) — Maximum playlists to return (default: 25)
Output:
{
"result" : {
"kind" : "youtube#playlistListResponse" ,
"pageInfo" : {
"totalResults" : 5 ,
"resultsPerPage" : 25
},
"items" : [
{
search_videos — Search for videos on YouTubeSearch for videos on YouTube using keywords with advanced filtering options.
Inputs:
oauth_token (object, required) — Valid Google OAuth token object
query (string, required) — Search query string
max_results (integer, optional) — Maximum results to return (default: 10)
order (string, optional) — Sort order: "relevance", "date", "viewCount", "rating" (default: "relevance")
Output:
{
"result" : {
"kind" : "youtube#searchListResponse" ,
"pageInfo" : {
"totalResults" : 1000000 ,
get_video_details — Get detailed information about a specific video by IDRetrieve comprehensive details about a specific video including statistics, ratings, comments count, and metadata.
Inputs:
oauth_token (object, required) — Valid Google OAuth token object
video_id (string, required) — The YouTube video ID
Output:
{
"result" : {
"kind" : "youtube#videoListResponse" ,
"pageInfo" : {
"totalResults" : 1 ,
"resultsPerPage" : 1
},
"items" : [
get_channel_videos — Get videos from a specific channelRetrieve all videos uploaded by a specific channel with pagination support.
Inputs:
oauth_token (object, required) — Valid Google OAuth token object
channel_id (string, required) — The YouTube channel ID
max_results (integer, optional) — Maximum videos to return (default: 25)
Output:
{
"result" : {
"kind" : "youtube#searchListResponse" ,
"pageInfo" : {
"totalResults" : 100 ,
"resultsPerPage" : 25
},
get_playlist_items — Get videos from a specific playlistRetrieve all videos in a specific playlist with full details and ordering.
Inputs:
oauth_token (object, required) — Valid Google OAuth token object
playlist_id (string, required) — The YouTube playlist ID
max_results (integer, optional) — Maximum items to return (default: 50)
Output:
{
"result" : {
"kind" : "youtube#playlistItemListResponse" ,
"pageInfo" : {
"totalResults" : 50 ,
"resultsPerPage" : 50
},
get_video_comments — Get comments for a specific videoRetrieve comments on a video with filtering and sorting options.
Inputs:
oauth_token (object, required) — Valid Google OAuth token object
video_id (string, required) — The YouTube video ID
max_results (integer, optional) — Maximum comments to return (default: 20)
order (string, optional) — Sort order: "relevance" or "time" (default: "relevance")
Output:
{
"result" : {
"kind" : "youtube#commentThreadListResponse" ,
"pageInfo" : {
"totalResults" : 5000 ,
get_my_subscriptions — Get the authenticated user's channel subscriptionsRetrieve all channels that the authenticated user is subscribed to.
Inputs:
oauth_token (object, required) — Valid Google OAuth token object
max_results (integer, optional) — Maximum subscriptions to return (default: 25)
Output:
{
"result" : {
"kind" : "youtube#subscriptionListResponse" ,
"pageInfo" : {
"totalResults" : 150 ,
"resultsPerPage" : 25
},
"items" : [
get_my_activities — Get recent activities on the authenticated user's channelRetrieve recent activities on the authenticated user's channel including uploads, likes, and other interactions.
Inputs:
oauth_token (object, required) — Valid Google OAuth token object
max_results (integer, optional) — Maximum activities to return (default: 25)
Output:
{
"result" : {
"kind" : "youtube#activityListResponse" ,
"pageInfo" : {
"totalResults" : 100 ,
"resultsPerPage" : 25
},
"items" : [
create_playlist — Create a new playlist on the authenticated user's channelCreate a new playlist with customizable title, description, and privacy settings.
Inputs:
oauth_token (object, required) — Valid Google OAuth token object
title (string, required) — Playlist title
description (string, optional) — Playlist description (default: "")
privacy_status (string, optional) — Privacy level: "private", "public", or "unlisted" (default: "private")
Output:
{
"result" : {
"kind" : "youtube#playlist" ,
"id" : "PLxxxxxxxxxxxxxx" ,
"snippet"
add_video_to_playlist — Add a video to a playlistAdd a specific video to an existing playlist.
Inputs:
oauth_token (object, required) — Valid Google OAuth token object
playlist_id (string, required) — The target playlist ID
video_id (string, required) — The video ID to add
Output:
{
"result" : {
"kind" : "youtube#playlistItem" ,
"id" : "PLitem456" ,
"snippet" : {
"playlistId" : "PLxxxxxxxxxxxxxx" ,
"videoId"
subscribe_to_channel — Subscribe to a YouTube channelSubscribe the authenticated user to a specific YouTube channel.
Inputs:
oauth_token (object, required) — Valid Google OAuth token object
channel_id (string, required) — The channel ID to subscribe to
Output:
{
"result" : {
"kind" : "youtube#subscription" ,
"id" : "subscription-123" ,
"snippet" : {
"title" : "Channel Name" ,
"channelId" : "UCxxxxxxxxxxxxxx"
}
rate_video — Rate a video (like or dislike)Like, dislike, or clear rating for a video.
Inputs:
oauth_token (object, required) — Valid Google OAuth token object
video_id (string, required) — The video ID to rate
rating (string, required) — Rating action: "like", "dislike", or "none"
Output:
{
"result" : {
"message" : "Video rated successfully"
}
} Usage Example:
post_comment — Post a comment on a videoPost a comment on a specific video as the authenticated user.
Inputs:
oauth_token (object, required) — Valid Google OAuth token object
video_id (string, required) — The video ID to comment on
text (string, required) — Comment text content
Output:
{
"result" : {
"kind" : "youtube#comment" ,
"id" : "comment-123" ,
"snippet" : {
"videoId" : "dQw4w9WgXcQ" ,
"textDisplay"
Reference & Support
API Parameters Reference
max_results — Maximum results per page (varies by endpoint: 10-50)
nextPageToken — Token for retrieving next page of results
prevPageToken — Token for retrieving previous page of results
Search & Filtering
query — Search keywords for video search
order — Sort results by: "relevance", "date", "viewCount", "rating"
Content Types
kind — Response type identifier (e.g., "youtube#video", "youtube#playlist")
type — Activity type: "upload", "like", "subscribe", "favorite", "comment", "playlistItem"
Video Resource:
OAuth Guide All tools require a valid Google OAuth token. Here's how to obtain one:
Step 1: Create Google Cloud Project
Go to Google Cloud Console
Create a new project or select an existing one
Enable the YouTube Data API v3 from the API Library
Step 2: Create OAuth 2.0 Credentials
Navigate to Credentials in Google Cloud Console
Click + Create Credentials → OAuth client ID
Select your application type (Desktop, Web, or other)
Download the credentials JSON file
Step 3: Authenticate Use your Google account to authenticate and obtain the OAuth token. Refer to Google OAuth 2.0 Documentation for detailed authentication steps.
Step 4: Required Scopes Ensure your OAuth token has these scopes:
https://www.googleapis.com/auth/youtube — Full YouTube account access
https://www.googleapis.com/auth/youtube.readonly — Read-only access to YouTube
https://www.googleapis.com/auth/youtube.force-ssl — HTTPS-only access
Troubleshooting Missing or Invalid OAuth Token
Cause: OAuth token not provided in request or incorrect format
Solution:
Verify oauth_token parameter is present in request
Check token is valid and not expired
Obtain a fresh OAuth token from Google
Insufficient Permissions
Cause: OAuth token lacks required scopes for operation
Solution:
Verify token has all required YouTube scopes
Regenerate token with additional scopes if needed
Check Google Cloud project has YouTube Data API v3 enabled
Insufficient Credits
Cause: API calls have exceeded your requests limits
Solution:
Check credit usage in your Curious Layer dashboard
Upgrade to a paid plan or add credits for higher limits
Contact support for credit adjustments
Cause: JSON payload is invalid or missing required fields
Solution:
Validate JSON syntax before sending
Ensure all required parameters are included
Check parameter types match expected values (string, integer, object)
}
"id" : "PLxxxxxxxxxxxxxx" ,
"snippet" : {
"title" : "My Playlist" ,
"description" : "Playlist description"
}
}
]
}
}
POST /mcp/cyoutube/get_my_playlists
{
"oauth_token" : {
"token" : "ya29.a0AfH6SMxxxxxxxxxxxxxx",
"refresh_token" : "1//0xxxxx",
"token_uri" : "https://oauth2.googleapis.com/token",
"client_id" : "xxx.apps.googleusercontent.com",
"client_secret" : "xxxxx",
"scopes" : [ "https://www.googleapis.com/auth/youtube" ]
},
"max_results" : 25
} "resultsPerPage" : 10
},
"items" : [
{
"kind" : "youtube#searchResult" ,
"id" : {
"videoId" : "dQw4w9WgXcQ"
},
"snippet" : {
"title" : "Video Title" ,
"description" : "Video description"
}
}
]
}
}
POST /mcp/cyoutube/search_videos
{
"oauth_token" : {
"token" : "ya29.a0AfH6SMxxxxxxxxxxxxxx",
"refresh_token" : "1//0xxxxx",
"token_uri" : "https://oauth2.googleapis.com/token",
"client_id" : "xxx.apps.googleusercontent.com",
"client_secret" : "xxxxx",
"scopes" : [ "https://www.googleapis.com/auth/youtube" ]
},
"query" : "machine learning tutorial",
"max_results" : 10,
"order" : "relevance"
} {
"id" : "dQw4w9WgXcQ" ,
"snippet" : {
"title" : "Video Title" ,
"description" : "Video description" ,
"publishedAt" : "2024-01-01T12:00:00Z"
},
"statistics" : {
"viewCount" : "1000000" ,
"likeCount" : "50000" ,
"commentCount" : "5000"
}
}
]
}
}
POST /mcp/cyoutube/get_video_details
{
"oauth_token" : {
"token" : "ya29.a0AfH6SMxxxxxxxxxxxxxx",
"refresh_token" : "1//0xxxxx",
"token_uri" : "https://oauth2.googleapis.com/token",
"client_id" : "xxx.apps.googleusercontent.com",
"client_secret" : "xxxxx",
"scopes" : [ "https://www.googleapis.com/auth/youtube" ]
},
"video_id" : "dQw4w9WgXcQ"
} "items" : [
{
"id" : {
"videoId" : "video-id-123"
},
"snippet" : {
"title" : "Video Title" ,
"channelId" : "UCxxxxxxxxxxxxxx"
}
}
]
}
}
POST /mcp/cyoutube/get_channel_videos
{
"oauth_token" : {
"token" : "ya29.a0AfH6SMxxxxxxxxxxxxxx",
"refresh_token" : "1//0xxxxx",
"token_uri" : "https://oauth2.googleapis.com/token",
"client_id" : "xxx.apps.googleusercontent.com",
"client_secret" : "xxxxx",
"scopes" : [ "https://www.googleapis.com/auth/youtube" ]
},
"channel_id" : "UCxxxxxxxxxxxxxx",
"max_results" : 25
} "items" : [
{
"id" : "PLitem123" ,
"snippet" : {
"title" : "Video Title" ,
"videoId" : "dQw4w9WgXcQ" ,
"position" : 0
}
}
]
}
}
POST /mcp/cyoutube/get_playlist_items
{
"oauth_token" : {
"token" : "ya29.a0AfH6SMxxxxxxxxxxxxxx",
"refresh_token" : "1//0xxxxx",
"token_uri" : "https://oauth2.googleapis.com/token",
"client_id" : "xxx.apps.googleusercontent.com",
"client_secret" : "xxxxx",
"scopes" : [ "https://www.googleapis.com/auth/youtube" ]
},
"playlist_id" : "PLxxxxxxxxxxxxxx",
"max_results" : 50
} "resultsPerPage" : 20
},
"items" : [
{
"snippet" : {
"videoId" : "dQw4w9WgXcQ" ,
"textDisplay" : "Great video!" ,
"authorDisplayName" : "User Name"
}
}
]
}
}
POST /mcp/cyoutube/get_video_comments
{
"oauth_token" : {
"token" : "ya29.a0AfH6SMxxxxxxxxxxxxxx",
"refresh_token" : "1//0xxxxx",
"token_uri" : "https://oauth2.googleapis.com/token",
"client_id" : "xxx.apps.googleusercontent.com",
"client_secret" : "xxxxx",
"scopes" : [ "https://www.googleapis.com/auth/youtube" ]
},
"video_id" : "dQw4w9WgXcQ",
"max_results" : 20,
"order" : "relevance"
} {
"snippet" : {
"title" : "Subscribed Channel" ,
"channelId" : "UCxxxxxxxxxxxxxx"
}
}
]
}
}
POST /mcp/cyoutube/get_my_subscriptions
{
"oauth_token" : {
"token" : "ya29.a0AfH6SMxxxxxxxxxxxxxx",
"refresh_token" : "1//0xxxxx",
"token_uri" : "https://oauth2.googleapis.com/token",
"client_id" : "xxx.apps.googleusercontent.com",
"client_secret" : "xxxxx",
"scopes" : [ "https://www.googleapis.com/auth/youtube" ]
},
"max_results" : 25
} {
"id" : "activity-123" ,
"snippet" : {
"type" : "upload" ,
"title" : "Activity Title"
}
}
]
}
}
POST /mcp/cyoutube/get_my_activities
{
"oauth_token" : {
"token" : "ya29.a0AfH6SMxxxxxxxxxxxxxx",
"refresh_token" : "1//0xxxxx",
"token_uri" : "https://oauth2.googleapis.com/token",
"client_id" : "xxx.apps.googleusercontent.com",
"client_secret" : "xxxxx",
"scopes" : [ "https://www.googleapis.com/auth/youtube" ]
},
"max_results" : 25
} : {
"title" : "My New Playlist" ,
"description" : "Playlist description"
},
"status" : {
"privacyStatus" : "private"
}
}
}
POST /mcp/cyoutube/create_playlist
{
"oauth_token" : {
"token" : "ya29.a0AfH6SMxxxxxxxxxxxxxx",
"refresh_token" : "1//0xxxxx",
"token_uri" : "https://oauth2.googleapis.com/token",
"client_id" : "xxx.apps.googleusercontent.com",
"client_secret" : "xxxxx",
"scopes" : [ "https://www.googleapis.com/auth/youtube" ]
},
"title" : "My New Playlist",
"description" : "A collection of my favorite videos",
"privacy_status" : "private"
} :
"dQw4w9WgXcQ"
}
}
}
POST /mcp/cyoutube/add_video_to_playlist
{
"oauth_token" : {
"token" : "ya29.a0AfH6SMxxxxxxxxxxxxxx",
"refresh_token" : "1//0xxxxx",
"token_uri" : "https://oauth2.googleapis.com/token",
"client_id" : "xxx.apps.googleusercontent.com",
"client_secret" : "xxxxx",
"scopes" : [ "https://www.googleapis.com/auth/youtube" ]
},
"playlist_id" : "PLxxxxxxxxxxxxxx",
"video_id" : "dQw4w9WgXcQ"
} }
}
POST /mcp/cyoutube/subscribe_to_channel
{
"oauth_token" : {
"token" : "ya29.a0AfH6SMxxxxxxxxxxxxxx",
"refresh_token" : "1//0xxxxx",
"token_uri" : "https://oauth2.googleapis.com/token",
"client_id" : "xxx.apps.googleusercontent.com",
"client_secret" : "xxxxx",
"scopes" : [ "https://www.googleapis.com/auth/youtube" ]
},
"channel_id" : "UCxxxxxxxxxxxxxx"
} POST
/mcp/cyoutube/rate_video
{
"oauth_token" : {
"token" : "ya29.a0AfH6SMxxxxxxxxxxxxxx",
"refresh_token" : "1//0xxxxx",
"token_uri" : "https://oauth2.googleapis.com/token",
"client_id" : "xxx.apps.googleusercontent.com",
"client_secret" : "xxxxx",
"scopes" : [ "https://www.googleapis.com/auth/youtube" ]
},
"video_id" : "dQw4w9WgXcQ",
"rating" : "like"
}
:
"Great video!"
}
}
}
POST /mcp/cyoutube/post_comment
{
"oauth_token" : {
"token" : "ya29.a0AfH6SMxxxxxxxxxxxxxx",
"refresh_token" : "1//0xxxxx",
"token_uri" : "https://oauth2.googleapis.com/token",
"client_id" : "xxx.apps.googleusercontent.com",
"client_secret" : "xxxxx",
"scopes" : [ "https://www.googleapis.com/auth/youtube" ]
},
"video_id" : "dQw4w9WgXcQ",
"text" : "Great video! Thanks for the tutorial."
} videos/{VIDEO_ID}
Example: dQw4w9WgXcQ
channels/{CHANNEL_ID}
Example: UCxxxxxxxxxxxxxx playlists/{PLAYLIST_ID}
Example: PLxxxxxxxxxxxxxx
Server Not Found
Cause: Incorrect server name in the API endpoint
Solution:
Verify endpoint format: /mcp/{server-name}/{tool-name}
Use lowercase server name: /mcp/cyoutube/...
Check available servers in documentation
Video Not Found or Access Denied
Cause: Video ID is invalid or video is private/deleted
Solution:
Verify video ID is correct
Check if video is public or accessible by authenticated user
Ensure video hasn't been deleted or made private
Authentication Token Invalid or Expired
Cause: Token rejected by YouTube API or has expired
Solution:
Obtain a fresh OAuth token from Google
Verify token has all required YouTube scopes
Check token expiration and refresh if needed
Quota Exceeded
Cause: API quota for the day/month has been exceeded
Solution:
Check quota usage in Google Cloud Console
Wait until quota resets (usually daily)
Upgrade Google Cloud project plan for higher quota