mcp-server-spotify
Provides tools for searching music, controlling playback, managing playlists, and accessing user library via the Spotify Web API.
Spotify MCP Server
A Model Context Protocol (MCP) server that provides tools for interacting with the Spotify Web API. Enables AI assistants like Claude to search music, control playback, manage playlists, and more.
Features
Search - Find tracks, albums, artists, playlists, shows, episodes, and audiobooks
Playback Control - Play, pause, skip, seek, volume, shuffle, repeat, queue management
Playlists - Create, update, add/remove/reorder tracks
Library - View and manage saved tracks, albums, shows, episodes, and audiobooks
Browse - Get album details, artist info, track metadata
Podcasts & Audiobooks - Browse shows, episodes, audiobooks, and chapters
User Profile - View profile, top artists/tracks, followed artists
44 tools covering non-deprecated Spotify Web API endpoints
Prerequisites
uv — install with
curl -LsSf https://astral.sh/uv/install.sh | shA Spotify Developer account
A Spotify app with Client ID and Client Secret
Getting Your Spotify Credentials
Go to the Spotify Developer Dashboard
Click Create App
Fill in the app details:
App name: Choose any name (e.g., "My MCP Server")
App description: Optional
Redirect URI:
http://127.0.0.1:8888/callbackWhich API/SDKs are you planning to use?: Select Web API
Click Save
On your app's page, find your Client ID
Click Show client secret to reveal your Client Secret
Important: The redirect URI must exactly match
http://127.0.0.1:8888/callback(or whatever you set inSPOTIFY_REDIRECT_URI). Do not uselocalhost— use127.0.0.1.
Installation
Pick your client below. All examples use uvx to fetch the server on demand — no clone, no manual install.
Claude Code
claude mcp add spotify \
-e SPOTIFY_CLIENT_ID=your_client_id \
-e SPOTIFY_CLIENT_SECRET=your_client_secret \
-- uvx mcp-server-spotifyOther MCP clients
Most MCP clients configure servers via a JSON file. Add this entry to your client's MCP config:
{
"mcpServers": {
"spotify": {
"command": "uvx",
"args": ["mcp-server-spotify"],
"env": {
"SPOTIFY_CLIENT_ID": "your_client_id",
"SPOTIFY_CLIENT_SECRET": "your_client_secret"
}
}
}
}Running from a local checkout
For development, or if you want to run a modified copy:
git clone https://github.com/llyfn/spotify-mcp.git
cd spotify-mcp && uv syncThen point your client at the local checkout instead of uvx:
"command": "uv",
"args": ["--directory", "/absolute/path/to/spotify-mcp", "run", "mcp-server-spotify"]Configuration
Variable | Required | Default | Description |
| Yes | — | Your Spotify app's Client ID |
| Yes | — | Your Spotify app's Client Secret |
| No |
| OAuth redirect URI |
Authentication
The server uses Spotify's Authorization Code flow:
On first use, the server opens your browser to Spotify's login page
Spotify will ask you to approve access — the server requests all scopes needed for the full tool set (playback, library, playlists, and user data)
After you authorize, Spotify redirects to the local callback server
The server exchanges the authorization code for access/refresh tokens
Tokens are stored securely in
~/.spotify-mcp/credentials.jsonTokens are automatically refreshed when they expire
If running in a headless environment (SSH, Docker), the auth URL will be printed to stderr — copy and paste it into a browser manually.
Re-authenticating
To re-authenticate (e.g., after revoking access), delete the stored credentials:
rm ~/.spotify-mcp/credentials.jsonAvailable Tools
Search
Tool | Description |
| Search for tracks, albums, artists, playlists, shows, episodes, or audiobooks |
Albums
Tool | Description |
| Get album details by ID |
| Get tracks in an album |
Artists
Tool | Description |
| Get artist details by ID |
| Get albums by an artist |
Tracks
Tool | Description |
| Get track details by ID |
Playlists
Tool | Description |
| Get playlist details |
| Update playlist name, description, or visibility |
| Get items in a playlist |
| Add tracks/episodes to a playlist |
| Remove items from a playlist |
| Reorder items in a playlist |
| Get the current user's playlists |
| Create a new playlist |
Library
Tool | Description |
| Get saved tracks |
| Get saved albums |
| Get saved shows |
| Get saved episodes |
| Get saved audiobooks |
| Save items to library |
| Remove items from library |
| Check if items are in library |
Player
Tool | Description |
| Get current playback state |
| Get the currently playing track |
| Start or resume playback |
| Pause playback |
| Skip to next track |
| Skip to previous track |
| Seek to position in track |
| Set repeat mode (track/context/off) |
| Set playback volume |
| Toggle shuffle mode |
| Transfer playback to another device |
| Get available devices |
| Add item to playback queue |
| Get the playback queue |
| Get recently played tracks |
Shows & Podcasts
Tool | Description |
| Get show details |
| Get episodes of a show |
Audiobooks
Tool | Description |
| Get audiobook details |
| Get chapters of an audiobook |
| Get chapter details |
Users
Tool | Description |
| Get current user's profile |
| Get top artists or tracks |
Following artists/users uses the same
save_to_library/remove_from_library/check_saved_in_librarytools — pass an artist or user URI.
Contributing
See CONTRIBUTING.md for development setup and guidelines.
License
MIT - see LICENSE for details.
Maintenance
Latest Blog Posts
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/llyfn/spotify-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server