Skip to main content
Glama
llyfn

Spotify MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SPOTIFY_CLIENT_IDYesYour Spotify app's Client ID
SPOTIFY_REDIRECT_URINoOAuth redirect URIhttp://127.0.0.1:8888/callback
SPOTIFY_CLIENT_SECRETYesYour Spotify app's Client Secret

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_albumA

Get details of a Spotify album by its ID.

    Args:
        album_id: The Spotify ID of the album.
        market: ISO 3166-1 alpha-2 country code; affects availability/relinking.
    
get_albumsA

Get details of multiple albums in one call (up to 20 IDs).

    Args:
        album_ids: List of Spotify album IDs (max 20).
        market: ISO 3166-1 alpha-2 country code.
    
get_album_tracksA

Get tracks of a Spotify album.

    Args:
        album_id: The Spotify ID of the album.
        limit: Maximum number of tracks to return (1-50, default 20).
        offset: Index of the first track to return (default 0).
        market: ISO 3166-1 alpha-2 country code.
    
get_artistA

Get details of a Spotify artist by their ID.

    Args:
        artist_id: The Spotify ID of the artist.
    
get_artistsA

Get details of multiple artists in one call (up to 50 IDs).

    Args:
        artist_ids: List of Spotify artist IDs (max 50).
    
get_artist_albumsA

Get albums by a Spotify artist.

    Args:
        artist_id: The Spotify ID of the artist.
        include_groups: Comma-separated album types: album, single, appears_on, compilation.
        limit: Maximum number of albums to return (1-50, default 20).
        offset: Index of the first album to return (default 0).
        market: ISO 3166-1 alpha-2 country code.
    
get_trackA

Get details of a Spotify track by its ID.

    Args:
        track_id: The Spotify ID of the track.
        market: ISO 3166-1 alpha-2 country code; affects availability/relinking.
    
get_tracksA

Get details of multiple tracks in one call (up to 50 IDs).

    Args:
        track_ids: List of Spotify track IDs (max 50).
        market: ISO 3166-1 alpha-2 country code.
    
searchA

Search for tracks, albums, artists, playlists, shows, episodes, or audiobooks on Spotify.

    Args:
        query: Search query. Supports filters: artist:, album:, track:, year:, genre:,
            isrc: (track ISRC), upc: (album UPC). Use NOT/OR with quotes for refinement.
        types: Comma-separated types: track, album, artist, playlist, show, episode, audiobook.
        limit: Maximum results per type (1-50, default 10).
        offset: Index of first result to return (default 0).
        market: ISO 3166-1 alpha-2 country code to filter results.
    
get_playlistA

Get details of a Spotify playlist.

    Shows playlist metadata plus the first 20 tracks. For more tracks or
    pagination, use `get_playlist_items`.

    Args:
        playlist_id: The Spotify ID of the playlist.
        market: ISO 3166-1 alpha-2 country code; affects track availability.
    
update_playlistB

Update a playlist's name, description, or visibility.

    Args:
        playlist_id: The Spotify ID of the playlist.
        name: New name for the playlist.
        description: New description for the playlist.
        public: Whether the playlist should be public.
    
get_playlist_itemsA

Get items (tracks/episodes) in a playlist.

    Args:
        playlist_id: The Spotify ID of the playlist.
        limit: Maximum number of items to return (1-100, default 20).
        offset: Index of the first item to return (default 0).
        market: ISO 3166-1 alpha-2 country code.
    
add_playlist_itemsA

Add tracks or episodes to a playlist. Auto-chunks at 100 items per request.

    Args:
        playlist_id: The Spotify ID of the playlist.
        uris: List of Spotify URIs to add (e.g. ["spotify:track:xxx"]).
        position: Position to insert items (0-based). Appends to end if not specified.
            When chunking, subsequent chunks insert immediately after the previous.
    
remove_playlist_itemsA

Remove tracks or episodes from a playlist. Auto-chunks at 100 items per request.

    Args:
        playlist_id: The Spotify ID of the playlist.
        uris: List of Spotify URIs to remove (e.g. ["spotify:track:xxx"]).
    
reorder_playlist_itemsB

Reorder items in a playlist.

    Args:
        playlist_id: The Spotify ID of the playlist.
        range_start: Position of the first item to be reordered.
        insert_before: Position where the items should be inserted.
        range_length: Number of items to reorder (default 1).
    
get_my_playlistsA

