spotify-mcp
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_musicC | Search Spotify. |
| get_playlistsA | List the current user's playlists. Omit |
| get_playlist_tracksA | Get the tracks in a playlist. Omit Local files and episodes (no track id) are skipped. See |
| get_saved_tracksA | Get the current user's saved ("Liked Songs") tracks. Omit |
| get_trackB | Get a single track's metadata (title, artists, album, ...). |
| get_recommendationsA | Get Spotify's algorithmic recommendations seeded from one track. May 403 if this app doesn't have access to /recommendations -- Spotify restricts it for apps created after Nov 2024 without Extended Quota Mode. |
| get_artistB | Get an artist's profile (name, genres, popularity, images). |
| get_artist_top_tracksB | Get an artist's top tracks (Spotify caps this at ~10 -- there's no "full catalog" endpoint the way YouTube Music's channel Songs tab has). |
| get_related_artistsB | Get artists related to the given one. May 403 for apps without access to this endpoint -- same restriction as /recommendations. |
| get_recently_playedB | Get the user's recently played tracks (each item wraps a "track" key). |
| get_current_userA | Get the authenticated user's own profile (id, display_name, ...). The |
| get_artist_albumsA | Get an artist's albums and singles. Omit This plus |
| get_album_tracksA | Get an album's tracks. Omit Album track objects are the "simplified" shape and carry no |
| create_playlistB | Create a new playlist owned by the current user and return it (id, name, ...). |
| add_tracks_to_playlistA | Add tracks to a playlist by Spotify track ID (or URI). Chunks in batches of 100, Spotify's per-request limit. |
| logoutA | Delete the cached Spotify OAuth token. Subsequent tool calls will fail until you re-authenticate via scripts/setup_auth_spotify.py. |
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 16 tools
Most tools are clearly distinct by resource (tracks, playlists, artists, albums, user). Minor overlap: get_playlist_tracks vs get_saved_tracks vs get_recently_played all return track lists, but their source contexts are clear. get_artist_top_tracks and get_artist_albums both provide artist catalog access, though descriptions clarify the distinction.
The set predominantly follows a verb_noun pattern (get_*, create_playlist, add_tracks_to_playlist, search_music, logout). The two exceptions are search_music and logout, which are still readable and not jarring. Overall consistent and predictable.
16 tools is slightly above the ideal 3-15 range but appropriate for Spotify's broad domain (search, user library, playlists, artists, albums, recommendations). Each tool covers a distinct need; no obvious redundancy.
The surface covers search, playlist CRUD (create, read, add tracks), saved tracks, artist/album browsing, and user info. Notable gaps: no update/delete playlist, no remove tracks from playlist, no play/control playback, no track/album search filtering beyond track/artist, and no user's top items. Core browsing is solid but lifecycle coverage is incomplete.