authenticateLABSCO 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 timeupdate_video— the post-upload pass: add the video to a playlist, upload a custom thumbnail, and attach subtitle tracksauthenticateandaccesstoken— generate the authorization URL, then exchange the code for credentials and channel infochannelsandrefreshtoken— 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
One command — /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/anwerj/youtube-uploader-mcp/master/scripts/install.sh)"
USE CASES
Publishing a video without opening YouTube Studio
Hand over the file and let the assistant write the title, description and tags as it uploads.
Scheduling a release
Upload as private with a scheduled publish time rather than remembering to press the button later.
Finishing the video off
Add it to the right playlist, attach a thumbnail under the size limit, and upload the subtitle track.
Managing more than one channel
Authenticate each, list the channels, and refresh tokens when a session goes stale.
6 tools
Listed in project docs. Your client may show a different list.
accesstokenchannelsrefreshtokenupload_videoupdate_videoBEFORE YOU INSTALL
What to know first
Tools you get
6 tools named in the project's documentation.
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
Setup
Visit https://github.com/anwerj/youtube-uploader-mcp/releases and download the binary for your OS (youtube-uploader-mcp-linux-amd64 / youtube-uploader-mcp-darwin-arm64 / youtube-uploader-mcp-windows-amd64.exe, etc.)
On Linux or macOS, set the executable bit:
chmod +x <YOUR_PATH_TO_YOUTUBE_UPLOADER_MCP><YOUR_OS>-<YOUR_ARCH>Add the mcpServers block to your Claude Desktop / Cursor config, pointing at the binary and at your client_secret.json
Set up Google OAuth 2.0 and download client_secret.json from the Google Developer Console — see youtube_oauth2_setup.md
Run the authenticate tool from your MCP client to complete the OAuth login
Or run the install script
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/anwerj/youtube-uploader-mcp/master/scripts/install.sh)"MCP Clients
Any MCP client
{
"mcpServers": {
"youtube-uploader-mcp": {
"command": "<YOUR_PATH_TO_YOUTUBE_UPLOADER_MCP><YOUR_OS>-<YOUR_ARCH>",
"args": [
"-client_secret_file",
"<YOUR_PATH_TO_CLIENT_SECRET>"
]
}
}
}