Skip to main content
Glama
llyfn

Spotify MCP Server

by llyfn

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

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

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