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.
[!WARNING] Important: Sensitive OAuth Scope & Re-Authentication: Subtitle/caption upload relies on the
https://www.googleapis.com/auth/youtube.force-sslscope, which is required by the YouTube Data API to perform caption write operations.
- Existing Users: If you authenticated with an older version of this MCP, your saved token will lack this scope. Any calls attempting to upload subtitles will fail with a
403 ForbiddenAPI error.- How to Update: You must delete the channel cache file (usually
.youtube_uploader_channels_cachein your working directory) and rerun theauthenticatetool to grant the new permissions.- Google Console Warning: Adding this sensitive scope will trigger a warning screen in Google Cloud Console. Since this is for your personal use, you can safely proceed past the "unverified app" warnings.
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.
Contributing
See CONTRIBUTING.md to contribute.
No comments yet
Be the first to share your take.