Spotify MCP
Model Context Protocol

Spotify, fluent
in Claude.

An MCP server that lets Claude control playback, search the catalog, and manage playlists — in plain language.

What it does

Everything Spotify, exposed as clean tools.

A focused set of typed MCP tools — each does one thing well, with structured output Claude can reason about.

Playback control

Play, pause, skip, and steer the queue. Claude drives your active device directly.

Smart search

Find tracks, albums, artists, and playlists with pagination for deep catalog dives.

Playlist management

Create, edit, and curate playlists with batch operations that scale to large collections.

Efficient by design

Intelligent batching minimizes API calls, keeping playlist edits fast and within rate limits.

Type-safe

Built on FastMCP with full Pydantic validation and MyPy compliance for predictable behavior.

Real-time state

Read live playback status and profile data, plus detailed track and artist info on demand.

The toolbox

One tool, one job.

No overloaded action parameters — just focused tools that compose.

Playback & queue
get_playback_stateWhat's playing now, on which device
control_playbackPlay, pause, skip, seek, volume, shuffle, repeat
list_devicesSee every device you can play on
transfer_playbackMove playback to another device
add_to_queueQueue up tracks for the active device
get_queueView the current playback queue
get_track_infoDetailed metadata for any track
get_artist_infoArtist details and top tracks
get_album_infoAlbum details and its track list
search_musicSearch tracks, albums, artists, or playlists
Library & listening history
get_meYour Spotify profile
get_saved_tracksYour Liked Songs, paginated
save_tracksLike tracks in bulk
remove_saved_tracksUnlike tracks in bulk
get_top_itemsYour top artists or tracks over any time range
get_recently_playedWhat you played lately, with timestamps
Playlists
create_playlistCreate new playlists with custom settings
get_playlist_infoPlaylist metadata and details
get_playlist_tracksRetrieve tracks with full pagination for large playlists
get_user_playlistsList all your playlists with pagination
add_tracks_to_playlistBatch-add tracks in a single operation
remove_tracks_from_playlistBatch-remove tracks from a playlist
modify_playlist_detailsUpdate name, description, and privacy
reorder_playlist_tracksMove tracks to a new position within a playlist
unfollow_playlistRemove a playlist from your library
Two minutes to set up

Install with one command.

Published on PyPI — no clone, no local path. Run it with uvx.

terminal
$ claude mcp add spotify \
  -e SPOTIFY_CLIENT_ID=your_client_id \
  -e SPOTIFY_CLIENT_SECRET=your_client_secret \
  -e SPOTIFY_REDIRECT_URI=http://127.0.0.1:8888 \
  -- uvx spotify-mcp-jamiew
$ codex mcp add spotify \
  --env SPOTIFY_CLIENT_ID=your_client_id \
  --env SPOTIFY_CLIENT_SECRET=your_client_secret \
  --env SPOTIFY_REDIRECT_URI=http://127.0.0.1:8888 \
  -- uvx spotify-mcp-jamiew
{
  "mcpServers": {
    "spotify": {
      "command": "uvx",
      "args": ["spotify-mcp-jamiew"],
      "env": {
        "SPOTIFY_CLIENT_ID": "your_client_id",
        "SPOTIFY_CLIENT_SECRET": "your_client_secret",
        "SPOTIFY_REDIRECT_URI": "http://127.0.0.1:8888"
      }
    }
  }
}
{
  "mcpServers": {
    "spotify": {
      "command": "uvx",
      "args": ["spotify-mcp-jamiew"],
      "env": {
        "SPOTIFY_CLIENT_ID": "your_client_id",
        "SPOTIFY_CLIENT_SECRET": "your_client_secret",
        "SPOTIFY_REDIRECT_URI": "http://127.0.0.1:8888"
      }
    }
  }
}
{
  "mcpServers": {
    "spotify": {
      "command": "uvx",
      "args": ["spotify-mcp-jamiew"],
      "env": {
        "SPOTIFY_CLIENT_ID": "your_client_id",
        "SPOTIFY_CLIENT_SECRET": "your_client_secret",
        "SPOTIFY_REDIRECT_URI": "http://127.0.0.1:8888"
      }
    }
  }
}
mcp_servers:
  spotify:
    command: uvx
    args: [spotify-mcp-jamiew]
    env:
      SPOTIFY_CLIENT_ID: your_client_id
      SPOTIFY_CLIENT_SECRET: your_client_secret
      SPOTIFY_REDIRECT_URI: http://127.0.0.1:8888

Add -s user to install across all projects.

Same command everywhere: uvx spotify-mcp-jamiew. Requires a Spotify Premium account and uv >= 0.54.

Another client? Paste this to your agent

Install the spotify-mcp MCP server from https://github.com/jamiew/spotify-mcp — it's on PyPI as spotify-mcp-jamiew, run it with uvx spotify-mcp-jamiew, and set env vars SPOTIFY_CLIENT_ID, SPOTIFY_CLIENT_SECRET, and SPOTIFY_REDIRECT_URI=http://127.0.0.1:8888.

Just ask

What it feels like to use.

Create a chill study playlist

Claude searches for fitting tracks, spins up a new playlist, and batch-adds songs in one smooth flow.

Show me my Liked Songs

Handles large libraries gracefully with pagination — even collections of many thousands of tracks.

Find similar artists to Radiohead

Combines search and artist info to surface related artists and queue up their top tracks.