100+ integrations are ready to connect to your AI.Connect your first MCP

YouTube MCP server for your AI

Find comments held for review and publish or reject them, reply as the channel, fix a video's title and tags, build a playlist, add an SRT caption track, and look up any channel by its @handle.

PopMCPYouTube

Show me the comments held for review on my channel and publish the ones that aren't spam

Supported YouTube tools

Every YouTube Data API v3 tool on the connection, from videos and captions to live broadcasts, each with its quota cost, plus the triggers PopMCP can watch.

88 tools in the full catalog: 32 read and 56 write. 38 load by default, and the rest are found with tool search.

youtube_batch_get_video_stats

Retrieves a batch of VideoStat resources, possibly filtered.

youtube_get_my_video_rating

Retrieves the ratings that the authorized user gave to a list of specified videos.

youtube_get_video_details

Retrieves a list of resources, possibly filtered.

youtube_rate_video

Adds a like or dislike rating to a video or removes a rating from a video.

youtube_update_video

Updates an existing resource.

youtube_delete_caption_track

Deletes a resource.

youtube_download_caption_track

Downloads a caption track.

youtube_list_captions

Retrieves a list of resources, possibly filtered.

youtube_list_live_broadcasts

Retrieve the list of broadcasts associated with the given channel.

youtube_replace_caption_track

Replace the FILE behind an existing caption track, keeping its id, language and place in the subtitles menu.

youtube_upload_caption_track

Add a subtitle/caption track to one of YOUR videos, sending the caption file as text in a single call.

youtube_delete_comment

Deletes a resource.

youtube_list_comment_replies

Retrieves a list of resources, possibly filtered.

youtube_moderate_comment

Sets the moderation status of one or more comments.

youtube_reply_to_comment

Inserts a new resource into this collection.

youtube_update_comment

Updates an existing resource.

youtube_add_video_to_playlist

Inserts a new resource into this collection.

youtube_list_my_videos

List the videos on the connected channel, newest first, with NO arguments — the connector fills in the channel's uploads playlist for you.

youtube_list_playlist_items

Retrieves a list of resources, possibly filtered.

youtube_remove_video_from_playlist

Deletes a resource.

youtube_update_playlist_item

Updates an existing resource.

youtube_create_playlist

Inserts a new resource into this collection.

youtube_delete_playlist

Deletes a resource.

youtube_get_channel_by_handle

Look up ANY public channel by its @handle — the normal way to turn something a person says ("check @MKBHD") into the channelId every other tool needs.

youtube_get_channel_details

Retrieves a list of resources, possibly filtered.

youtube_get_my_channel

Get the channel this connection is authorized as — id, handle, title, subscriber/view/video counts, and the uploads playlist id.

youtube_list_live_chat_messages

Retrieves a list of resources, possibly filtered.

youtube_list_playlists

Retrieves a list of resources, possibly filtered.

youtube_send_live_chat_message

Inserts a new resource into this collection.

youtube_update_playlist

Updates an existing resource.

youtube_list_subscriptions

Retrieves a list of resources, possibly filtered.

youtube_subscribe_to_channel

Inserts a new resource into this collection.

youtube_unsubscribe_from_channel

Deletes a resource.

youtube_list_comment_threads

Retrieves a list of resources, possibly filtered.

youtube_post_comment

Inserts a new resource into this collection.

youtube_list_channel_activities

Retrieves a list of resources, possibly filtered.

youtube_list_video_categories

Retrieves a list of resources, possibly filtered.

youtube_search

Retrieves a list of search resources Quota: 1 unit, but from a SEPARATE bucket capped at 100 search calls per day (changed 1 June 2026 — it is no longer 100 units from the shared pool).

youtube_delete_video

Deletes a resource.

youtube_report_video_abuse

Report abuse for a video.

youtube_upload_video

Inserts a new resource into this collection.

youtube_captions_insert

Inserts a new resource into this collection.

youtube_captions_update

Updates an existing resource.

youtube_live_broadcasts_bind

Bind a broadcast to a stream.

