MCP

YouTube MCP server: channel analytics and video management from Claude

TL;DR

YouTube completes the video side: organic channel performance next to paid media. It also contains the only irreversible write on the platform, which is treated accordingly — an upload cannot be taken back, so it is never unattended and never public by default.

What already exists for this platform

Google has not shipped a platform-official YouTube MCP server for analytics at the time of writing (September 2026). The YouTube scope family is also classified sensitive.

  • No official analytics server, and the sensitive scope classification is a real barrier to shipping your own.
  • The Data and Analytics APIs are separate — channel metadata and performance metrics come from different places, which trips up single-tool wrappers.
  • Upload is available in the API, and it is the operation that deserves the most thought.

What a full MCP server adds

Typical option todayAgent Planners MCP
YouTube toolsCommunity, if any7 reads, 4 writes
Channel + video analyticsVariesIncluded
Video uploadJust another callNever unattended; never public by default
Anomaly detection + alertsNoYes
Google Ads in the same sessionNoYes — video ads need both
Tool counts are derived from the live catalogue rather than typed by hand: this family exposes 7 reads and 4 writes of the 384 tools on the endpoint. A key only sees the writes if it carries `tools:write`.

How to configure it

  1. 1Create a key in API & MCP. `tools:read` for questions; add `tools:write` if the agent should be able to change things. Tools mode needs a paid plan and fails closed.
  2. 2Connect YouTube under Integrations — that OAuth step is why the MCP key never carries platform credentials.
  3. 3Add the server to Claude Code, Claude Desktop or Codex using the snippet below.
  4. 4Have the agent call `describe_permissions` first — it reports the key's mode, scopes, plan entitlement and connected accounts.
  5. 5Call `list_accounts` for the account ids, and scope each call with one. Resolution is exact or it refuses, naming the candidates.
bash
claude mcp add --transport http agentplanners https://www.agentplanners.com/api/mcp \
  --header "Authorization: Bearer ap_live_…"

Claude Desktop and Codex

Claude Desktop takes the same endpoint as JSON:

json
{
  "mcpServers": {
    "agentplanners": {
      "url": "https://www.agentplanners.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ap_live_…"
      }
    }
  }
}
Codex uses the same endpoint from `~/.codex/config.toml`, with the key in an environment variable rather than the file: `[mcp_servers.agentplanners]` / `url = "…/api/mcp"` / `bearer_token_env_var = "AGENTPLANNERS_API_KEY"`.

Upload is the one write that cannot be undone

Almost every other write on this platform is reversible: a paused campaign can be resumed, a budget can be restored, a tag draft can be discarded. A published video is on the internet. That asymmetry is the reason upload defaults to unlisted rather than public, and why a public upload never happens on an unattended run.

There is a practical constraint that surprises people: Google Ads refuses a private video when building a video ad, with `VIDEO_NOT_ACCESSIBLE`. It must be unlisted. Private is not a safer version of unlisted for this purpose — it simply does not work.

Video has no post-hoc cropping either: the aspect ratio is fixed at generation time. Deciding it late means generating again.

Use cases

  • Organic channel performance next to paid video spend, which needs YouTube and Google Ads on one key.
  • Video ad workflows end to end — the asset, the upload, and the campaign that uses it, each step approved.
  • Channel anomaly detection and alerts, on the same mechanism as the ad platforms.
  • Scheduled channel reporting, delivered rather than checked.

Frequently asked questions

Is there an official YouTube MCP server?
Not from Google for analytics at the time of writing (September 2026). The YouTube scope family is classified sensitive, which makes shipping your own more involved.
Can an AI agent upload a video to my channel?
It can, and it is treated as the exception it is: an upload cannot be undone, so it defaults to unlisted and a public upload never happens on an unattended run.
Why does Google Ads reject my private video?
Google Ads refuses private videos when building a video ad and returns VIDEO_NOT_ACCESSIBLE. The video must be unlisted — private is not a stricter version of unlisted here, it simply fails.
Put a human-approved agent on your ad ops

Start free — 2,500 credits a month, no credit card. Reads are free; every write waits for you.

Related reading