Back to MCP Servers

Spotify

📇 🏠 Control Spotify playback and manage playlists.

other-tools-and-integrations
By marcelmarais
383129Updated 2 weeks agoTypeScript

Installation

npx -y spotify-mcp-server

Configuration

{
  "mcpServers": {
    "spotify-mcp-server": {
      "command": "npx",
      "args": ["-y", "spotify-mcp-server"]
    }
  }
}

How to use

  1. Run the installation command above (if needed)
  2. Open your Claude Code settings file (~/.claude/settings.json)
  3. Add the configuration to the mcpServers section
  4. Restart Claude Code to apply changes
<div align="center" style="display: flex; align-items: center; justify-content: center; gap: 10px;"> <img src="https://upload.wikimedia.org/wikipedia/commons/8/84/Spotify_icon.svg" width="30" height="30"> <h1>Spotify MCP Server</h1> </div>

A lightweight Model Context Protocol (MCP) server that enables AI assistants like Cursor & Claude to control Spotify playback and manage playlists.

<details> <summary>Contents</summary> </details>

Example Interactions

  • "Play Elvis's first song"
  • "Create a Taylor Swift / Slipknot fusion playlist"
  • "Copy all the techno tracks from my workout playlist to my work playlist"
  • "Turn the volume down a bit"

Tools

Read Operations

  1. searchSpotify

    • Description: Search for tracks, albums, artists, or playlists on Spotify
    • Parameters:
      • query (string): The search term
      • type (string): Type of item to search for (track, album, artist, playlist)
      • limit (number, optional): Maximum number of results to return (10-50)
    • Returns: List of matching items with their IDs, names, and additional details
    • Example: searchSpotify("bohemian rhapsody", "track", 20)
  2. getNowPlaying

    • Description: Get information about the currently playing track on Spotify, including device and volume info
    • Parameters: None
    • Returns: Object containing track name, artist, album, playback progress, duration, playback state, device info, volume, and shuffle/repeat status
    • Example: getNowPlaying()
  3. getMyPlaylists

    • Description: Get a list of the current user's playlists on Spotify
    • Parameters:
      • limit (number, optional): Maximum number of playlists to return (default: 20)
      • offset (number, optional): Index of the first playlist to return (default: 0)
    • Returns: Array of playlists with their IDs, names, track counts, and public status
    • Example: getMyPlaylists(10, 0)
  4. getPlaylistTracks

    • Description: Get a list of tracks in a specific Spotify playlist
    • Parameters:
      • playlistId (string): The Spotify ID of the playlist
      • limit (number, optional): Maximum number of tracks to return (default: 100)
      • offset (number, optional): Index of the first track to return (default: 0)
    • Returns: Array of tracks with their IDs, names, artists, album, duration, and added date
    • Example: getPlaylistTracks("37i9dQZEVXcJZyENOWUFo7")
  5. getRecentlyPlayed

    • Description: Retrieves a list of recently played tracks from Spotify.
    • Parameters:
      • limit (number, optional): A number specifying the maximum number of tracks to return.
    • Returns: If tracks are found it returns a formatted list of recently played tracks else a message stating: "You don't have any recently played tracks on Spotify".
    • Example: getRecentlyPlayed({ limit: 10 })
  6. getUsersSavedTracks

    • Description: Get a list of tracks saved in the user's "Liked Songs" library
    • Parameters:
      • limit (number, optional): Maximum number of tracks to return (1-50, default: 50)
      • offset (number, optional): Offset for pagination (0-based index, default: 0)
    • Returns: Formatted list of saved tracks with track names, artists, duration, track IDs, and when they were added to Liked Songs. Shows pagination info (e.g., "1-20 of 150").
    • Example: getUsersSavedTracks({ limit: 20, offset: 0 })
  7. getQueue

    • Description: Get the currently playing track and upcoming items in the Spotify queue
    • Parameters:
      • limit (number, optional): Maximum number of upcoming items to show (1-50, default: 10)
    • Returns: Currently playing track and list of upcoming tracks in the queue
    • Example: getQueue({ limit: 20 })
  8. getAvailableDevices

    • Description: Get information about the user's available Spotify Connect devices
    • Parameters: None
    • Returns: List of available devices with name, type, active status, volume, and device ID
    • Example: getAvailableDevices()
  9. removeUsersSavedTracks

    • Description: Remove one or more tracks from the user's "Liked Songs" library (max 40 per request)
    • Parameters:
      • trackIds (array): Array of Spotify track IDs to remove (max 40)
    • Returns: Success confirmation message
    • Example: removeUsersSavedTracks({ trackIds: ["4iV5W9uYEdYUVa79Axb7Rh", "1301WleyT98MSxVHPZCA6M"] })

