yt-playlist-mcp
Allows searching YouTube videos, creating playlists, and managing playlist items (adding, removing, reordering) on the user's own YouTube account via the YouTube Data API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@yt-playlist-mcpsearch for 'study music' and create a playlist with the first 3 results"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
yt-playlist-mcp
Local MCP server for Claude Desktop that searches YouTube and creates playlists on your own account.
Tools
search_youtube(query, max_results)— video search with title, channel, duration, URLcreate_playlist(title, video_ids[], description?)— creates a private playlist and adds the videos in ordersearch_playlists(query?)— lists your own playlists (optionally filtered by title substring) so later sessions can find one by IDadd_to_playlist(playlist_id, video_ids[])— appends videos to an existing playlistlist_playlist_items(playlist_id)— lists a playlist's videos in orderremove_video(playlist_id, video_id)— removes all occurrences of a video from a playlistreorder_playlist(playlist_id, video_ids[])— puts the given videos first, in order; pass the full list to sort a whole playlistdelete_playlist(playlist_id)— permanently deletes a whole playlist
Auth is OAuth 2.0 (Desktop-app client): a one-time browser consent flow stores
a refresh token at ~/.config/yt-playlist-mcp/token.json (mode 600); after
that the server refreshes access tokens silently.
1. Google Cloud setup (one time, in the browser)
Go to https://console.cloud.google.com/ and create a new project (e.g.
yt-playlist-mcp).Enable the API: APIs & Services → Library → search "YouTube Data API v3" → Enable.
OAuth consent screen: APIs & Services → OAuth consent screen (Google may call this "Google Auth Platform → Branding/Audience").
User type: External
App name / support email / developer email: anything (only you will see it)
Scopes: you can skip adding scopes here; the app requests
https://www.googleapis.com/auth/youtubeat runtimePublish the app (Audience → "Publish app" → confirm "In production"). Leaving it in Testing status makes Google expire the refresh token every 7 days, forcing you to re-run the auth flow weekly. Published but unverified is fine for personal use — you'll click through one "Google hasn't verified this app" warning during consent (Advanced → "Go to yt-playlist-mcp (unsafe)").
Create credentials: APIs & Services → Credentials → Create credentials → OAuth client ID → Application type: Desktop app. Copy the Client ID and Client secret.
Related MCP server: Xiaozhi YouTube MCP
2. Build and authorize
npm install
npm run build
YOUTUBE_CLIENT_ID=xxx.apps.googleusercontent.com \
YOUTUBE_CLIENT_SECRET=yyy \
npm run authnpm run auth opens your browser; sign in with the Google account whose
YouTube you want to manage, click through the unverified-app warning, and
approve. Tokens land in ~/.config/yt-playlist-mcp/token.json.
Re-run npm run auth any time to re-authorize (e.g. if you revoke access at
https://myaccount.google.com/permissions).
3. Hook up Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json
(create it if missing) — use absolute paths, since Claude Desktop does not
launch servers from this directory:
{
"mcpServers": {
"youtube": {
"command": "/absolute/path/to/node",
"args": ["/Users/will/Projects/youtube-mcp/dist/index.js"],
"env": {
"YOUTUBE_CLIENT_ID": "xxx.apps.googleusercontent.com",
"YOUTUBE_CLIENT_SECRET": "yyy"
}
}
}
}(which node prints the node path.) Restart Claude Desktop; the two tools
appear under the youtube server.
Quota
The YouTube Data API grants 10,000 units/day by default:
search_youtube: ~101 units per call (search 100 + videos.list 1)create_playlist: 50 units + 50 per video addedadd_to_playlist: 50 units per videoremove_video: ~51 units (lookup 1 + delete 50 per occurrence)search_playlists: 1 unit per 50 playlistslist_playlist_items: 1 unit per 50 videosdelete_playlist: ~51 unitsreorder_playlist: 50 units per video actually moved (already-in-place videos cost nothing)
So roughly 90 searches/day, or fewer if you create large playlists. Quota
errors come back as tool errors mentioning quotaExceeded.
Development
npm run build # tsc → dist/
npm start # run the stdio server directly (for inspector/debugging)
npx @modelcontextprotocol/inspector node dist/index.js # interactive test UISecrets never live in the repo: client ID/secret come from env vars
(.env.example documents them), tokens live under ~/.config/yt-playlist-mcp/.
This server cannot be deployed
Maintenance
Related MCP Connectors
YouTube transcripts, video details, search, channels and playlists. OAuth sign-in or API key.
91YouTube discovery, transcripts, library search, and monitors with API keys or OAuth.
YouTube MCP — wraps the YouTube Data API v3 (BYO API key)
YouTube: YouTube Data API, you can add various YouTube features to your app. Use the API for.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search for music and create/manage playlists on YouTube Music via OAuth 2.0 authentication.1MIT
- AlicenseAqualityBmaintenanceEnables searching and playing songs via YouTube Data API v3, returning YouTube playback URLs.3MIT
- FlicenseNot gradedqualityCmaintenanceEnables YouTube video upload, metadata updates, thumbnail management, stats retrieval, and analytics via the YouTube Data API v3 and Analytics API using OAuth 2.0.-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with YouTube channels, providing analytics, video metadata updates, transcript extraction, and comment management through official Google APIs with OAuth 2.0.MIT