Spotify MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SPOTIFY_CLIENT_ID | Yes | Your Spotify app's Client ID | |
| SPOTIFY_REDIRECT_URI | No | OAuth redirect URI | http://127.0.0.1:8888/callback |
| SPOTIFY_CLIENT_SECRET | Yes | Your Spotify app's Client Secret |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_albumA | Get details of a Spotify album by its ID. |
| get_albumsA | Get details of multiple albums in one call (up to 20 IDs). |
| get_album_tracksA | Get tracks of a Spotify album. |
| get_artistA | Get details of a Spotify artist by their ID. |
| get_artistsA | Get details of multiple artists in one call (up to 50 IDs). |
| get_artist_albumsA | Get albums by a Spotify artist. |
| get_trackA | Get details of a Spotify track by its ID. |
| get_tracksA | Get details of multiple tracks in one call (up to 50 IDs). |
| searchA | Search for tracks, albums, artists, playlists, shows, episodes, or audiobooks on Spotify. |
| get_playlistA | Get details of a Spotify playlist. |
| update_playlistB | Update a playlist's name, description, or visibility. |
| get_playlist_itemsA | Get items (tracks/episodes) in a playlist. |
| add_playlist_itemsA | Add tracks or episodes to a playlist. Auto-chunks at 100 items per request. |
| remove_playlist_itemsA | Remove tracks or episodes from a playlist. Auto-chunks at 100 items per request. |
| reorder_playlist_itemsB | Reorder items in a playlist. |
| get_my_playlistsA | Get the current user's playlists. |
| create_playlistB | Create a new playlist for the current user. |
| get_saved_tracksA | Get the current user's saved tracks. |
| get_saved_albumsA | Get the current user's saved albums. |
| get_saved_showsA | Get the current user's saved shows (podcasts). |
| get_saved_episodesA | Get the current user's saved episodes. |
| get_saved_audiobooksA | Get the current user's saved audiobooks. |
| save_to_libraryA | Save items (tracks/albums/shows/episodes/audiobooks) to the user's library. |
| remove_from_libraryA | Remove items from the current user's library. Auto-chunks at 50 items per request. |
| check_saved_in_libraryA | Check if items are saved in the current user's library. |
| get_showA | Get details of a Spotify show (podcast). |
| get_showsA | Get details of multiple shows in one call (up to 50 IDs). |
| get_show_episodesA | Get episodes of a Spotify show. |
| get_episodeA | Get details of a podcast episode. |
| get_episodesA | Get details of multiple episodes in one call (up to 50 IDs). |
| get_audiobookB | Get details of a Spotify audiobook. |
| get_audiobooksA | Get details of multiple audiobooks in one call (up to 50 IDs). |
| get_audiobook_chaptersA | Get chapters of a Spotify audiobook. |
| get_chapterA | Get details of a specific audiobook chapter. |
| get_chaptersA | Get details of multiple chapters in one call (up to 50 IDs). |
| get_my_profileA | Get the current user's Spotify profile. |
| get_my_top_itemsB | Get the current user's top artists or tracks. |
| whoamiA | Diagnostic: show auth status, profile basics, active device, and configured scopes. |
| get_playback_stateA | Get the current playback state including track, device, and progress. |
| get_currently_playingB | Get the currently playing track or episode. |
| playA | Start or resume playback. |
| pauseB | Pause playback on the active device. |
| next_trackA | Skip to the next track. |
| previous_trackA | Skip to the previous track. |
| seekA | Seek to a position in the currently playing track. |
| set_repeatA | Set the repeat mode for playback. |
| set_volumeA | Set the playback volume. |
| toggle_shuffleA | Set or toggle shuffle mode for playback. |
| transfer_playbackA | Transfer playback to a different device. |
| get_devicesA | Get the user's available Spotify devices. |
| add_to_queueA | Add a track or episode to the playback queue. |
| get_queueB | Get the current playback queue. |
| get_recently_playedB | Get the user's recently played tracks. |
| get_followed_artistsA | Get the current user's followed artists. Cursor-paginated. |
| follow_artists_or_usersA | Follow one or more artists or users. Auto-chunks at 50 IDs per request. |
| unfollow_artists_or_usersA | Unfollow one or more artists or users. Auto-chunks at 50 IDs per request. |
| check_followingA | Check whether the current user follows the given artists or users. |
| follow_playlistA | Follow a playlist. |
| unfollow_playlistC | Unfollow a playlist. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| build_playlist_from_recent | Build a new playlist from the user's recent listening. |
| weekly_listening_summary | Summarize what the user listened to in the past week. |
| playlist_from_artists | Build a playlist seeded by a comma-separated list of artists. Args: artists: Comma-separated list of artist names. tracks_per_artist: How many tracks to pull per artist (default 5). |
| library_cleanup | Review the user's saved library and suggest cleanup candidates. Args: scan_size: How many recently-saved tracks to scan (default 100). |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| me_profile | |
| me_playback | |
| me_queue | |
| me_top_tracks | |
| me_top_artists |
TDQS
Scored across 59 tools
Each tool targets a distinct resource and action (e.g., get_album vs. get_albums vs. get_album_tracks). Even with many similar resources, the verb-noun pattern clearly differentiates operations, and no two tools have overlapping purposes.
Most tools follow a consistent verb_noun snake_case pattern (e.g., get_album, create_playlist, set_volume). However, 'whoami' deviates from this pattern, and there are mixed prefixes like 'check_' and 'unfollow_' alongside 'follow_', causing minor inconsistency.
With 59 tools, the set is overly large for an MCP server. While the Spotify API is broad, this many tools can overwhelm users and agents, and the calibration suggests 25+ is too many. Several tools could potentially be merged (e.g., multiple get_saved_* tools).
The tool set covers essential operations (CRUD for playlists, playback control, library management, following, and search). However, notable gaps exist, such as the absence of a delete_playlist tool, missing audio features/analysis, and lack of recommendations.