loading…
Search for a command to run...
loading…
Enables AI assistants to search YouTube Music, manage playlists, and create smart recommendations using natural language.
Enables AI assistants to search YouTube Music, manage playlists, and create smart recommendations using natural language.
Full-featured MCP server for YouTube Music — search, manage playlists, and create smart recommendations through AI assistants.
npm install
cp .env.example .env
# Add your Google OAuth credentials to .env
npm run build
npm start
{
"mcpServers": {
"youtube-music": {
"command": "node",
"args": ["path/to/youtube-music-mcp-server/dist/index.js"],
"env": {
"GOOGLE_OAUTH_CLIENT_ID": "your-client-id",
"GOOGLE_OAUTH_CLIENT_SECRET": "your-client-secret"
}
}
}
}
| Tool | Description |
|---|---|
search_songs |
Search songs with configurable limits |
search_albums |
Search albums |
search_artists |
Search artists |
get_song_info |
Detailed song information |
get_album_info |
Album with all tracks |
get_artist_info |
Artist with top songs |
get_library_songs |
User's liked music (filters non-music) |
| Tool | Description |
|---|---|
get_playlists |
List user's playlists |
get_playlist_details |
Playlist with all tracks |
create_playlist |
Create new playlist |
edit_playlist |
Update metadata |
delete_playlist |
Delete playlist |
add_songs_to_playlist |
Batch add songs |
remove_songs_from_playlist |
Batch remove songs |
| Tool | Description |
|---|---|
start_smart_playlist |
Begin creation session |
add_seed_artist |
Add artist influence |
add_seed_track |
Add track as seed |
refine_recommendations |
Set preferences (exclude, tags, diversity) |
get_recommendations |
Generate recommendations |
preview_playlist |
Preview before creating |
create_smart_playlist |
Create on YouTube Music |
get_user_taste_profile |
Analyze listening habits |
All tools return structured JSON with metadata:
{
"songs": [{
"videoId": "abc123",
"title": "Song Title",
"artists": [{"id": "...", "name": "Artist"}],
"album": {"id": "...", "name": "Album", "year": 2023},
"duration": "3:45",
"durationSeconds": 225
}],
"metadata": {
"returned": 20,
"hasMore": true
}
}
"Make me a playlist based on Radiohead and Boards of Canada"
→ start_smart_playlist()
→ add_seed_artist("Radiohead")
→ add_seed_artist("Boards of Canada")
→ get_recommendations()
→ create_smart_playlist("Late Night Electronica")
"Add these songs to my workout playlist"
→ search_songs("high energy workout")
→ add_songs_to_playlist(playlistId, [videoId1, videoId2, ...])
src/
├── index.ts # Entry point
├── server.ts # MCP server setup
├── youtube-music/ # Custom YTM client
│ ├── client.ts # API methods
│ └── parsers.ts # Response parsing
├── musicbrainz/ # MusicBrainz integration
├── listenbrainz/ # ListenBrainz recommendations
├── recommendations/ # Smart playlist engine
├── auth/ # OAuth 2.1 + PKCE
└── tools/ # MCP tool definitions
docker build -t youtube-music-mcp .
docker run -p 8081:8081 \
-e GOOGLE_OAUTH_CLIENT_ID="..." \
-e GOOGLE_OAUTH_CLIENT_SECRET="..." \
youtube-music-mcp
npm run dev # Development mode
BYPASS_AUTH_FOR_TESTING=true npm run dev # Skip OAuth for testing
MIT
Run in your terminal:
claude mcp add youtube-music-mcp-server -- npx Security
Low riskAutomated heuristic from public metadata — not a security guarantee.