Spotify MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SPOTIFY_CLIENT_ID | Yes | Your Spotify Client ID from developer.spotify.com | |
| SPOTIFY_REDIRECT_URI | No | The redirect URI configured in your Spotify app | http://localhost:8888 |
| SPOTIFY_CLIENT_SECRET | Yes | Your Spotify Client Secret from developer.spotify.com |
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_meA | Get the signed-in user's Spotify profile. |
| get_playback_stateA | Get the current playback state: track, device, progress, shuffle and repeat. |
| control_playbackA | Control Spotify playback. Requires Premium and an active device. |
| list_devicesA | List the user's available Spotify devices. |
| transfer_playbackA | Move playback to a different device (see list_devices). |
| search_musicA | Search Spotify for tracks, albums, artists, or playlists. |
| add_to_queueA | Add a track to the playback queue. |
| get_queueA | Get the current playback queue. Returns: Currently playing track and queue of upcoming tracks |
| get_tracksA | Get detailed information about one or more Spotify tracks. |
| get_artistA | Get details for one or more Spotify artists, batched into a single request. |
| get_playlistA | Get basic information about a Spotify playlist. |
| create_playlistA | Create a new Spotify playlist. |
| add_tracks_to_playlistC | Add tracks to a playlist. |
| list_playlistsA | Get current user's playlists with pagination support. |
| get_playlist_tracksA | Get tracks from a playlist with full pagination support. |
| remove_tracks_from_playlistB | Remove tracks from a playlist. |
| update_playlist_detailsC | Modify playlist details. |
| reorder_playlistA | Move a contiguous block of tracks to a new position within a playlist. |
| get_albumA | Get details for one or more Spotify albums, batched into a single request. |
| get_saved_tracksA | Get user's saved/liked tracks (Liked Songs library). |
| save_tracksA | Save (like) tracks to the user's library. |
| remove_saved_tracksA | Remove tracks from the user's saved (liked) tracks. |
| check_saved_tracksA | Check which tracks are already liked, without paging the whole library. |
| check_saved_albumsA | Check which albums are already saved to the library. |
| check_following_artistsA | Check up to 50 artist follows in upstream chunks of at most 40. |
| unfollow_playlistA | Unfollow a playlist, removing it from the user's library. |
| get_recently_playedA | Get recently played tracks, most recent first. |
| get_top_itemsA | Get the user's top artists or tracks over a time range. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| discover_similar | Find artists similar to one you name, without a recommendations endpoint. |
| taste_profile | Summarize listening habits from top items and recent plays. |
| create_mood_playlist | Create a playlist based on mood and preferences. |
| analyze_large_playlist | Analyze a large playlist efficiently using pagination. |
| discover_music_systematically | Systematically discover music using search pagination. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| current_user | Current user's profile. |
| current_playback_resource | Current playback state. |
TDQS
Scored across 28 tools
Most tools have clearly distinct purposes, and the descriptions carefully separate near-neighbors like get_saved_tracks vs check_saved_tracks. A few pairs (get_tracks/get_saved_tracks, unfollow_playlist/remove_tracks_from_playlist) are close enough in name to require reading descriptions carefully.
Tool names generally follow a clear verb_noun pattern, and sets like check_saved_* and remove_*_from_playlist are internally consistent. There is some inconsistency between get_ and list_ for collections (get_saved_tracks vs list_playlists vs list_devices), but it does not seriously impede readability.
28 tools is on the heavy side for a single MCP server, and the agent must juggle a large surface. Each tool does earn its place, but the count exceeds the range where the tool set feels tightly scoped.
The set covers playlists, saved tracks, search, and playback well, but album and artist library handling is one-sided: check_saved_albums and check_following_artists have no corresponding save/remove album or follow/unfollow artist tools. There is also no way to list saved albums, leaving obvious lifecycle gaps that will cause agent failures for those workflows.