"Make me a Spotify playlist from Radiohead's last show" → done.
An MCP server that connects setlist.fm and Spotify. Tell Claude which artist and show you want — it fetches the real setlist, matches every track on Spotify, and creates the playlist.
Works with Claude Code and Claude Desktop.
You: Create a playlist from Metallica's most recent show.
Claude: Created "Metallica — Live Setlist (09-01-2024)"
Setlist from Estadi Olímpic Lluís Companys, Barcelona — 09-01-2024.
21/22 tracks matched.
→ https://open.spotify.com/playlist/...
You: Which songs does The National always play live vs. their rarities?
Claude: Always played (last 10 shows): Bloodbuzz Ohio, Terrible Love, Mr. November
Rarities (played once): Sorrow, Available, Green Gloves
Never played live: 34 studio tracks
- Fetches real setlists from setlist.fm for any artist
- Searches Spotify for each track with fuzzy matching for live variants
- Creates a Spotify playlist and returns the URL
mode="latest"— most recent showmode="best-of"— aggregates last N shows, ranks by play frequency- Diffs live setlists against full studio discography (always played / never played / rarities)
Browse recent setlists before creating a playlist.
Create a Spotify playlist from a setlist. Returns playlist URL, matched/unmatched track counts.
Compare last 10 setlists against full Spotify discography.
- Python 3.11+
- setlist.fm API key — free
- Spotify Developer app — free
git clone https://github.com/emarkou/setlistify.git
cd setlistify
python3.11 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtcp .env.example .envEdit .env:
SETLISTFM_API_KEY=your_setlistfm_key
SPOTIFY_CLIENT_ID=your_spotify_client_id
SPOTIFY_CLIENT_SECRET=your_spotify_client_secret
SPOTIFY_REDIRECT_URI=http://localhost:8888/callback
setlist.fm: Register at https://www.setlist.fm/settings/api, copy the API key.
Spotify:
- Go to https://developer.spotify.com/dashboard
- Create an app → select Web API
- Add
http://localhost:8888/callbackas a Redirect URI - Copy Client ID and Client Secret
claude mcp add setlistify \
/path/to/setlistify/.venv/bin/python \
-- /path/to/setlistify/server.pyOr add to ~/.claude/mcp.json:
{
"mcpServers": {
"setlistify": {
"command": "/path/to/setlistify/.venv/bin/python",
"args": ["/path/to/setlistify/server.py"]
}
}
}Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"setlistify": {
"command": "/path/to/setlistify/.venv/bin/python",
"args": ["/path/to/setlistify/server.py"],
"env": {
"SETLISTFM_API_KEY": "your_key",
"SPOTIFY_CLIENT_ID": "your_client_id",
"SPOTIFY_CLIENT_SECRET": "your_client_secret",
"SPOTIFY_REDIRECT_URI": "http://localhost:8888/callback"
}
}
}
}On first use a browser window opens for Spotify authorisation. Log in and allow access. Token is cached locally in .cache and reused automatically.
If auth expires, delete .cache and retry.
npx @modelcontextprotocol/inspector \
/path/to/setlistify/.venv/bin/python \
/path/to/setlistify/server.pyOpens a browser UI at http://localhost:6274 to call tools interactively.
setlistify/
├── server.py # MCP server and tool definitions
├── setlistfm.py # setlist.fm API client
├── spotify.py # Spotify/spotipy wrapper
├── matching.py # Fuzzy track title matching
├── requirements.txt
├── .env.example
└── LICENSE
MIT
