<p align="center"> <img src="logo.png" alt="Spotify Bulk Actions MCP" width="200"> </p>
Spotify Bulk Actions MCP
<!-- mcp-name: io.github.khglynn/spotify-bulk-actions-mcp -->
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?
- Confidence scoring - Batch searches return HIGH/MEDIUM/LOW confidence for each match
- Human-in-the-loop - Uncertain matches are exported for review, then re-imported
- Bulk operations - Handle 500+ songs efficiently with rate limiting built-in
- Library exports - Export your complete library data
- Podcast playlist focused - Built specifically for importing song lists from podcast show notes
---
Support This Project
Made cause I can't not have headphones on, support my 80k+ pocast subscriptions. 
---
Listed On
| 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) |
---
Projects I've Built With This
| 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 |
Playlists Maintained With This MCP
Coming soon: Switched On Pop, This American Life, and more podcast playlists
---
What This Does
Library Analysis:
- Get all your followed artists
- Get all saved/liked songs (handles libraries up to 10k songs)
- Find unique artists from your library ranked by song count
- Find albums where you have 6+ saved songs (great for vinyl shopping!)
- Export your complete library summary
Bulk Playlist Creation:
- Import song lists from CSV files (for podcast playlists, etc.)
- Batch search with confidence scoring (HIGH/MEDIUM/LOW)
- Automatic handling of uncertain matches for human review
- Create playlists from search results
Quick Start
1. Prerequisites
- Python 3.10+
- A Spotify account
- Spotify Developer credentials (get them here)
2. Clone & Setup
# 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.
3. Authenticate with Spotify (One-Time)
This opens a browser for you to log in:
python setup_auth.py
After login, your token is saved locally in .spotify_cache/.
4. Test It Works
source venv/bin/activate
python -c "from src.utils.auth import is_authenticated; print('Auth OK!' if is_authenticated() else 'Not authenticated')"
5. Connect to Claude Code
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.
Available Tools (18)
Library Analysis
| 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 |
Search
| 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 |
Playlists
| 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 |
Utilities
| Tool | Description | |------|-------------| | parse_song_list_csv | Validate a song CSV | | export_review_csv | Export uncertain matches for review |
Example Workflows
Get Your Library Stats
Ask Claude: > "What artists do I have the most saved songs from?"
Claude will use get_library_artists and show you.
Find Albums for Vinyl
Ask Claude: > "Find albums where I have 6 or more saved songs"
Claude will use get_albums_by_song_count with min_songs=6.
Create Playlist from Song List
- Create a CSV file:
title,artist
Bohemian Rhapsody,Queen
Hotel California,Eagles
Billie Jean,Michael Jackson
- Ask Claude:
"Create a playlist called 'My Mix' from this CSV: [paste CSV]"
Claude will:
- Parse the CSV
- Search each song with confidence scoring
- Create the playlist with high-confidence matches
- Show you uncertain matches to review
Bulk Podcast Playlist
For large lists (500+ songs):
- Ask Claude to use
batch_search_trackswith your song list - Review the results (HIGH goes in automatically)
- Use
export_review_csvto get uncertain matches - Review/correct in a spreadsheet
- Use
add_reviewed_tracksto add your corrections
Rate Limits
The server handles Spotify's rate limits automatically:
- Small delays between API calls
- Automatic retry on 429 errors
- Caching to reduce repeat calls
For 10k songs, expect the initial library fetch to take 2-3 minutes.
Files & Data
| 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 |
Troubleshooting
"Not authenticated" error: ``bash 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.
Security Notes
- Your credentials are in
.env(gitignored, never committed) - Auth tokens are stored locally in
.spotify_cache/ - Never share your
.envor token files - If credentials are exposed, rotate them in Spotify Dashboard
License
MIT
---
Made cause I can't not have headphones on. If this helps you, buy me a coffee!






