spotify-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SPOTIFY_CLIENT_ID | Yes | Your Spotify Client ID from the Spotify Developer Dashboard. | |
| SPOTIFY_MCP_TOOLSETS | No | Comma-separated list of toolsets to load (core, social, discovery, power, all). Useful for clients with tool limits like Cursor. | all |
| SPOTIFY_REDIRECT_URI | No | The Redirect URI configured in the Spotify Developer Dashboard. Must match exactly. | http://127.0.0.1:8888/callback |
| SPOTIFY_CLIENT_SECRET | No | Your Spotify Client Secret. Optional; if provided, uses traditional OAuth, otherwise uses PKCE. |
Capabilities
Features and capabilities supported by this server
| 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 |
|---|---|
| spotify_statusB | Check Spotify connection status, profile info, and current playback. |
| spotify_now_playingA | Get the currently playing track, playback state, and device info. |
| spotify_playC | Start or resume playback of a track URI, album/playlist context_uri, or just resume if neither given. |
| spotify_pauseB | Pause the current playback. |
| spotify_resumeC | Resume paused playback. |
| spotify_skip_nextC | Skip to the next track. |
| spotify_skip_previousC | Skip to the previous track. |
| spotify_add_to_queueC | Add a track or episode URI to the playback queue. |
| spotify_get_queueA | Get the current playback queue (now playing + upcoming tracks). |
| spotify_get_devicesA | List all available Spotify Connect devices. |
| spotify_set_volumeB | Set playback volume (0-100). Requires Premium. |
| spotify_seekA | Seek to a position (in milliseconds) in the currently playing track. Requires Premium. |
| spotify_set_repeatA | Set repeat mode: off, context, or track. Requires Premium. |
| spotify_toggle_shuffleB | Turn shuffle on or off. Requires Premium. |
| spotify_transfer_playbackC | Transfer playback to a different device. Requires Premium. |
| spotify_get_my_playlistsA | List your playlists (up to 50). |
| spotify_get_playlistA | Get playlist details and its first page of tracks. |
| spotify_get_playlist_tracksA | Get tracks from a playlist with pagination (limit up to 100, offset for paging). |
| spotify_create_playlistB | Create a new empty playlist with the given name. |
| spotify_add_to_playlistA | Add track URIs to a playlist (max 100 per call). Appends by default or inserts at position. |
| spotify_reorder_playlistB | Move tracks within a playlist (range_start to insert_before, range_length consecutive). |
| spotify_update_playlistA | Update a playlist's name, description, or public/private visibility. |
| spotify_follow_playlistD | Follow a playlist. |
| spotify_get_playlist_coverC | Get a playlist's cover image URLs. |
| spotify_check_playlist_followersA | Check if specific users follow a playlist (max 5 user IDs). |
| spotify_searchA | Search Spotify for tracks, artists, albums, or playlists. Supports field filters like artist:, genre:, year: in the query. |
| spotify_related_artistsB | Get up to 20 artists similar to a given artist. |
| spotify_discover_by_artistA | Discover tracks from an artist's related artists' recent albums (1-50). |
| spotify_discover_by_moodB | Discover tracks by mood (happy, sad, energetic, chill, focused, romantic, angry, party). |
| spotify_genre_explorerC | Explore a genre by finding its tracks and artists. |
| spotify_discover_deep_cutsB | Find an artist's deep cuts -- album tracks that were not released as singles. |
| spotify_top_tracksB | Get your top tracks by time range (short_term/medium_term/long_term), up to 50. |
| spotify_top_artistsA | Get your top artists by time range (short_term/medium_term/long_term), up to 50. |
| spotify_recently_playedA | Get your recently played tracks in reverse chronological order, up to 50. |
| spotify_get_saved_tracksA | Get your liked/saved tracks with pagination (limit up to 50, offset for paging). |
| spotify_save_tracksA | Save tracks to your Liked Songs (max 50 URIs per call). |
| spotify_get_saved_albumsA | Get your saved albums with pagination (limit up to 50, offset for paging). |
| spotify_save_albumsB | Save albums to your library (max 50 per call). |
| spotify_check_saved_tracksC | Check which tracks are in your Liked Songs (max 50 per call). |
| spotify_check_saved_albumsA | Check which albums are saved in your library (max 50 per call). |
| spotify_get_saved_episodesA | Get your saved podcast episodes (up to 50). |
| spotify_follow_artistsB | Follow one or more artists (max 50 per call). |
| spotify_get_followed_artistsC | Get your followed artists (up to 50). |
| spotify_check_following_artistsB | Check if you follow specific artists (max 50 per call). |
| spotify_check_following_usersC | Check if you follow specific Spotify users. |
| spotify_follow_usersC | Follow one or more Spotify users. |
| spotify_get_saved_showsB | Get your saved/followed podcasts and shows (up to 50). |
| spotify_get_showC | Get detailed information about a podcast or show. |
| spotify_get_show_episodesA | Get episodes of a show, newest first (up to 50). |
| spotify_save_showsC | Save shows to your library (max 50 per call). |
| spotify_check_saved_showsC | Check which shows are saved in your library (max 50 per call). |
| spotify_save_episodesA | Save podcast episodes to your library (max 50 per call). |
| spotify_get_episodeC | Get detailed information about a podcast episode. |
| spotify_get_trackC | Get detailed information about a track. |
| spotify_get_albumC | Get detailed information about an album including its tracklist. |
| spotify_get_artistC | Get detailed information about an artist. |
| spotify_get_userC | Get a Spotify user's public profile and public playlists. |
| spotify_get_artist_albumsC | List all albums, singles, and compilations for an artist. |
| spotify_deduplicate_playlistA | Find and optionally remove duplicate tracks from a playlist. Set dry_run=False to remove. |
| spotify_merge_playlistsC | Merge multiple playlists into one new playlist, removing duplicates by default. |
| spotify_split_playlist_by_artistA | Split a playlist into per-artist sub-playlists. Artists with fewer than 3 tracks go into a "Various" playlist. |
| spotify_playlist_diffB | Compare two playlists, showing tracks unique to each and tracks they share. |
| spotify_export_playlistC | Export a playlist as a formatted text list with artist, album, and duration for each track. |
| spotify_find_playlist_overlapsB | Scan all your playlists and find which pairs share tracks, ranked by overlap. |
| spotify_find_playlist_subsetsA | Scan all your playlists and find ones where one playlist is a near-subset of another. Threshold is the percentage of the smaller playlist's tracks that must exist in the larger. |
| spotify_absorb_playlistA | Merge unique tracks from a source playlist into a target playlist. Tracks already in target are skipped. Set dry_run=False to apply. |
| spotify_listening_reportB | Generate a listening report combining top tracks, top artists, genre breakdown, and recent activity. |
| spotify_playlist_analysisC | Analyze a playlist's composition including top artists, genre distribution, decades, and duration. |
| spotify_taste_evolutionB | Compare your top artists and genres across short, medium, and long term to identify taste trends. |
| spotify_smart_shuffleB | Reorder a playlist using a smart strategy: variety, alphabetical_artist, chronological, genre_variety, energy_arc, or reverse_chronological. |
| spotify_artist_deep_diveB | Get a comprehensive artist profile including genres, full discography, and related artists. |
| spotify_create_radioA | Create a radio-style playlist from a seed track or artist by sampling related artists' catalogs. |
| spotify_time_capsuleC | Snapshot your current top tracks into a private playlist as a musical time capsule. |
| spotify_vibe_playlistB | Create a playlist matching a mood (happy, sad, energetic, chill, focused, romantic, angry, party). |
| spotify_era_playlistC | Create a playlist of tracks from a specific decade (1960s through 2020s). |
| spotify_sort_playlistB | Sort a playlist by track_name, artist_name, album_name, duration, or date_added. |
| spotify_cleanup_playlistC | Find and optionally remove unavailable and duplicate tracks from a playlist. Set dry_run=False to apply. |
| spotify_interleave_playlistsA | Create a new playlist by round-robin interleaving tracks from 2-5 source playlists. |
| spotify_playlist_radioB | Generate a radio playlist from an existing playlist's top artists and their related artists, excluding existing tracks. |
| spotify_build_queueB | Add multiple tracks (max 50) to the playback queue in order. Requires an active device. |
| spotify_queue_from_playlistC | Queue tracks from a playlist, optionally shuffled. Requires an active device. |
| spotify_playlist_vibeB | Analyze a playlist's vibe, energy, and genre makeup using artist genre data. |
| spotify_find_vibe_matchesA | Find tracks that match a playlist's vibe by searching its top genres, excluding existing tracks. |
| spotify_listening_patternsA | Analyze recent listening patterns: time-of-day, day-of-week, sessions, and repeat plays. |
| spotify_taste_profileA | Build a genre taste profile with diversity score and niche artist detection from your top artists. |
| spotify_playlist_compareC | Compare 2-5 playlists side by side: shared tracks, shared artists, unique tracks, and size/duration. |
| spotify_playlist_freshnessA | Scan all your playlists and show when each was last updated, sorted by staleness (oldest first). |
| spotify_artist_timelineA | Map an artist's full release timeline grouped by year, with career span and release type counts. |
| spotify_artist_networkC | Map an artist's network of related artists. Depth 2 reveals bridge artists connecting different parts of the network. |
| spotify_find_songA | Find songs using a natural-language description. Parses quoted titles, "by artist", decade refs, and genre keywords. |
| spotify_sync_libraryA | Sync your Spotify library to a local index for AI-powered playlist curation. Fetches all liked songs and tracks from playlists you created (skips followed/saved playlists by others). Run periodically to keep fresh. Args: include_liked: Sync liked/saved songs. Default True. include_playlists: Sync your created playlists. Default True. force: Re-sync even if synced recently. Default False. |
| spotify_library_statsA | Get a summary of your synced library — artist counts, playlist names, and dates. Returns your full artist landscape (compact) so the AI can reason about vibes, genres, and groupings without loading every track. |
| spotify_query_libraryA | Query your synced library with filters. Returns matching tracks with URIs. All filters are combined with AND logic. All text matching is case-insensitive and supports partial matches. Args: artists: Filter by artist names (partial match, case-insensitive). playlist_name: Filter to tracks from a specific playlist (partial match). added_after: Only tracks added after this date (YYYY-MM-DD). added_before: Only tracks added before this date (YYYY-MM-DD). source: "liked", "playlists", or "all" (default "all"). track_name: Filter by track name (partial match). album_name: Filter by album name (partial match). limit: Max results (default 200, max 500). |
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
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/gupta-kush/spotify-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server