Get the current user's playlists.

    Args:
        limit: Maximum number of playlists to return (1-50, default 20).
        offset: Index of the first playlist to return (default 0).
    
create_playlistB

Create a new playlist for the current user.

    Args:
        name: Name for the new playlist.
        description: Description for the playlist.
        public: Whether the playlist should be public (default True).
    
get_saved_tracksA

Get the current user's saved tracks.

    Args:
        limit: Maximum number of tracks to return (1-50, default 20).
        offset: Index of the first track to return (default 0).
    
get_saved_albumsA

Get the current user's saved albums.

    Args:
        limit: Maximum number of albums to return (1-50, default 20).
        offset: Index of the first album to return (default 0).
    
get_saved_showsA

Get the current user's saved shows (podcasts).

    Args:
        limit: Maximum number of shows to return (1-50, default 20).
        offset: Index of the first show to return (default 0).
    
get_saved_episodesA

Get the current user's saved episodes.

    Args:
        limit: Maximum number of episodes to return (1-50, default 20).
        offset: Index of the first episode to return (default 0).
    
get_saved_audiobooksA

Get the current user's saved audiobooks.

    Args:
        limit: Maximum number of audiobooks to return (1-50, default 20).
        offset: Index of the first audiobook to return (default 0).
    
save_to_libraryA

Save items (tracks/albums/shows/episodes/audiobooks) to the user's library.

    Auto-chunks at 50 items per request.

    Args:
        uris: List of Spotify URIs to save (e.g. ["spotify:track:xxx"]).
    
remove_from_libraryA

Remove items from the current user's library. Auto-chunks at 50 items per request.

    Args:
        uris: List of Spotify URIs to remove (e.g. ["spotify:track:xxx"]).
    
check_saved_in_libraryA

Check if items are saved in the current user's library.

    Auto-chunks at 50 items per request.

    Args:
        uris: List of Spotify URIs to check (e.g. ["spotify:track:xxx"]).
    
get_showA

Get details of a Spotify show (podcast).

    Args:
        show_id: The Spotify ID of the show.
        market: ISO 3166-1 alpha-2 country code; affects availability.
    
get_showsA

Get details of multiple shows in one call (up to 50 IDs).

    Args:
        show_ids: List of Spotify show IDs (max 50).
        market: ISO 3166-1 alpha-2 country code.
    
get_show_episodesA

Get episodes of a Spotify show.

    Args:
        show_id: The Spotify ID of the show.
        limit: Maximum number of episodes to return (1-50, default 20).
        offset: Index of the first episode to return (default 0).
        market: ISO 3166-1 alpha-2 country code.
    
get_episodeA

Get details of a podcast episode.

    Args:
        episode_id: The Spotify ID of the episode.
        market: ISO 3166-1 alpha-2 country code.
    
get_episodesA

Get details of multiple episodes in one call (up to 50 IDs).

    Args:
        episode_ids: List of Spotify episode IDs (max 50).
        market: ISO 3166-1 alpha-2 country code.
    
get_audiobookB

Get details of a Spotify audiobook.

    Args:
        audiobook_id: The Spotify ID of the audiobook.
        market: ISO 3166-1 alpha-2 country code.
    
get_audiobooksA

Get details of multiple audiobooks in one call (up to 50 IDs).

    Args:
        audiobook_ids: List of Spotify audiobook IDs (max 50).
        market: ISO 3166-1 alpha-2 country code.
    
get_audiobook_chaptersA

Get chapters of a Spotify audiobook.

    Args:
        audiobook_id: The Spotify ID of the audiobook.
        limit: Maximum number of chapters to return (1-50, default 20).
        offset: Index of the first chapter to return (default 0).
        market: ISO 3166-1 alpha-2 country code.
    
get_chapterA

Get details of a specific audiobook chapter.

    Args:
        chapter_id: The Spotify ID of the chapter.
        market: ISO 3166-1 alpha-2 country code.
    
get_chaptersA

Get details of multiple chapters in one call (up to 50 IDs).

    Args:
        chapter_ids: List of Spotify chapter IDs (max 50).
        market: ISO 3166-1 alpha-2 country code.
    
get_my_profileA

Get the current user's Spotify profile.

get_my_top_itemsB

Get the current user's top artists or tracks.

    Args:
        item_type: Type of items: "artists" or "tracks" (default "tracks").
        time_range: "short_term" (~4wk), "medium_term" (~6mo), or "long_term" (all time).
        limit: Maximum number of items to return (1-50, default 20).
        offset: Index of the first item to return (default 0).
    
