Spotify MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SPOTIFY_CLIENT_ID | Yes | Your Spotify Developer App Client ID from https://developer.spotify.com/dashboard | |
| SPOTIFY_REDIRECT_URI | Yes | The redirect URI configured in your Spotify Developer App (must match exactly) | http://localhost:8888/callback |
| SPOTIFY_CLIENT_SECRET | Yes | Your Spotify Developer App Client Secret from https://developer.spotify.com/dashboard |
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": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| spotify_get_playback_stateA | Get complete information about the user's current playback state, including track, artist, album, progress, device, and all settings. Returns comprehensive JSON data. |
| spotify_get_current_trackB | Get complete information about the currently playing track, including all metadata. Returns comprehensive JSON data. |
| spotify_get_track_nameA | Get ONLY the name of the currently playing track. Returns plain text - perfect for HUD displays. |
| spotify_get_artist_nameA | Get ONLY the primary artist name of the currently playing track. Returns plain text - perfect for HUD displays. |
| spotify_get_all_artistsA | Get all artist names of the currently playing track (comma-separated). Returns plain text. |
| spotify_get_album_nameA | Get ONLY the album name of the currently playing track. Returns plain text - perfect for HUD displays. |
| spotify_get_track_duration_msA | Get ONLY the total duration of the current track in milliseconds. Returns number as text. |
| spotify_get_track_duration_formattedA | Get ONLY the total duration of the current track in formatted time (M:SS or H:MM:SS). Returns formatted text - perfect for HUD displays. |
| spotify_get_track_progress_msA | Get ONLY the current playback position in milliseconds. Returns number as text. |
| spotify_get_track_progress_formattedA | Get ONLY the current playback position in formatted time (M:SS or H:MM:SS). Returns formatted text - perfect for HUD displays. |
| spotify_get_time_remaining_msA | Get ONLY the time remaining in the current track in milliseconds. Returns number as text - perfect for countdown timers. |
| spotify_get_time_remaining_formattedA | Get ONLY the time remaining in the current track in formatted time (M:SS or H:MM:SS). Returns formatted text - perfect for HUD countdown displays. |
| spotify_get_track_progress_percentageA | Get ONLY the playback progress as a percentage (0-100). Returns number as text - perfect for progress bars in HUDs. |
| spotify_get_track_uriA | Get ONLY the Spotify URI of the currently playing track. Returns URI as text. |
| spotify_get_track_idA | Get ONLY the Spotify ID of the currently playing track. Returns ID as text. |
| spotify_get_album_art_urlA | Get ONLY the URL of the album artwork for the currently playing track. Returns the largest available image URL - perfect for displaying in HUDs. |
| spotify_get_track_explicitA | Get ONLY whether the current track is explicit. Returns 'true' or 'false' as text. |
| spotify_get_track_popularityA | Get ONLY the popularity score of the current track (0-100). Returns number as text. |
| spotify_get_device_nameA | Get ONLY the name of the currently active playback device. Returns plain text - perfect for HUD displays. |
| spotify_get_device_typeA | Get ONLY the type of the currently active playback device (Computer, Smartphone, Speaker, etc.). Returns plain text. |
| spotify_get_device_volumeA | Get ONLY the current volume percentage of the active device (0-100). Returns number as text - perfect for volume displays. |
| spotify_get_device_idA | Get ONLY the ID of the currently active playback device. Returns ID as text. |
| spotify_is_device_activeA | Get ONLY whether a device is currently active. Returns 'true' or 'false' as text. |
| spotify_get_available_devicesA | Get a list of all available Spotify devices. Returns JSON array of devices with their details. |
| spotify_is_playingA | Get ONLY whether music is currently playing. Returns 'true' or 'false' as text - perfect for play/pause button states in HUDs. |
| spotify_get_shuffle_stateA | Get ONLY whether shuffle is enabled. Returns 'true' or 'false' as text - perfect for shuffle button states in HUDs. |
| spotify_get_repeat_modeA | Get ONLY the current repeat mode. Returns 'off', 'track', or 'context' as text - perfect for repeat button states in HUDs. |
| spotify_get_context_typeA | Get ONLY the type of playback context (album, artist, playlist, etc.). Returns context type as text. |
| spotify_get_context_uriA | Get ONLY the URI of the playback context (album, playlist, etc.). Returns URI as text. |
| spotify_playB | Start or resume playback. Can optionally specify device, context (album/playlist URI), specific tracks, or starting position. |
| spotify_pauseB | Pause playback on the user's account. |
| spotify_nextB | Skip to the next track in the user's queue. |
| spotify_previousA | Skip to the previous track in the user's queue. |
| spotify_seekB | Seek to a specific position in the currently playing track. |
| spotify_set_shuffleC | Toggle shuffle mode on or off. |
| spotify_set_repeatB | Set the repeat mode for playback. |
| spotify_set_volumeC | Set the volume for the user's current playback device. |
| spotify_transfer_playbackB | Transfer playback to a different device. |
| spotify_get_queueA | Get the user's current playback queue, including currently playing and upcoming tracks. |
| spotify_add_to_queueB | Add a track to the user's playback queue. |
| spotify_get_recently_playedB | Get tracks from the user's recently played history. |
| spotify_searchC | Search for tracks, albums, artists, or playlists on Spotify. |
| spotify_get_track_infoA | Get detailed information about a specific track by its Spotify ID. |
| spotify_get_album_infoB | Get detailed information about a specific album by its Spotify ID. |
| spotify_get_artist_infoB | Get detailed information about a specific artist by their Spotify ID. |
| spotify_get_artist_top_tracksC | Get an artist's top tracks. |
| spotify_get_saved_tracksB | Get the user's saved (liked) tracks. |
| spotify_save_trackB | Save (like) a track to the user's library. |
| spotify_remove_saved_trackB | Remove (unlike) a track from the user's library. |
| spotify_get_playlistsC | Get the user's playlists. |
| spotify_get_playlistB | Get detailed information about a specific playlist. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 51 tools
Each tool has a clearly distinct purpose, with very specific actions and targets. Even though there are many tools for retrieving individual attributes of the current track, their names and descriptions unambiguously indicate what each returns.
All tools follow the consistent pattern 'spotify_verb_noun' (e.g., spotify_get_track_name, spotify_set_volume). There are no mixed conventions or deviations.
With 51 tools, the set is overly large for the domain. Many granular getters (e.g., spotify_get_track_name, spotify_get_track_id) could be consolidated into fewer tools, making the surface bloated and harder to navigate.
The set covers playback control, current state, search, and basic library management well, but lacks playlist creation/modification and other common operations like following artists or user profile retrieval. Some gaps remain.