π
io.github.markswendsen-code/spotify
MCP server for Spotify - let AI agents control playback, search music, and manage playlists
0 installs
Trust: 37 β Low
Search
Ask AI about io.github.markswendsen-code/spotify
Powered by Claude Β· Grounded in docs
I know everything about io.github.markswendsen-code/spotify. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Loading tools...
Reviews
Documentation
@striderlabs/mcp-spotify
MCP server for Spotify β let AI agents search music, control playback, and manage playlists via the Spotify Web API.
Built by Strider Labs.
Features
- Search β Find tracks, artists, albums, and playlists
- Playlists β View, create, and edit your playlists
- Playback Control β Play, pause, skip, go back, set volume
- Multi-device β List and switch between Spotify Connect devices
- OAuth 2.0 β Secure authorization with PKCE (no client secret needed)
- Token persistence β Tokens stored locally, auto-refreshed
Setup
1. Create a Spotify App
- Go to the Spotify Developer Dashboard
- Click Create App
- Set Redirect URI to:
http://localhost:8888/callback - Copy your Client ID
2. Install
npx @striderlabs/mcp-spotify
Or install globally:
npm install -g @striderlabs/mcp-spotify
3. Configure Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"spotify": {
"command": "npx",
"args": ["-y", "@striderlabs/mcp-spotify"],
"env": {
"SPOTIFY_CLIENT_ID": "your_client_id_here"
}
}
}
}
4. Authenticate
In Claude, call the auth tool once:
spotify_auth
A browser window will open for you to authorize access. After approving, tokens are saved locally at ~/.striderlabs/spotify/tokens.json and auto-refreshed.
Environment Variables
| Variable | Required | Description |
|---|---|---|
SPOTIFY_CLIENT_ID | Yes | Your Spotify app's Client ID |
Tools
Authentication
| Tool | Description |
|---|---|
spotify_status | Check connection status and logged-in account |
spotify_auth | Authorize via browser (OAuth 2.0 PKCE) |
spotify_logout | Clear stored tokens |
Search
| Tool | Parameters | Description |
|---|---|---|
search_tracks | query, limit? | Search for songs |
search_artists | query, limit? | Search for artists |
search_albums | query, limit? | Search for albums |
search_playlists | query, limit? | Search for playlists |
Playlists
| Tool | Parameters | Description |
|---|---|---|
get_playlists | limit? | Get your playlists |
create_playlist | name, description?, public? | Create a new playlist |
add_to_playlist | playlistId, uris[], position? | Add tracks |
remove_from_playlist | playlistId, uris[] | Remove tracks |
Playback
| Tool | Parameters | Description |
|---|---|---|
get_currently_playing | β | Current track, progress, device |
play | deviceId?, contextUri?, uris?[], offsetPosition?, positionMs? | Start/resume playback |
pause | deviceId? | Pause playback |
next_track | deviceId? | Skip to next track |
previous_track | deviceId? | Go to previous track |
set_volume | volumePercent, deviceId? | Set volume (0β100) |
get_devices | β | List Spotify Connect devices |
transfer_playback | deviceId, play? | Switch playback device |
Example Workflow
1. spotify_status β check if authenticated
2. spotify_auth β open browser to authorize (first time)
3. search_tracks query="Bohemian Rhapsody"
4. get_devices β list available devices
5. play uris=["spotify:track:..."] deviceId="..."
6. get_currently_playing β see what's playing
7. set_volume volumePercent=70
8. next_track β skip to next
9. get_playlists β see your playlists
10. create_playlist name="AI Picks"
11. add_to_playlist playlistId="..." uris=["spotify:track:..."]
Requirements
- Node.js 18+
- Spotify account (Free or Premium)
- Spotify Premium required for: volume control, playback control
Technical Details
- Protocol: Model Context Protocol (MCP) over stdio
- Auth: OAuth 2.0 Authorization Code with PKCE
- API: Spotify Web API v1
- Token storage:
~/.striderlabs/spotify/tokens.json - Browser automation: Playwright (for OAuth browser launch)
License
MIT β Strider Labs
