@node2flow/youtube-mcp
v1.0.1
Published
MCP server for YouTube Data API v3 — search, videos, channels, playlists, comments, and more through 20 tools
Maintainers
Readme
YouTube MCP Server
MCP server for YouTube Data API v3 — search videos, get channel info, manage playlists, post comments, and more through 20 tools.
Quick Start
Claude Desktop / Cursor (stdio)
{
"mcpServers": {
"youtube": {
"command": "npx",
"args": ["-y", "@node2flow/youtube-mcp"],
"env": {
"YOUTUBE_CLIENT_ID": "your_client_id",
"YOUTUBE_CLIENT_SECRET": "your_client_secret",
"YOUTUBE_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}HTTP Mode
YOUTUBE_CLIENT_ID=id YOUTUBE_CLIENT_SECRET=secret YOUTUBE_REFRESH_TOKEN=token npx @node2flow/youtube-mcp --http
# → http://localhost:3000/mcpCloudflare Worker
https://youtube-mcp-community.node2flow.net/mcp?YOUTUBE_CLIENT_ID=id&YOUTUBE_CLIENT_SECRET=secret&YOUTUBE_REFRESH_TOKEN=tokenConfiguration
| Variable | Required | Description |
|----------|----------|-------------|
| YOUTUBE_CLIENT_ID | Yes | OAuth 2.0 Client ID from Google Cloud Console |
| YOUTUBE_CLIENT_SECRET | Yes | OAuth 2.0 Client Secret |
| YOUTUBE_REFRESH_TOKEN | Yes | OAuth 2.0 Refresh Token (server auto-refreshes access tokens) |
How to Get Credentials
- Go to Google Cloud Console
- Create a project → Enable YouTube Data API v3
- Go to Credentials → Create OAuth 2.0 Client ID (Desktop app or Web application)
- Note down Client ID and Client Secret
- Get a Refresh Token using OAuth 2.0 Playground:
- Click gear icon → Check "Use your own OAuth credentials" → Enter your Client ID & Secret
- In Step 1, select scope:
https://www.googleapis.com/auth/youtube - Click "Authorize APIs" → Sign in with your Google account
- Click "Exchange authorization code for tokens"
- Copy the Refresh Token
The server automatically refreshes access tokens — you only need to set up credentials once.
Important: Testing vs Production Mode
If your Google Cloud app is in Testing status, refresh tokens expire every 7 days. To get long-lived tokens:
- Go to OAuth consent screen → Click PUBLISH APP
- Confirm (no verification needed for personal use)
- Get a new refresh token from OAuth Playground
| | Testing Mode | Production Mode | |---|---|---| | Refresh Token | Expires every 7 days | Never expires (until revoked) | | Who can use | Test Users only (max 100) | Anyone | | Consent screen | "Unverified app" warning | No warning (if verified) |
Tools (20)
Read Operations (10)
| Tool | Description | Quota |
|------|-------------|-------|
| youtube_search | Search videos, channels, playlists | 100 |
| youtube_get_video | Get video details by ID(s) | 1 |
| youtube_get_channel | Get channel info by ID or username | 1 |
| youtube_list_playlists | List playlists by channel or IDs | 1 |
| youtube_list_playlist_items | List videos in a playlist | 1 |
| youtube_list_comments | List top-level comments on video | 1 |
| youtube_list_comment_replies | List replies to a comment | 1 |
| youtube_list_video_categories | List available categories | 1 |
| youtube_list_subscriptions | List channel subscriptions | 1 |
| youtube_get_popular_videos | Get trending/popular videos | 1 |
Write Operations (10)
| Tool | Description | Quota |
|------|-------------|-------|
| youtube_post_comment | Post top-level comment on video | 50 |
| youtube_reply_comment | Reply to existing comment | 50 |
| youtube_update_comment | Edit a comment | 50 |
| youtube_delete_comment | Delete a comment | 50 |
| youtube_create_playlist | Create a new playlist | 50 |
| youtube_update_playlist | Update playlist details | 50 |
| youtube_delete_playlist | Delete a playlist | 50 |
| youtube_add_playlist_item | Add video to playlist | 50 |
| youtube_remove_playlist_item | Remove video from playlist | 50 |
| youtube_rate_video | Like/dislike/unrate a video | 50 |
Quota
YouTube Data API v3 has a daily quota of 10,000 units per project.
| Operation | Cost | |-----------|------| | Search | 100 units | | Read (list/get) | 1 unit | | Write (create/update/delete) | 50 units |
Tips:
- Use
youtube_get_video(1 unit) instead ofyoutube_search(100 units) when you have the video ID - Use the
partparameter to request only needed data
Docker
docker compose up -d
# Endpoint: http://localhost:3000/mcpLicense
MIT License - see LICENSE
Copyright (c) 2026 Node2Flow
