Labsco
MCP SERVER

YouTube Uploader MCP

by anwerj

Upload a video to YouTube from Claude, Cursor or VS Code — with the title, description and tags written in the same conversation.

Social Media Accounts & Posting
Summary
The upload and the post-upload work are deliberately separate calls.

Uploading sets the video's own details; playlists, thumbnails and captions come afterwards through the second tool, which means a failed thumbnail does not cost you the upload. The scope change around captions is the one gotcha worth handling before your first attempt — an existing token will not carry it, and the failure looks like a permissions bug rather than a stale grant.

What it is

A Go binary that publishes to YouTube from any MCP client. It runs the OAuth2 flow locally, keeps the tokens on your machine, and uploads through the YouTube Data API — the credentials never reach the model.

What you get
  • `upload_video` — uploads the file and sets title, description, tags, category, optional language, privacy status, made-for-kids flags and a scheduled publish time
  • `update_video` — the post-upload pass: add the video to a playlist, upload a custom thumbnail, and attach subtitle tracks
  • `authenticate` and `accesstoken` — generate the authorization URL, then exchange the code for credentials and channel info
  • `channels` and `refreshtoken` — list the authorized channels and force a token refresh, so multiple channels work from one install
  • Metadata written by the assistant, so titles, descriptions and tags come out of the conversation rather than a form
Requirements

A Google Cloud OAuth 2.0 client secret file, which you point the binary at with `-client_secret_file`. One install command downloads the binary, sets permissions and writes the Claude Desktop entry for you, then prints the config for other clients. Custom thumbnails must be under 2MB. Subtitle upload needs a broader YouTube scope — if you authenticated with an older build, delete the channel cache file and run the authenticate tool again or caption calls fail with 403.

Setup effort

Build from source — clone the repository and build it, then point your client at the binary