Upload Videos to YouTube via CLI
MCP server that uploads videos to YouTube directly from Claude, Cursor, or VS Code with OAuth2 authentication, AI-assisted metadata generation, and post-upload
Why it matters
Automate your YouTube video uploads directly from your command line. This asset handles the complexities of OAuth2 authentication and token management for seamless video publishing.
Outcomes
What it gets done
Configure OAuth2 authentication for YouTube
Manage access and refresh tokens
Upload video files using command-line arguments
Execute uploads via an MCP server command
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/vb-youtube-uploader-mcp | bash Capabilities
Tools your agent gets
Upload a video to YouTube with OAuth2 authentication
Overview
Youtube Uploader MCP Server
YouTube Uploader MCP is a Model Context Protocol server that enables direct video uploads to YouTube from MCP clients like Claude Desktop, Cursor, VS Code, and AnythingLLM. It provides OAuth2 authentication, token management, and six tools for the complete upload workflow: authenticate, accesstoken, channels, refreshtoken, upload_video, and update_video. The upload_video tool handles video files with metadata including titles, descriptions, tags, category settings, privacy options, and scheduled publish times. The update_video tool manages post-upload configurations including playlist addition Use this connector when you want to upload videos to YouTube from within your AI workflow and generate video metadata using your LLM client. It's designed for content creators managing multiple YouTube channels who want to keep OAuth credentials local without sharing them with LLMs or third-party services. Do NOT use this if you need YouTube Studio features beyond what the upload and update_video tools provide.
What it does
YouTube Uploader MCP is a Model Context Protocol server that enables direct video uploads to YouTube from any MCP client (Claude Desktop, Cursor, VS Code, AnythingLLM) without using the YouTube Studio interface or command-line tools. It handles OAuth2 authentication locally, manages tokens across multiple channels, and provides tools for uploading videos with metadata control including titles, descriptions, tags, category settings, privacy options, scheduled publish times, custom thumbnails, playlist assignment, and subtitle attachment.
When to use - and when NOT to
Use this connector when you want to upload videos to YouTube from within your AI workflow, generate video metadata (titles, descriptions, tags) using your LLM client, or manage multiple YouTube channels without switching contexts. It's designed for content creators who want to streamline publishing while keeping OAuth credentials local and never shared with third parties.
Do NOT use this if you need YouTube Studio's advanced features beyond what the upload and update_video tools provide. This server focuses on video upload and post-upload configuration tasks.
Inputs and outputs
You provide a video file path, metadata (title, description, tags, category), privacy settings (public, private, unlisted), optional language settings, scheduled publish times, and post-upload assets like thumbnails (under 2MB) and subtitle files. The server requires a Google OAuth2 client_secret.json file from Google Developer Console.
The server provides six tools: authenticate (generates OAuth2 URL), accesstoken (exchanges code for credentials and channel info), channels (retrieves authenticated channels), refreshtoken (force-refreshes tokens), upload_video (uploads video file with main details), and update_video (manages post-upload configurations including playlist additions, thumbnail uploads, and subtitle attachments).
Integrations
Compatible MCP clients include:
- Claude Desktop: Direct integration via MCP configuration for conversational video uploads
- Cursor: IDE-based video publishing workflow
- VS Code: Editor-integrated YouTube management
- AnythingLLM: Multi-model AI client support
Requires Google OAuth2 setup through Google Developer Console with the https://www.googleapis.com/auth/youtube.force-ssl scope for full functionality including subtitle uploads.
Installation
Single-command installation for Mac and Linux:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/anwerj/youtube-uploader-mcp/master/scripts/install.sh)"
For Windows PowerShell:
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/anwerj/youtube-uploader-mcp/master/scripts/install.ps1" -OutFile "$env:TEMP\install.ps1"; PowerShell -NoProfile -ExecutionPolicy Bypass -File "$env:TEMP\install.ps1"
The installer downloads the OAuth client secret, sets permissions, updates Claude Desktop config automatically, and prints configuration for other MCP clients.
Manual configuration example:
{
"mcpServers": {
"youtube-uploader-mcp": {
"command": "/absolute/path/to/youtube-uploader-mcp-<os>-<arch>",
"args": [
"-client_secret_file",
"/absolute/path/to/client_secret.json(See Below)"
]
}
}
}
Who it's for
Content creators, video producers, and developers who publish to YouTube regularly and want to integrate uploads into AI-assisted workflows. Ideal for users managing multiple YouTube channels who need secure, local OAuth management without exposing credentials to LLMs or third-party services. The free, open-source approach suits creators who want control over their authentication flow and upload automation.
Source README
YouTube Uploader MCP
AI‑powered YouTube uploader-no CLI, no YouTube Studio, and no secrets ever shared with LLMs or third‑party apps and all free of cost! It includes OAuth2 authentication, token management, and video upload functionality.
Features
- Direct Uploads: Upload videos to YouTube from Claude, Cursor, VS Code, or any other MCP client.
- AI-Assisted Metadata: Automatically generate titles, descriptions, and tags via your MCP client.
- OAuth2 Authentication: Secure local login, multi-channel support, and auto-refreshing.
- Metadata & Settings: Category tags, optional language settings, and explicit metadata control.
- Privacy & Scheduling: Support for public, private, or unlisted statuses, and scheduled publish times.
- Post-Upload Configs (
update_video): Add videos to playlists, upload custom thumbnails (<2MB), and attach subtitles.
Single Command Installation
For Mac and Linux
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/anwerj/youtube-uploader-mcp/master/scripts/install.sh)"
For Windows(Powershell)
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/anwerj/youtube-uploader-mcp/master/scripts/install.ps1" -OutFile "$env:TEMP\install.ps1"; PowerShell -NoProfile -ExecutionPolicy Bypass -File "$env:TEMP\install.ps1"
Expected result
This single command will
- Help in downloading oAuth client secret files, if not downloaded,
- Download the MCP server,
- Set minimum required permission to run mcp server,
- Auto update Cluade Desktop config with youtube-uploader-mcp server and
- At last print exact MCP config for any other clients VS Code/Cursor/AnythingLLM etc.
Demo
Setup and Demo Video
Manual Installation
Please check Single Command Installation, proceed if you prefer manual installation.
Visit the Releases page and download the appropriate binary for your operating system:
youtube-uploader-mcp-linux-amd64youtube-uploader-mcp-darwin-arm64youtube-uploader-mcp-windows-amd64.exe- etc.
You can use the latest versioned tag, e.g.,
v1.0.0.
2. Make it Executable (Linux/macOS)
chmod +x path/to/youtube-uploader-mcp-<os>-<arch>
3. Configure MCP (e.g., in Claude Desktop or Cursor)
{
"mcpServers": {
"youtube-uploader-mcp": {
"command": "/absolute/path/to/youtube-uploader-mcp-<os>-<arch>",
"args": [
"-client_secret_file",
"/absolute/path/to/client_secret.json(See Below)"
]
}
}
}
4. Set Up Google OAuth 2.0
To upload to YouTube, you must configure OAuth and get a client_secret.json file from the Google Developer Console.
➡️ Follow the guide in youtube_oauth2_setup.md for a step-by-step walkthrough.
Usage & Tool Orchestration
The MCP server registers the following tools:
authenticate: Generates the OAuth2 URL for authentication.accesstoken: Exchanges the code for user credentials and channel info.channels: Retrieves authenticated channels.refreshtoken: Force-refreshes tokens.upload_video: Uploads the video file and configures main details (title, description, tags, category, optional language, status, kids' flags, scheduled publish).update_video: Decoupled tool that manages post-upload configurations: adds the video to a playlist, uploads a custom thumbnail (must be <2MB), and attaches subtitle/caption tracks.
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.
