YouTube MCP server: channel analytics and video management from Claude
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 today | Agent Planners MCP | |
|---|---|---|
| YouTube tools | Community, if any | 7 reads, 4 writes |
| Channel + video analytics | Varies | Included |
| Video upload | Just another call | Never unattended; never public by default |
| Anomaly detection + alerts | No | Yes |
| Google Ads in the same session | No | Yes — video ads need both |
How to configure it
- 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.
- 2Connect YouTube under Integrations — that OAuth step is why the MCP key never carries platform credentials.
- 3Add the server to Claude Code, Claude Desktop or Codex using the snippet below.
- 4Have the agent call `describe_permissions` first — it reports the key's mode, scopes, plan entitlement and connected accounts.
- 5Call `list_accounts` for the account ids, and scope each call with one. Resolution is exact or it refuses, naming the candidates.
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:
{
"mcpServers": {
"agentplanners": {
"url": "https://www.agentplanners.com/api/mcp",
"headers": {
"Authorization": "Bearer ap_live_…"
}
}
}
}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.
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.