Spotify

io.github.markswendsen-codePublished by GitHub account markswendsen-codev0.1.0Updated Oct 24, 2026

MCP server for Spotify - let AI agents control playback, search music, and manage playlists

VerifiedSTDIODesktop onlyProductivity & WorkflowMedia & Design

Overview

AI-generated overview

A local MCP server that lets an AI assistant search Spotify, manage playlists, and control playback on Spotify Connect devices.

What you can do
Search Spotify for tracks, artists, albums, and playlists, and check what is currently playing, including progress and device. Control playback: play, pause, skip forward or back, and set volume. List Spotify Connect devices and transfer playback between them. View your playlists, create new ones, and add or remove tracks. Check connection status, authorize via browser, and log out.
When to use it
Useful when you want an assistant to find music, build or edit playlists, or drive playback on your Spotify account through conversation rather than the Spotify app.
Requirements
Runs locally via npx or a global npm install, needing Node.js 18 or later. Requires a Spotify account (Free or Premium; Premium is needed for volume and playback control) and a Spotify app Client ID supplied in the SPOTIFY_CLIENT_ID environment variable. First use requires a browser-based OAuth authorization, with the redirect URI set to localhost:8888/callback.
Before you install
The assistant can change your account: it creates and edits playlists and starts, stops, skips, and adjusts volume on your devices. Authorization opens a browser and stores tokens locally on disk, auto-refreshed; the logout tool clears them. Playback control requires Spotify Premium.

Installation

In SourceWeft

  1. Open Spotify in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

@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

  1. Go to the Spotify Developer Dashboard
  2. Click Create App
  3. Set Redirect URI to: http://localhost:8888/callback
  4. Copy your Client ID

2. Install

bash
npx @striderlabs/mcp-spotify

Or install globally:

bash
npm install -g @striderlabs/mcp-spotify

3. Configure Claude Desktop

Add to your claude_desktop_config.json:

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

VariableRequiredDescription
SPOTIFY_CLIENT_IDYesYour Spotify app's Client ID

Tools

Authentication

ToolDescription
spotify_statusCheck connection status and logged-in account
spotify_authAuthorize via browser (OAuth 2.0 PKCE)
spotify_logoutClear stored tokens

Search

ToolParametersDescription
search_tracksquery, limit?Search for songs
search_artistsquery, limit?Search for artists
search_albumsquery, limit?Search for albums
search_playlistsquery, limit?Search for playlists

Playlists

ToolParametersDescription
get_playlistslimit?Get your playlists
create_playlistname, description?, public?Create a new playlist
add_to_playlistplaylistId, uris[], position?Add tracks
remove_from_playlistplaylistId, uris[]Remove tracks

Playback

ToolParametersDescription
get_currently_playing—Current track, progress, device
playdeviceId?, contextUri?, uris?[], offsetPosition?, positionMs?Start/resume playback
pausedeviceId?Pause playback
next_trackdeviceId?Skip to next track
previous_trackdeviceId?Go to previous track
set_volumevolumePercent, deviceId?Set volume (0–100)
get_devices—List Spotify Connect devices
transfer_playbackdeviceId, play?Switch playback device

Example Workflow

1. spotify_status            → check if authenticated2. spotify_auth              → open browser to authorize (first time)3. search_tracks query="Bohemian Rhapsody"4. get_devices               → list available devices5. play uris=["spotify:track:..."] deviceId="..."6. get_currently_playing     → see what's playing7. set_volume volumePercent=708. next_track                → skip to next9. get_playlists             → see your playlists10. 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

Source: README.md at commit 7974597

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.0LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.