Engineering

YouTube MCP server: how to upload videos from Claude

Search for a YouTube MCP server and you'll find plenty. Almost none can upload a video. Here's why the Data API splits that way, and how to set up one that publishes.

YouTube MCP server: how to upload videos from Claude

Search for a YouTube MCP server and you will find a lot of them. Almost none of them can upload a video.

That is not a criticism of the projects - they are solving a different problem well. But it wastes a lot of people's afternoon, so it is worth being direct about why, and what the setup looks like if uploading is what you actually came for.

Why most YouTube MCP servers cannot upload

The YouTube Data API splits cleanly. Reading public data - video metadata, captions, search results, channel statistics - needs only an API key. Anyone can get one in about two minutes, which is why the read-only servers are plentiful and easy to install.

Uploading needs OAuth against a channel you own, with the upload scope. Getting that working yourself means:

  1. Creating a Google Cloud project and enabling the YouTube Data API.
  2. Configuring an OAuth consent screen and requesting the upload scope, which Google classifies as sensitive.
  3. Submitting for OAuth verification. Until that clears, your app works only for a handful of test users you add by hand.
  4. Handling refresh tokens, quota, and the resumable upload protocol, which is not a simple file POST.

That is days of work before a single video goes up, and the verification review is the part you cannot schedule. It is the reason "YouTube MCP server" overwhelmingly means "YouTube reading MCP server" in practice.

Does YouTube have an official MCP server?

No. Google has not published one for YouTube, so every option today is third-party. When comparing them, read the tool list rather than the title - a server named for YouTube that exposes get_transcript and search_videos and nothing else is telling you plainly that it cannot publish.

Uploading from Claude with Outstand

Outstand's YouTube MCP server is hosted and carries the Google Cloud project and OAuth verification for you. Connecting a channel is a consent screen, not a review cycle.

1. Connect the channel. Create an Outstand account and connect YouTube through the hosted OAuth link. Approve the upload scope for the channel you want the agent to publish to.

2. Add the server to your client. In Claude Code:

claude mcp add -t http -H "Authorization: Bearer ost_your_key" outstand https://mcp.outstand.so/mcp

For Claude Desktop, Cursor, or ChatGPT, add https://mcp.outstand.so/mcp as a custom connector and sign in once in the browser. The per-network guide has the exact config for each client.

3. Ask for the upload. Give the agent a video URL, a title, and a privacy status. It drives the resumable upload against the Data API and reports back the video.

What the agent can set

The tools map onto the fields YouTube actually exposes on upload:

  • Title and description - separate fields. Set the title explicitly, or Outstand takes the first line of your content and truncates it to YouTube's 100-character limit.
  • Privacy status - public, unlisted, or private. Unlisted is the sensible default while an agent is still learning your workflow.
  • Shorts - a flag, not a different endpoint. Mark the post as a Short and the #shorts tag is appended to the description. YouTube still decides Short placement from the video's aspect ratio and duration.
  • Tags and category - passed straight through.
  • Made for kids - exposed because YouTube requires an audience declaration on every upload, and getting it wrong has consequences at the channel level.

After upload, get_post_analytics returns views, likes, and comments, and get_account_metrics returns subscriber, view, and video counts for the channel.

The constraints, stated plainly

  • One video per post. YouTube has no multi-video or text-only upload, so every post needs exactly one video file.
  • Uploads are asynchronous. YouTube processes the file after the transfer finishes, so a video can be accepted and still be unwatchable for a few minutes.
  • There is no repost on YouTube's API, and comment replies are not wired up on this server yet. Both report a clear failure rather than silently doing nothing.
  • This publishes your own videos. It does not pull transcripts, search other channels, or analyse videos you do not own.

That last one is a genuine limitation rather than a hedge. If you want both jobs, run a read-only YouTube MCP alongside this one - MCP clients are perfectly happy with several servers connected at once, and the two do not overlap.

Where this gets useful

The interesting version is not "upload one video by asking nicely". It is that the same connection reaches ten other networks. An agent can upload the video to YouTube, post the vertical cut to TikTok and Instagram, and write the announcement on LinkedIn in one pass, because it is one API underneath rather than four integrations.

Setup is a few minutes and the MCP server is included on every plan at $19/month with 3,000 posts. Start here.