🐍 ☁️ 🍎 🪟 🐧 - Spotify tools: smart shuffle, natural-language song search, vibe analysis, artist network…
Spotify MCP Server
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
Control Spotify from Claude, Cursor, or any MCP client. **100+ tools** for playback, search, playlist management, smart shuffle, vibe analysis, natural language song search, artist exploration, and library indexing. Just uvx spotify-mcp to get started.
Quick Start
1. Get a Spotify Client ID
Go to the Spotify Developer Dashboard, create an app, set the redirect URI to http://127.0.0.1:8888/callback, check **Web API**, and copy your **Client ID**. No client secret needed (PKCE auth).
2. Install and Configure
**Claude Code** (one command):
Then set your client ID: claude mcp add spotify -e SPOTIFY_CLIENT_ID=your_client_id -- uvx spotify-mcp
**Claude Desktop** (add to claude_desktop_config.json):
**Cursor / VS Code** (same config, but load only core tools to stay under the 40-tool limit):
Or install with pip: pip install spotify-mcp
3. Authorize
The first time you use a Spotify tool, your browser opens for OAuth. Grant access and the token is cached locally.
Why this one?
There are 30+ Spotify MCP servers out there. Most have 10-15 tools covering play, pause, and search.
| | spotify-mcp | Typical server |
|---|---|---|
| **Tools** | **100+** | 5-15 |
| **Smart shuffle** (6 strategies incl. energy arcs) | Yes | No |
| **Vibe engine** (mood analysis without audio-features) | Yes | No |
| **Natural language song search** | Yes | No |
| **Artist network mapping** (100 related artists) | Yes | No |
| **Taste evolution tracking** | Yes | No |
| **Library index** (AI playlists from your own songs) | Yes | No |
| **Destructive tools stripped by default** | Yes | No |
| **Merge / diff / deduplicate** playlists | Yes | No |
| **Works after Feb 2026 API changes** | Yes | Most broke |
| **PKCE auth** (no client secret needed) | Yes | Rare |
What can you do with it?
Some things you can ask:
- "Play Bohemian Rhapsody"
- "Make my playlist start chill and build to high energy"
- "Find that sad song with strings by Pink Floyd from the 90s"
- "How has my music taste changed over time?"
- "Map Radiohead's related artist network"
- "Compare my Gym and Running playlists"
- "Clean up my old playlist" (removes unavailable tracks and duplicates)
- "What's the vibe of my Summer playlist?"
- "Create a radio playlist based on Radiohead"
- "When do I listen to music the most?"
Toolsets
All tools load by default, minus destructive tools (see Safety). For clients with tool limits, use --toolsets:
Or via environment variable: SPOTIFY_MCP_TOOLSETS=core,power
Available toolsets: core, social, discovery, power, destructive, all
Safety
Destructive tools (remove tracks, unfollow artists, delete content) are **not loaded** unless you opt in with --toolsets=all,destructive. Safe for auto-accept mode since the AI cannot call tools that don't exist.
Affected tools: spotify_remove_from_playlist, spotify_remove_saved_tracks, spotify_remove_saved_albums, spotify_remove_saved_shows, spotify_unfollow_playlist, spotify_unfollow_artists, spotify_unfollow_users
Even when enabled, destructive tools default to dry_run=True, showing a preview without executing. Pass dry_run=False to perform the action.
Tool Reference
Playback (15 tools)
| Tool | Description |
|------|-------------|
| spotify_status | Connection status and current playback |
| spotify_now_playing | Currently playing track details |
| spotify_play | Start playback (track, album, or playlist) |
| spotify_pause | Pause playback |
| spotify_resume | Resume playback |
| spotify_skip_next | Skip to next track |
| spotify_skip_previous | Skip to previous track |
| spotify_add_to_queue | Add a track to the queue |
| spotify_get_queue | View the playback queue |
| spotify_get_devices | List available Spotify Connect devices |
| spotify_set_volume | Set volume (0-100) |
| spotify_seek | Seek to a position in the current track |
| spotify_set_repeat | Set repeat mode (off/context/track) |
| spotify_toggle_shuffle | Toggle shuffle on or off |
| spotify_transfer_playback | Transfer playback to another device |