Spotify MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| 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 | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/martin-gomola/spotify-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server