s

spotify-bulk-actions-mcp

@khglynn/spotify-bulk-actions-mcp
Hosted
0 Stars 54 次浏览 khglynn 更新于 2026-08-23

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. Buy Me A Coffee


# 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 .env and 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

  1. Create a CSV file:
title,artist
Bohemian Rhapsody,Queen
Hotel California,Eagles
Billie Jean,Michael Jackson
  1. Ask Claude:

"Create a playlist called 'My Mix' from this CSV: [paste CSV]"

Claude will:

  1. Parse the CSV
  2. Search each song with confidence scoring
  3. Create the playlist with high-confidence matches
  4. Show you uncertain matches to review

# # Bulk Podcast Playlist

For large lists (500+ songs):

  1. Ask Claude to use batch_search_tracks with your song list
  2. Review the results (HIGH goes in automatically)
  3. Use export_review_csv to get uncertain matches
  4. Review/correct in a spreadsheet
  5. Use add_reviewed_tracks to 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 .env or 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!

相关 MCP 服务