youtube_live_broadcasts_delete

Delete a given broadcast.

youtube_live_broadcasts_insert

Inserts a new stream for the authenticated user.

youtube_live_broadcasts_insert_cuepoint

Insert cuepoints in a broadcast Quota: 50 units.

youtube_live_broadcasts_transition

Transition a broadcast to a given status.

youtube_live_broadcasts_update

Updates an existing broadcast for the authenticated user.

youtube_mark_comment_as_spam

Expresses the caller's opinion that one or more comments should be flagged as spam.

youtube_channel_sections_delete

Deletes a resource.

youtube_channel_sections_insert

Inserts a new resource into this collection.

youtube_channel_sections_update

Updates an existing resource.

youtube_list_channel_sections

Retrieves a list of resources, possibly filtered.

youtube_live_chat_messages_delete

Deletes a chat message.

youtube_live_chat_messages_transition

Transition a durable chat event.

youtube_live_streams_delete

Deletes an existing stream for the authenticated user.

youtube_live_streams_insert

Inserts a new stream for the authenticated user.

youtube_live_streams_list

Retrieve the list of streams associated with the given channel.

youtube_live_streams_update

Updates an existing stream for the authenticated user.

youtube_playlist_images_delete

Deletes a resource.

youtube_playlist_images_insert

Inserts a new resource into this collection.

youtube_playlist_images_list

Retrieves a list of resources, possibly filtered.

youtube_playlist_images_update

Updates an existing resource.

youtube_third_party_links_delete

Deletes a resource.

youtube_third_party_links_insert

Inserts a new resource into this collection.

youtube_third_party_links_list

Retrieves a list of resources, possibly filtered.

youtube_third_party_links_update

Updates an existing resource.

youtube_update_channel

Updates an existing resource.

youtube_live_chat_moderators_delete

Deletes a chat moderator.

youtube_live_chat_moderators_insert

Inserts a new resource into this collection.

youtube_live_chat_moderators_list

Retrieves a list of resources, possibly filtered.

youtube_live_chat_bans_delete

Deletes a chat ban.

youtube_live_chat_bans_insert

Inserts a new resource into this collection.

youtube_watermarks_set

Allows upload of watermark image and setting it for a channel.

youtube_watermarks_unset

Allows removal of channel watermark.

youtube_abuse_reports_insert

Inserts a new resource into this collection.

youtube_channel_banners_insert

Inserts a new resource into this collection.

youtube_i18n_languages_list

Retrieves a list of resources, possibly filtered.

youtube_i18n_regions_list

Retrieves a list of resources, possibly filtered.

youtube_members_list

Retrieves a list of members that match the request criteria for a channel.

youtube_memberships_levels_list

Retrieves a list of all pricing levels offered by a creator to the fans.

youtube_set_video_thumbnail

