Spotify MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 |
|---|---|
| searchSpotifyA | Search for tracks, albums, artists, playlists, podcast episodes, or shows on Spotify. For episodes and shows, the query matches against title, description, and publisher. Use type "episode" to find individual podcast episodes by topic or guest name, and type "show" to find podcast series. |
| getNowPlayingA | Get information about the currently playing track on Spotify, including device and volume info |
| getMyPlaylistsB | Get a list of the current user's playlists on Spotify |
| getPlaylistTracksB | Get a list of tracks in a Spotify playlist |
| getRecentlyPlayedB | Get a list of recently played tracks on Spotify |
| getUsersSavedTracksA | Get a list of tracks saved in the user's "Liked Songs" library |
| removeUsersSavedTracksA | Remove one or more tracks from the user's "Liked Songs" library (max 40 per request) |
| getQueueA | Get a list of the currently playing track and the next items in your Spotify queue |
| getAvailableDevicesB | Get information about the user's available Spotify Connect devices |
| getTopTracksA | Get the current user's top (most-played) tracks over a given time range. This is the closest thing Spotify exposes to listening statistics. |
| getTopArtistsA | Get the current user's top (most-played) artists over a given time range. This is the closest thing Spotify exposes to listening statistics. |
| playMusicA | Start playing a Spotify track, album, artist, or playlist. Pass a Spotify URI (e.g. spotify:track:xxx, spotify:album:xxx) via "uri". For albums/playlists you can also use "context_uri". Device is selected automatically, so "deviceId" and "device_id" are optional. |
| pausePlaybackA | Pause Spotify playback on the active device |
| skipToNextA | Skip to the next track in the current Spotify playback queue |
| skipToPreviousA | Skip to the previous track in the current Spotify playback queue |
| createPlaylistB | Create a new playlist on Spotify |
| addTracksToPlaylistA | Add tracks or podcast episodes to a Spotify playlist. Accepts Spotify track IDs, episode IDs, or full Spotify URIs (e.g. spotify:episode:xxx). |
| resumePlaybackA | Resume Spotify playback on the active device |
| addToQueueB | Adds a track, album, artist or playlist to the playback queue |
| setVolumeB | Set the playback volume to a specific percentage (0-100). Requires Spotify Premium. |
| adjustVolumeA | Adjust the playback volume up or down by a relative amount. Use positive values to increase, negative to decrease. Requires Spotify Premium. |
| getAlbumsA | Get detailed information about one or more albums by their Spotify IDs |
| getAlbumTracksA | Get tracks from a specific album with pagination support |
| saveOrRemoveAlbumForUserA | Save or remove albums from the user's "Your Music" library |
| checkUsersSavedAlbumsA | Check if albums are saved in the user's "Your Music" library |
| getPlaylistA | Get details of a specific Spotify playlist including tracks count, description and owner |
| updatePlaylistA | Update the details of a Spotify playlist (name, description, public/private, collaborative) |
| removeTracksFromPlaylistB | Remove one or more tracks from a Spotify playlist (max 100 tracks per request) |
| reorderPlaylistItemsA | Reorder a range of tracks within a Spotify playlist by moving them to a new position |
| unfollowPlaylistA | Remove a playlist from the current user's library (unfollow). Note: Spotify does not allow permanent deletion of playlists via the API. |
| getTrackAudioFeaturesA | Get BPM, key, mode, energy, danceability, valence, and related audio features for 1–100 exact Spotify track IDs with field-level provenance. |
| sortPlaylistByBpmA | Legacy tempo/energy ordering utility. Use planDjSet for professional set planning. Dry-run is the safe default. |
| compareTrackAnalysisA | Compare exact Spotify track IDs across available audio-analysis providers. Reports field-level provenance, missing providers, half/double-time-aware conflicts, and provider failures without changing Spotify. |
| auditDjPlaylistA | Audit a complete Spotify playlist for audio-feature coverage, duplicate recordings, tempo ambiguity, provider conflicts, and heuristic opening/peak/reset candidates without changing Spotify. |
| analyzeDjPlaylistA | Analyze a complete Spotify playlist for professional set-order planning. Returns snapshot-bound BPM, Camelot key, relative energy, provenance, confidence when available, and unresolved data without changing Spotify. |
| planDjSetA | Create an immutable, snapshot-bound professional DJ set-order plan balancing tempo, Camelot compatibility, energy arc, artist spacing, constraints, and data quality. Does not change Spotify. |
| applyDjSetPlanA | Dry-run, apply, or dynamically restore an immutable DJ plan with snapshot checks, durable progress receipts, ambiguous-write reconciliation, and final order verification. Dry-run is the default. |
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 37 tools
Most tools target distinct resources and actions (playlists, albums, playback, search), but the DJ-analytics cluster has overlap: auditDjPlaylist and analyzeDjPlaylist are nearly identical in purpose, and sortPlaylistByBpm overlaps with planDjSet. This creates a few ambiguous boundaries.
Names consistently use camelCase verb_noun patterns (getPlaylist, createPlaylist, addTracksToPlaylist). Minor deviations include combined actions like saveOrRemoveAlbumForUser and the use of check instead of get in checkUsersSavedAlbums, but the overall style is coherent.
With 37 tools, the server is heavily over-scoped. The large number is partly justified by Spotify's breadth (playback, library, playlists, audio features), but the DJ-planning subset alone adds 7 tools, pushing the count beyond reasonable usability and causing selection overhead.
The surface covers core Spotify workflows: playlist CRUD, library management, playback control, search, and user statistics. Missing minor features like shuffle/repeat, user profile, or artist follow, but the available tools handle the main use cases without dead ends.