Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
6,000+ web scrapers for your AI agent, start free logo6,000+ web scrapers for your AI agent, start free

Apify gives your agent live web data: 6,000+ prebuilt scrapers and actors, MCP-ready. Sign up free with $5 in usage credits.

Try Apify free
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 48,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here
spotify-bulk-actions-mcp logo

spotify-bulk-actions-mcp

khglynn/spotify-bulk-actions-mcp
1 starsv0.1.1STDIORegistry activeMITUpdated 2026-06-09Community

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

claude mcp add spotify-bulk-actions -- uvx spotify-bulk-actions-mcp

Summary

Bulk Spotify operations with confidence-scored song matching, batch playlist creation from CSV/podcast lists, and library exports for discovering your most-saved artists and albums.

Connect from your MCP client

One-click install

Add this server to your editor with a single click. Fill in any required credentials afterward.

Claude Code

Run this once and Claude Code registers the server for you:

claude mcp add spotify-bulk-actions -- uvx spotify-bulk-actions-mcp

Claude Desktop

Add this to claude_desktop_config.json under Settings → Developer → Edit Config:

{
  "mcpServers": {
    "spotify-bulk-actions": {
      "command": "uvx",
      "args": [
        "spotify-bulk-actions-mcp"
      ],
      "env": {
        "SPOTIFY_CLIENT_ID": "<SPOTIFY_CLIENT_ID>",
        "SPOTIFY_CLIENT_SECRET": "<SPOTIFY_CLIENT_SECRET>"
      }
    }
  }
}

Cursor

Add this to .cursor/mcp.json in your project (or ~/.cursor/mcp.json for all projects):

{
  "mcpServers": {
    "spotify-bulk-actions": {
      "command": "uvx",
      "args": [
        "spotify-bulk-actions-mcp"
      ],
      "env": {
        "SPOTIFY_CLIENT_ID": "<SPOTIFY_CLIENT_ID>",
        "SPOTIFY_CLIENT_SECRET": "<SPOTIFY_CLIENT_SECRET>"
      }
    }
  }
}

Cline and other MCP clients

Most MCP clients accept the standard mcpServers JSON block:

{
  "mcpServers": {
    "spotify-bulk-actions": {
      "command": "uvx",
      "args": [
        "spotify-bulk-actions-mcp"
      ],
      "env": {
        "SPOTIFY_CLIENT_ID": "<SPOTIFY_CLIENT_ID>",
        "SPOTIFY_CLIENT_SECRET": "<SPOTIFY_CLIENT_SECRET>"
      }
    }
  }
}

Codex CLI

Register the server with OpenAI's Codex CLI — run this once, or add the equivalent block to ~/.codex/config.toml:

codex mcp add spotify-bulk-actions --env SPOTIFY_CLIENT_ID=<SPOTIFY_CLIENT_ID> --env SPOTIFY_CLIENT_SECRET=<SPOTIFY_CLIENT_SECRET> -- uvx spotify-bulk-actions-mcp

# or add to ~/.codex/config.toml:
[mcp_servers.spotify-bulk-actions]
command = "uvx"
args = ["spotify-bulk-actions-mcp"]
[mcp_servers.spotify-bulk-actions.env]
SPOTIFY_CLIENT_ID = "<SPOTIFY_CLIENT_ID>"
SPOTIFY_CLIENT_SECRET = "<SPOTIFY_CLIENT_SECRET>"

OpenClaw

OpenClaw reads MCP servers from the mcp.servers section of ~/.openclaw/openclaw.json (managed via `openclaw mcp add` or the mcporter skill):

{
  "mcp": {
    "servers": {
      "spotify-bulk-actions": {
        "command": "uvx",
        "args": [
          "spotify-bulk-actions-mcp"
        ],
        "env": {
          "SPOTIFY_CLIENT_ID": "<SPOTIFY_CLIENT_ID>",
          "SPOTIFY_CLIENT_SECRET": "<SPOTIFY_CLIENT_SECRET>"
        }
      }
    }
  }
}

Replace the <PLACEHOLDER> values with your own credentials — see the configuration table below.

Configuration

spotify-bulk-actions-mcp reads the following environment variables:

VariableRequired
SPOTIFY_CLIENT_IDRequired
SPOTIFY_CLIENT_SECRETRequired

README.md

<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. ![Buy Me A Coffee](https://buymeacoffee.com/kevinhg)

---

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: ``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 .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!

See related servers & alternatives →

Related MCP servers

Browse all →

Related guides

Hand-picked reading to help you choose and use AI & ML servers.