As this is not an insert in a strict sense (it supports uploading/setting of a thumbnail for multiple videos, which doesn't result in creation of a single resource), I use a custom verb here.

youtube_super_chat_events_list

Retrieves a list of resources, possibly filtered.

youtube_tests_insert

POST method.

youtube_video_abuse_report_reasons_list

Retrieves a list of resources, possibly filtered.

youtube_video_trainability_get

Returns the trainability status of a video.

youtube_youtube_v3_live_chat_messages_stream

Allows an user to load live chat through a server-streamed RPC.

Connect YouTube to Claude, ChatGPT and Claude Code

Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the YouTube side.

Enable the YouTube Data API v3 in your Google Cloud project, create a Web application OAuth client with PopMCP's callback URL, publish the app, paste the OAuth Client ID and Client Secret, then pick your channel on Google's second screen.

OAuth Client ID1234567890-abc.apps.googleusercontent.com
OAuth Client Secret••••••••••••3f7a
Authorize PopMCP on YouTubeAuthorize

Then just ask for the work

  • “Show me the comments held for review on my channel and publish the ones that aren't spam”

    • list_comment_threads
    • moderate_comment
  • “Fix the typo in my latest video's title without touching its description or tags”

    • list_my_videos
    • get_video_details
    • update_video
  • “Make a playlist called Beginner Guides from my five most viewed tutorials”

    • list_my_videos
    • batch_get_video_stats
    • create_playlist
    • add_video_to_playlist
  • “Add these English subtitles to my newest video and check they processed”

    • list_my_videos
    • upload_caption_track
    • list_captions

Use YouTube from the assistant you already open

One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.

Claude DesktopCustom connector

Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.

Claude WebCustom connector

The same endpoint, registered in the browser. Nothing to install on the machine you are working from.

ChatGPTCustom connector

Register PopMCP as a custom connector, then let ChatGPT read and update the account.

CodexDesktop & CLI

Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.

OpenCodeCoding agent

Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.

ZCodeDesktop app

Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.

YouTube MCP server questions

What teams ask before putting YouTube behind an AI client.

Can the AI upload a video to YouTube?

No. YouTube's upload endpoint needs the video file itself as raw bytes in the request, and an MCP tool call cannot carry that. The same applies to custom thumbnails, channel banners and watermarks. Upload in YouTube Studio, then let the AI finish the job: update_video sets the title, description, tags, category and privacy. Caption tracks are the exception, because they are text: upload_caption_track sends an SRT or WebVTT file in a single call.

How much YouTube API quota does the MCP server use?

The quota belongs to your own Google Cloud project: 10,000 units a day by default, resetting at midnight Pacific, and failed calls still count. Reads cost 1 unit and most writes 50. Search sits in its own bucket of 100 calls a day, so list_my_videos is the cheap way to walk your uploads. Caption uploads cost 400 units and replacements 450. Every tool description states its cost, so the AI can plan around the budget.

Which channel does the connection act as, and does it work with Brand Accounts?

The channel you pick on Google's consent screens. Google asks twice: first for the Google account, then for the channel, so for a Brand Account choose that channel on the second screen rather than your personal one. There is no channel id to type. get_my_channel answers which channel the connection belongs to; if it is the wrong one, reconnect. The connection asks for a single permission, youtube.force-ssl, which covers almost the whole Data API.

Why did my YouTube connection stop working after a week?

Your Google Cloud project's app is still in Testing. Google expires refresh tokens from Testing apps after exactly 7 days, so the connection works for a week and then every call fails. Open Google Auth Platform, then Audience, and click Publish app before you connect, or reconnect after publishing. Publishing needs no review from Google; it only adds a one-time "Google hasn't verified this app" screen, where you click Advanced and continue.

Can the AI help run a live stream's chat?

Yes, while a broadcast is live. list_live_broadcasts finds the stream and its live chat id, list_live_chat_messages reads chat at the polling interval YouTube returns, and send_live_chat_message posts as the channel. Banning a user and adding a moderator are reachable through tool search. Each chat message costs 50 units, so around 200 messages spend the day's quota, and an account not enabled for live streaming returns a permissions error that reconnecting will not fix.

Which YouTube events can PopMCP watch?

Fifteen. Polling catches a newly published video and new channel activity. Change detection covers a new comment, a comment held for review, a new subscriber, a new channel member, a Super Chat, a live stream starting or ending, a stream health change, a new playlist, a video added to or removed from a playlist, and a video removed or hidden. Two thresholds fire when a video passes a view count or the channel passes a subscriber count you set.

Do I have to run or host the YouTube MCP server myself?

No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.

Which AI clients can use this MCP server?

Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.

How do I connect YouTube to Claude Code?

Connect YouTube in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking YouTube on the consent screen. The YouTube tools are then available in that session, and no YouTube credential is stored on your machine.

Why do only 38 of the 88 tools load by default?

Loading 88 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 38-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.

What is the difference between a tool and a trigger?

A tool is something your AI calls, and there are 88 here. A trigger is something PopMCP watches for you: 15 YouTube events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into YouTube.

Connect YouTube to your AI in minutes

Launch a hosted MCP endpoint for YouTube, keep tool access under control, and start testing real workflow prompts right away.

Connect your first MCP