Skip to main content
Glama
@striderlabs/mcp-spotify

@striderlabs/mcp-spotify

@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

Related MCP server: Spotify MCP Server

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

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

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

Available Tools

19 tools
add_to_playlistA

Add one or more tracks to a playlist. Use track URIs from search results (e.g., 'spotify:track:...').

Inputs: uris (required), playlistId (required), position.

create_playlistA

Create a new playlist in your Spotify account. Returns the new playlist ID and URI.

Inputs: name (required), public, description.

get_currently_playingA

Get the currently playing track including name, artists, progress, device, shuffle state, and repeat state.

Inputs: no named parameters.

get_devicesA

List all available Spotify Connect devices (phones, computers, speakers, etc.) with their IDs, names, types, and active status.

Inputs: no named parameters.

get_playlistsA

Get all playlists in your Spotify library (owned and followed). Returns playlist names, IDs, and URIs.

Inputs: limit.

next_trackB

Skip to the next track in the queue.

Inputs: deviceId.

pauseA

Pause playback on the active device or a specified device.

Inputs: deviceId.

playA

Start or resume playback. Can play a specific track, album, artist, or playlist URI. If no URI provided, resumes current playback.

Inputs: uris, deviceId, contextUri, positionMs, +1 more.

previous_trackA

Go back to the previous track. If more than 3 seconds in, restarts current track first.

Inputs: deviceId.

remove_from_playlistA

Remove one or more tracks from a playlist by their Spotify track URIs.

Inputs: uris (required), playlistId (required).

search_albumsB

Search for albums on Spotify. Returns album name, artists, release date, track count, and URI.

Inputs: query (required), limit.

search_artistsA

Search for artists on Spotify. Returns artist name, genres, popularity, followers, and URI.

Inputs: query (required), limit.

search_playlistsB

Search for playlists on Spotify. Returns playlist name, owner, track count, and URI.

Inputs: query (required), limit.

search_tracksB

Search for songs on Spotify. Returns track name, artists, album, duration, URI, and popularity.

Inputs: query (required), limit.

set_volumeA

Set the playback volume (0-100%). Requires a Spotify Premium account.

Inputs: volumePercent (required), deviceId.

spotify_authA

Authenticate with Spotify using OAuth 2.0 with PKCE. Opens a browser window for you to authorize access. Requires SPOTIFY_CLIENT_ID environment variable. Only needed once — tokens are stored locally.

Inputs: no named parameters.

spotify_logoutA

Log out of Spotify by clearing stored OAuth tokens. Use this to reset authentication or switch accounts.

Inputs: no named parameters.

spotify_statusA

Check Spotify authentication status. Shows whether you are logged in and which account is connected. Call this first before using other tools.

Inputs: no named parameters.

transfer_playbackA

Transfer playback to a different Spotify Connect device. Use device IDs from get_devices.

Inputs: deviceId (required), play.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 19 tools

    Disambiguation4/5

    The search_* tools are clearly distinguished by resource type (artists, albums, playlists, tracks), and playback/device/auth tools have distinct purposes. The only point of potential confusion is search_playlists (public search) vs get_playlists (user's library), but the descriptions clarify the boundary.

    Naming Consistency3/5

    The search_* prefix is consistent, but naming mixes bare verbs (play, pause), verb_noun (create_playlist, set_volume, get_devices), verb_prep_noun (add_to_playlist, remove_from_playlist), and a spotify_* prefix for auth tools. Multiple conventions coexist, making the pattern hard to predict, though each name remains readable.

    Tool Count4/5

    19 tools is on the heavier side, but Spotify's API spans search, playlists, playback control, devices, and authentication, so the count is justified by the domain breadth. Each tool earns its place and there is little redundancy, making the set feel appropriately scoped rather than bloated.

    Completeness3/5

    Core workflows work: search, play, pause, skip, volume, create/add/remove playlist items, device transfer, and auth. However, notable gaps exist — there is no way to list the tracks inside a playlist (making remove_from_playlist impractical without prior context), no playlist update/delete, and no seek, shuffle, or repeat controls.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      An MCP server that enables users to control Spotify playback, search music, and manage playlists through natural conversation. It is updated for the February 2026 Spotify Web API changes and supports full playlist CRUD operations.
      6
      8
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      MCP server for the Spotify Web API — gives Claude and other AI assistants tools to search music, control playback, manage playlists, library, and podcasts.
      47
      5
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      MCP server for Spotify that enables playlist building and music discovery through 19 tools, allowing LLM agents to search tracks/artists/albums, manage playlists, control playback, and access personal listening data.
      20
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      An unofficial MCP server that provides access to Spotify's Web API through the Model Context Protocol, enabling AI assistants to search music, manage playlists, and control playback.
      32 npm
      9
      ISC