youtube_account_add
Connect a new YouTube channel by running the OAuth flow and saving it under a named profile. After this you can target it with channel: '<name>' in any tool.
Run a YouTube channel from your client: upload and schedule videos, moderate the comments, reorder playlists, set the branding, and read the analytics behind all of it.
LABSCO SUMMARY
Youtube_account_add stores each connected channel under a name, a channel argument sends a call to that profile, and youtube_account_remove refuses to remove the last one. The destructive calls are gated the same way throughout — youtube_video_delete, youtube_playlist_delete and youtube_account_remove each require confirm: true — and youtube_comment_delete is honest about its limit, working only on comments the authenticated account owns. Analytics is split into narrow queries rather than a single dashboard call, which is what makes a monthly report assemblable: per-video metrics, channel metrics, top videos by a chosen metric, the audience-retention curve, and revenue split into estimated, ad and gross. One detail that will bite during playlist work: youtube_playlist_item_remove takes the playlistItem ID, not the video ID it points at.
A YouTube channel-management server covering uploads and scheduling, video metadata, playlists, comment moderation, channel branding and YouTube Analytics, with named profiles so a single server can act on more than one channel.
An OAuth client for YouTube — YOUTUBE_CLIENT_ID and YOUTUBE_CLIENT_SECRET — and a channel connected through youtube_account_add, which runs the OAuth flow and stores the channel under a named profile.
One command plus credentials — npx maagpi-youtube-mcp, then supply credentials
USE CASES
Upload the file with its metadata and privacy set, put the thumbnail on it, and let the scheduler make it public at the moment you chose.
Read the retention curve for the video, check it against the video's wider metrics, then change the metadata that framed it.
Page through the threads, open the ones that need context, hold or reject what breaks the rules, and answer the rest.
List what is in it with positions, add what is missing, move things into the order you want, and drop what no longer belongs.
Pull the channel-level numbers, find which videos carried them, and add what the period actually earned.
Connect each channel once under a name, see which profiles exist, and move the active one before you start work.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
youtube_account_addConnect a new YouTube channel by running the OAuth flow and saving it under a named profile. After this you can target it with channel: '<name>' in any tool.
youtube_account_currentShow the currently active channel profile.
youtube_account_listList all connected YouTube channel profiles with their names, channel IDs, and active status.
youtube_account_removeDisconnect and remove a channel profile. Requires confirm: true. Cannot remove the last profile.
youtube_account_switchSwitch the active channel profile. All tools without an explicit channel parameter will use this profile.
youtube_analytics_audience_retentionGet audience retention curve data for a specific video showing where viewers drop off.
youtube_analytics_channel_metricsQuery channel-level analytics: views, subscribers, watch time, revenue, and more.
youtube_analytics_revenue_reportGet revenue report including estimated revenue, ad revenue, and gross revenue.
youtube_analytics_top_videosGet top performing videos for a date range ranked by a specific metric.
youtube_analytics_video_metricsQuery YouTube Analytics for detailed per-video metrics (views, watch time, retention, CTR, etc.).
youtube_channel_branding_updateUpdate channel branding settings including banner, background color, and related channels.
youtube_channel_getGet the authenticated channel's metadata, branding settings, and statistics.
youtube_channel_section_createCreate a new channel homepage section featuring playlists or channels.
youtube_channel_section_deleteDelete a channel homepage section by ID.
youtube_channel_section_listList all sections on the channel homepage.
youtube_channel_updateUpdate the channel's title, description, keywords, country, or default language.
youtube_channel_watermark_setSet a branding watermark image on all channel videos with position and timing configuration.
youtube_channel_watermark_unsetRemove the branding watermark from all channel videos.
youtube_comment_deleteDelete a comment by ID. Only works on comments owned by the authenticated account.
youtube_comment_listList top-level comment threads on a video, with optional search and ordering.
youtube_comment_moderateChange moderation status of a comment: publish, hold for review, or reject. Optionally ban the author.
youtube_comment_replyPost a reply to an existing top-level comment on a video.
youtube_comment_thread_getGet a single comment thread with its replies.
youtube_playlist_createCreate a new YouTube playlist with title, description, and privacy settings.
youtube_playlist_deletePermanently delete a playlist. Requires confirm: true.
youtube_playlist_getGet a playlist's full metadata by ID.
youtube_playlist_item_addAdd a video to a playlist at an optional position.
youtube_playlist_item_removeRemove a video from a playlist using the playlistItem ID (not the video ID).
youtube_playlist_item_reorderMove a playlist item to a new position within the playlist.
youtube_playlist_items_listList all videos in a playlist with their positions and metadata.
youtube_playlist_listList playlists for a channel (or the authenticated user's channel).
youtube_playlist_updateUpdate a playlist's title, description, or privacy status.
youtube_video_deletePermanently delete a video. Requires confirm: true to prevent accidents.
youtube_video_getGet full metadata for a YouTube video by ID.
youtube_video_listList videos on a channel or search across YouTube with filters.
youtube_video_rateLike, dislike, or remove a rating from a video.
youtube_video_schedule_publishSchedule a video to automatically publish at a specific future datetime (ISO8601).
youtube_video_set_premiereConfigure a video as a YouTube Premiere with a scheduled live premiere date.
youtube_video_set_privacyChange the privacy status of a video to public, private, or unlisted.
youtube_video_set_thumbnailUpload and set a custom thumbnail for a video.
youtube_video_updateUpdate the metadata of an existing video (title, description, tags, category).
youtube_video_uploadUpload a video file to YouTube with metadata and privacy settings.
BEFORE YOU INSTALL
42 tools when we connected. Write tools spend YouTube API quota from a 10,000 unit daily budget, and youtube_video_upload alone costs 1600. Tools that delete data require confirm: true.
CONTEXT COST
Rated by the size of the 42 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npx maagpi-youtube-mcp{
"mcpServers": {
"youtube": {
"command": "npx",
"args": [
"-y",
"maagpi-youtube-mcp"
],
"env": {
"YOUTUBE_CLIENT_ID": "<YOUR_YOUTUBE_CLIENT_ID>",
"YOUTUBE_CLIENT_SECRET": "<YOUR_YOUTUBE_CLIENT_SECRET>"
}
}
}
}{
"servers": {
"youtube": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"maagpi-youtube-mcp"
],
"env": {
"YOUTUBE_CLIENT_ID": "<YOUR_YOUTUBE_CLIENT_ID>",
"YOUTUBE_CLIENT_SECRET": "<YOUR_YOUTUBE_CLIENT_SECRET>"
}
}
}
}{
"context_servers": {
"youtube": {
"command": {
"path": "npx",
"args": [
"-y",
"maagpi-youtube-mcp"
],
"env": {
"YOUTUBE_CLIENT_ID": "<YOUR_YOUTUBE_CLIENT_ID>",
"YOUTUBE_CLIENT_SECRET": "<YOUR_YOUTUBE_CLIENT_SECRET>"
}
}
}
}
}mcporter add youtube --command "npx -y maagpi-youtube-mcp" \
--env YOUTUBE_CLIENT_ID=<YOUR_YOUTUBE_CLIENT_ID> \
--env YOUTUBE_CLIENT_SECRET=<YOUR_YOUTUBE_CLIENT_SECRET>