spotify-bulk-actions-mcp
MCP server for bulk Spotify operations - batch playlist creation, exports, management
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"spotify-bulk-actions-mcp": {
"args": [
"spotify-bulk-actions-mcp@0.1.1"
],
"command": "uvx"
}
}
}
可用工具 (5 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
tavily_search 14 个参数 需填 1 项
Search the web for current information on any topic. Use for news, facts, or data beyond your knowledge cutoff. Returns snippets and source URLs.
必填参数:query
tavily_extract 6 个参数 需填 1 项
Extract content from URLs. Returns raw page content in markdown or text format.
必填参数:urls
tavily_crawl 11 个参数 需填 1 项
Crawl a website starting from a URL. Extracts content from pages with configurable depth and breadth.
必填参数:url
tavily_map 8 个参数 需填 1 项
Map a website's structure. Returns a list of URLs found starting from the base URL.
必填参数:url
tavily_research 2 个参数 需填 1 项
Perform comprehensive research on a given topic or question. Use this tool when you need to gather information from multiple sources to answer a question or complete a task. Returns a detailed response based on the research findings.
必填参数:input
服务介绍
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:
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!