Spotify MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SPOTIFY_CLIENT_ID | Yes | Your Spotify app Client ID from the Developer Dashboard. | |
| SPOTIFY_MCP_CACHE | No | Path to cache OAuth tokens. Default: ~/.spotify-mcp/token.json | |
| SPOTIFY_REDIRECT_URI | No | Redirect URI for OAuth. Must match exactly one in your app. Default: http://127.0.0.1:8888/callback | |
| SPOTIFY_CLIENT_SECRET | No | Optional. If set, uses classic Authorization Code flow instead of PKCE. |
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 |
|---|---|
| authenticateA | Sign in to Spotify via OAuth (opens a browser window). Run this once before using the other tools. Tokens are cached locally and refreshed automatically, so you normally only need to authenticate a single time per machine. Args: force: If true, force Spotify to re-show the consent screen (useful to switch accounts or re-grant scopes). |
| auth_statusA | Report whether the server is currently authenticated with Spotify. |
| get_current_userA | Get the profile of the signed-in Spotify user (id, name, country, etc.). |
| searchA | Search the Spotify catalog. Args:
query: Search text. Supports Spotify field filters, e.g.
|
| get_trackA | Get detailed information about a single song. Args:
track_id: A Spotify track ID, |
| list_my_playlistsA | List the playlists owned or followed by the signed-in user. Args: limit: Number of playlists to return (1-50). Defaults to 20. offset: Index to start from, for paging through large libraries. |
| get_playlistA | Get a playlist's details and its tracks. Args:
playlist_id: A Spotify playlist ID, |
| create_playlistA | Create a new playlist for the signed-in user. Args: name: The playlist name. public: Whether the playlist is public. Defaults to false (private). description: Optional playlist description. collaborative: If true, others can edit it (forces the playlist private). track_uris: Optional list of track IDs/URIs/URLs to add on creation. |
| add_tracks_to_playlistA | Add one or more songs to an existing playlist. Args:
playlist_id: A Spotify playlist ID, URI, or URL.
track_uris: List of track IDs, |
| get_currently_playingA | Show the track currently playing on the user's Spotify account (if any). |
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 10 tools
Each tool has a distinct purpose: authentication, user info, search, playback status, and playlist management. No overlapping functionality, and descriptions clearly differentiate them.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_playlist, get_currently_playing, add_tracks_to_playlist), making the API predictable and easy to navigate.
10 tools provide a well-scoped set for a music assistant: authentication, user profile, search, playback info, and playlist CRUD. This covers essential interactions without being excessive or insufficient.
Core workflows are covered (auth, search, playlist management). Minor gaps exist (e.g., removing tracks from playlists, updating playlist metadata, playback control), but most agents will find the set sufficient for common tasks.