Play / Create Operations

  1. playMusic

    • Description: Start playing a track, album, artist, or playlist on Spotify
    • Parameters:
      • uri (string, optional): Spotify URI of the item to play (overrides type and id)
      • type (string, optional): Type of item to play (track, album, artist, playlist)
      • id (string, optional): Spotify ID of the item to play
      • deviceId (string, optional): ID of the device to play on
    • Returns: Success status
    • Example: playMusic({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" })
    • Alternative: playMusic({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })
  2. pausePlayback

    • Description: Pause the currently playing track on Spotify
    • Parameters:
      • deviceId (string, optional): ID of the device to pause
    • Returns: Success status
    • Example: pausePlayback()
  3. resumePlayback

    • Description: Resume Spotify playback on the active device
    • Parameters:
      • deviceId (string, optional): ID of the device to resume playback on
    • Returns: Success status
    • Example: resumePlayback()
  4. skipToNext

    • Description: Skip to the next track in the current playback queue
    • Parameters:
      • deviceId (string, optional): ID of the device
    • Returns: Success status
    • Example: skipToNext()
  5. skipToPrevious

    • Description: Skip to the previous track in the current playback queue
    • Parameters:
      • deviceId (string, optional): ID of the device
    • Returns: Success status
    • Example: skipToPrevious()
  6. createPlaylist

    • Description: Create a new playlist on Spotify
    • Parameters:
      • name (string): Name for the new playlist
      • description (string, optional): Description for the playlist
      • public (boolean, optional): Whether the playlist should be public (default: false)
    • Returns: Object with the new playlist's ID and URL
    • Example: createPlaylist({ name: "Workout Mix", description: "Songs to get pumped up", public: false })
  7. addTracksToPlaylist

    • Description: Add tracks to an existing Spotify playlist
    • Parameters:
      • playlistId (string): ID of the playlist
      • trackUris (array): Array of track URIs or IDs to add
      • position (number, optional): Position to insert tracks
    • Returns: Success status and snapshot ID
    • Example: addTracksToPlaylist({ playlistId: "3cEYpjA9oz9GiPac4AsH4n", trackUris: ["spotify:track:4iV5W9uYEdYUVa79Axb7Rh"] })
  8. addToQueue

    • Description: Adds a track, album, artist or playlist to the current playback queue
    • Parameters:
      • uri (string, optional): Spotify URI of the item to add to queue (overrides type and id)
      • type (string, optional): Type of item to queue (track, album, artist, playlist)
      • id (string, optional): Spotify ID of the item to queue
      • deviceId (string, optional): ID of the device to queue on
    • Returns: Success status
    • Example: addToQueue({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" })
    • Alternative: addToQueue({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })
  9. setVolume

    • Description: Set the playback volume to a specific percentage (requires Spotify Premium)
    • Parameters:
      • volumePercent (number): The volume to set (0-100)
      • deviceId (string, optional): ID of the device to set volume on
    • Returns: Success status with the new volume level
    • Example: setVolume({ volumePercent: 50 })
  10. adjustVolume

  • Description: Adjust the playback volume up or down by a relative amount (requires Spotify Premium)
  • Parameters:
    • adjustment (number): The amount to adjust volume by (-100 to 100). Positive values increase volume, negative values decrease it.
    • deviceId (string, optional): ID of the device to adjust volume on
  • Returns: Success status showing the volume change (e.g., "Volume increased from 50% to 60%")
  • Example: adjustVolume({ adjustment: 10 }) (increase by 10%)
  • Example: adjustVolume({ adjustment: -20 }) (decrease by 20%)

Album Operations

  1. getAlbums

    • Description: Get detailed information about one or more albums by their Spotify IDs
    • Parameters:
      • albumIds (string|array): A single album ID or array of album IDs (max 20)
    • Returns: Album details including name, artists, release date, type, total tracks, and ID. For single album returns detailed view, for multiple albums returns summary list.
    • Example: getAlbums("4aawyAB9vmqN3uQ7FjRGTy") or getAlbums(["4aawyAB9vmqN3uQ7FjRGTy", "1DFixLWuPkv3KT3TnV35m3"])
  2. getAlbumTracks

    • Description: Get tracks from a specific album with pagination support
    • Parameters:
      • albumId (string): The Spotify ID of the album
      • limit (number, optional): Maximum number of tracks to return (1-50)
      • offset (number, optional): Offset for pagination (0-based index)
    • Returns: List of tracks from the album with track names, artists, duration, and IDs. Shows pagination info.
    • Example: getAlbumTracks("4aawyAB9vmqN3uQ7FjRGTy", 10, 0)
  3. saveOrRemoveAlbumForUser

    • Description: Save or remove albums from the user's "Your Music" library
    • Parameters:
      • albumIds (array): Array of Spotify album IDs (max 20)
      • action (string): Action to perform: "save" or "remove"
    • Returns: Success status with confirmation message
    • Example: saveOrRemoveAlbumForUser(["4aawyAB9vmqN3uQ7FjRGTy"], "save")
  4. checkUsersSavedAlbums

    • Description: Check if albums are saved in the user's "Your Music" library
    • Parameters:
      • albumIds (array): Array of Spotify album IDs to check (max 20)
    • Returns: Status of each album (saved or not saved)
    • Example: checkUsersSavedAlbums(["4aawyAB9vmqN3uQ7FjRGTy", "1DFixLWuPkv3KT3TnV35m3"])

Playlist Operations

  1. getPlaylist

    • Description: Get details of a specific Spotify playlist including tracks count, description and owner
    • Parameters:
      • playlistId (string): The Spotify ID of the playlist
    • Returns: Playlist name, owner, track count, visibility, description, ID, and URL
    • Example: getPlaylist({ playlistId: "37i9dQZEVXcJZyENOWUFo7" })
  2. updatePlaylist

    • Description: Update the details of a Spotify playlist (name, description, public/private, collaborative)
    • Parameters:
      • playlistId (string): The Spotify ID of the playlist
      • name (string, optional): New name for the playlist
      • description (string, optional): New

View source on GitHub