Connects Claude to Spotify's API with batch operations designed for handling hundreds of songs at once. Includes 18 tools covering library exports (all liked songs, followed artists, albums by save count), bulk track search with confidence scoring, and playlist creation from CSV imports. The confidence scoring system flags uncertain matches for human review before adding them to playlists, which is useful when importing song lists from podcast show notes or other text sources. Handles rate limiting and token refresh automatically. Author built it to manage playlists sourced from podcast episodes and maintain a 10k+ song library. Requires Spotify developer credentials and one-time OAuth setup before connecting to Claude.
A Model Context Protocol (MCP) server for bulk Spotify operations - batch playlist creation, library exports, and large-scale library management.
What makes this different from other Spotify MCPs?
Made cause I can't not have headphones on, support my 80k+ pocast subscriptions.
| Directory | Link |
|---|---|
| PyPI | pypi.org/project/spotify-bulk-actions-mcp |
| mcp.so | mcp.so/server/spotify-bulk-actions-mcp |
| awesome-mcp-servers | PR #1541 (pending) |
| Project | Description | Links |
|---|---|---|
| recordOS | Which albums do you love most? A visual album collection app | Live · Repo |
| Festival Navigator | Navigate multi-day festivals with friends | Repo |
Coming soon: Switched On Pop, This American Life, and more podcast playlists
Library Analysis:
Bulk Playlist Creation:
# Clone the repo
git clone https://github.com/khglynn/spotify-bulk-actions-mcp.git
cd spotify-bulk-actions-mcp
# Create and activate virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install the package
pip install -e .
# Copy env example and add your credentials
cp .env.example .env
# Edit .env with your SPOTIFY_CLIENT_ID and SPOTIFY_CLIENT_SECRET
Also on PyPI:
pip install spotify-bulk-actions-mcp- but you'll still need local.envand auth setup.
This opens a browser for you to log in:
python setup_auth.py
After login, your token is saved locally in .spotify_cache/.
source venv/bin/activate
python -c "from src.utils.auth import is_authenticated; print('Auth OK!' if is_authenticated() else 'Not authenticated')"
Add this to your Claude Code settings (~/.claude/settings.local.json):
{
"mcpServers": {
"spotify": {
"command": "/path/to/spotify-bulk-actions-mcp/venv/bin/python",
"args": ["/path/to/spotify-bulk-actions-mcp/src/server.py"]
}
}
}
Restart Claude Code after adding this.
| Tool | Description |
|---|---|
check_auth_status | Verify Spotify auth is working |
get_followed_artists | Get all artists you follow |
get_saved_tracks | Get all your liked songs |
get_library_artists | Artists from saved songs, ranked by count |
get_albums_by_song_count | Albums with N+ saved songs |
export_library_summary | Complete library export |
| Tool | Description |
|---|---|
search_track | Search for a single track |
search_track_fuzzy | Broader search when exact fails |
batch_search_tracks | Search many tracks with confidence scores |
get_track_preview_url | Get 30-second preview URL |
| Tool | Description |
|---|---|
create_playlist | Create a new playlist |
add_tracks_to_playlist | Add tracks to existing playlist |
import_and_create_playlist | Full CSV → playlist workflow |
create_playlist_from_search_results | Create from batch search |
add_reviewed_tracks | Add reviewed/corrected tracks |
get_playlist_info | Get playlist details |
| Tool | Description |
|---|---|
parse_song_list_csv | Validate a song CSV |
export_review_csv | Export uncertain matches for review |
Ask Claude:
"What artists do I have the most saved songs from?"
Claude will use get_library_artists and show you.
Ask Claude:
"Find albums where I have 6 or more saved songs"
Claude will use get_albums_by_song_count with min_songs=6.
title,artist
Bohemian Rhapsody,Queen
Hotel California,Eagles
Billie Jean,Michael Jackson
"Create a playlist called 'My Mix' from this CSV: [paste CSV]"
Claude will:
For large lists (500+ songs):
batch_search_tracks with your song listexport_review_csv to get uncertain matchesadd_reviewed_tracks to add your correctionsThe server handles Spotify's rate limits automatically:
For 10k songs, expect the initial library fetch to take 2-3 minutes.
| Location | Purpose |
|---|---|
.env | Your Spotify credentials (gitignored) |
.spotify_cache/ | Auth tokens and cached data (gitignored) |
src/server.py | Main MCP server |
src/tools/ | Tool implementations |
"Not authenticated" error:
python setup_auth.py
Rate limit errors: Wait a few minutes and try again. The server will auto-retry.
Token expired:
The server auto-refreshes tokens. If issues persist, re-run setup_auth.py.
.env (gitignored, never committed).spotify_cache/.env or token filesMIT
Made cause I can't not have headphones on. If this helps you, buy me a coffee!
SPOTIFY_CLIENT_ID*Spotify API Client ID from developer.spotify.com
SPOTIFY_CLIENT_SECRET*secretSpotify API Client Secret from developer.spotify.com
io.github.socialapishub/social-media-api
io.github.xpaysh/social-media
com.thenextgennexus/youtube-media-mcp-server
io.github.ludmila-omlopes/youtube-video-analyzer
csoai-org/social-media-ai-mcp
com.ezbizservices/social-media