whoamiA

Diagnostic: show auth status, profile basics, active device, and configured scopes.

get_playback_stateA

Get the current playback state including track, device, and progress.

get_currently_playingB

Get the currently playing track or episode.

playA

Start or resume playback.

    Args:
        device_id: ID of the device to play on. Uses active device if omitted.
        context_uri: Spotify URI of context (album, artist, playlist).
        uris: List of Spotify track URIs to play. E.g. ["spotify:track:xxx"].
        offset_position: Position in the context to start playback (0-based index).
        position_ms: Position in milliseconds to seek to.
    
pauseB

Pause playback on the active device.

    Args:
        device_id: ID of the device to pause. If not provided, pauses the active device.
    
next_trackA

Skip to the next track.

    Args:
        device_id: ID of the device. If not provided, uses the active device.
    
previous_trackA

Skip to the previous track.

    Args:
        device_id: ID of the device. If not provided, uses the active device.
    
seekA

Seek to a position in the currently playing track.

    Args:
        position_ms: Position in milliseconds to seek to.
        device_id: ID of the device. If not provided, uses the active device.
    
set_repeatA

Set the repeat mode for playback.

    Args:
        state: Repeat mode: "track", "context", or "off".
        device_id: ID of the device. If not provided, uses the active device.
    
set_volumeA

Set the playback volume.

    Args:
        volume_percent: Volume level (0-100).
        device_id: ID of the device. If not provided, uses the active device.
    
toggle_shuffleA

Set or toggle shuffle mode for playback.

    Args:
        state: True to enable, False to disable. If omitted, flips the current state.
        device_id: ID of the device. If not provided, uses the active device.
    
transfer_playbackA

Transfer playback to a different device.

    Args:
        device_id: ID of the device to transfer to.
        play: Whether to start playing on the new device (default True).
    
get_devicesA

Get the user's available Spotify devices.

add_to_queueA

Add a track or episode to the playback queue.

    Args:
        uri: Spotify URI of the item to add. E.g. "spotify:track:xxx".
        device_id: ID of the device. If not provided, uses the active device.
    
get_queueB

Get the current playback queue.

get_recently_playedB

Get the user's recently played tracks.

    Args:
        limit: Maximum number of items to return (1-50, default 20).
        after: Unix-ms cursor; return items played AFTER this timestamp.
        before: Unix-ms cursor; return items played BEFORE this timestamp.
            Only one of `after` / `before` may be set.
    
get_followed_artistsA

Get the current user's followed artists. Cursor-paginated.

    Args:
        limit: Maximum number of artists to return (1-50, default 20).
        after: Cursor (last artist ID from previous page) to fetch the next page.
    
follow_artists_or_usersA

Follow one or more artists or users. Auto-chunks at 50 IDs per request.

    Args:
        follow_type: "artist" or "user".
        ids: List of Spotify artist or user IDs (not URIs).
    
unfollow_artists_or_usersA

Unfollow one or more artists or users. Auto-chunks at 50 IDs per request.

    Args:
        follow_type: "artist" or "user".
        ids: List of Spotify artist or user IDs (not URIs).
    
check_followingA

Check whether the current user follows the given artists or users.

    Auto-chunks at 50 IDs per request.

    Args:
        follow_type: "artist" or "user".
        ids: List of Spotify artist or user IDs (not URIs).
    
follow_playlistA

Follow a playlist.

    Args:
        playlist_id: The Spotify ID of the playlist.
        public: True to make the playlist appear on the user's public profile (default True).
    
unfollow_playlistC

Unfollow a playlist.

    Args:
        playlist_id: The Spotify ID of the playlist.
    

Prompts

Interactive templates invoked by user choice

NameDescription
build_playlist_from_recentBuild a new playlist from the user's recent listening.
weekly_listening_summarySummarize what the user listened to in the past week.
playlist_from_artistsBuild a playlist seeded by a comma-separated list of artists. Args: artists: Comma-separated list of artist names. tracks_per_artist: How many tracks to pull per artist (default 5).
library_cleanupReview the user's saved library and suggest cleanup candidates. Args: scan_size: How many recently-saved tracks to scan (default 100).

Resources

Contextual data attached and managed by the client

NameDescription
me_profile
me_playback
me_queue
me_top_tracks
me_top_artists

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