Skip to main content
Glama
jamiew

Spotify MCP Server

by jamiew

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SPOTIFY_CLIENT_IDYesYour Spotify Client ID from developer.spotify.com
SPOTIFY_REDIRECT_URINoThe redirect URI configured in your Spotify apphttp://localhost:8888
SPOTIFY_CLIENT_SECRETYesYour Spotify Client Secret from developer.spotify.com

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
playback_controlB

Control Spotify playback.

Args:
    action: Action ('get', 'start', 'pause', 'skip')
    track_id: Track ID to play (for 'start')
    num_skips: Number of tracks to skip
search_tracksA

Search Spotify for tracks, albums, artists, or playlists.

Args:
    query: Search query
    qtype: Type ('track', 'album', 'artist', 'playlist')
    limit: Max results per page (1-50, default 10)
    offset: Number of results to skip for pagination (default 0)
    year: Filter by year (e.g., '2024')
    year_range: Filter by year range (e.g., '2020-2024')
    genre: Filter by genre (e.g., 'electronic', 'hip-hop')
    artist: Filter by artist name
    album: Filter by album name

Returns:
    SearchResults with 'items' (list of tracks) and pagination info ('total', 'limit', 'offset')

Note: Filters use Spotify's search syntax. For large result sets, use offset to paginate.
Example: query='love', year='2024', genre='pop' searches for 'love year:2024 genre:pop'
add_to_queueA

Add a track to the playback queue.

Args:
    track_id: Spotify track ID to add to queue
Returns:
    Status and message
get_queueA

Get the current playback queue. Returns: Currently playing track and queue of upcoming tracks

get_track_infoA

Get detailed information about one or more Spotify tracks.

Args:
    track_ids: Single track ID or list of track IDs (up to 50)

Returns:
    TrackList with 'tracks' containing track metadata including release_date.
    For single ID, returns {'tracks': [track]}.

Note: Batch lookup is much more efficient - 50 tracks = 1 API call instead of 50.
get_artist_infoA

Get detailed information about a Spotify artist.

Args:
    artist_id: Spotify artist ID
Returns:
    ArtistInfo with the artist and their top tracks
get_playlist_infoA

Get basic information about a Spotify playlist.

Args:
    playlist_id: Spotify playlist ID

Returns:
    Playlist metadata (no tracks - use get_playlist_tracks for tracks)

Note: This returns playlist info only. For tracks, use get_playlist_tracks
which supports full pagination for large playlists.
create_playlistA

Create a new Spotify playlist.

Args:
    name: Playlist name
    description: Playlist description (default: empty)
    public: Whether playlist is public (default: True)

Returns:
    The created Playlist
add_tracks_to_playlistC

Add tracks to a playlist.

Args:
    playlist_id: Playlist ID
    track_uris: List of track URIs (up to 100)
get_user_playlistsA

Get current user's playlists with pagination support.

Args:
    limit: Max playlists to return per page (1-50, default 20)
    offset: Number of playlists to skip for pagination (default 0)

Returns:
    PlaylistList with 'items' (list of playlists) and pagination info ('total', 'limit', 'offset')

Note: For users with many playlists, use offset to paginate through results.
Example: offset=0 gets playlists 1-20, offset=20 gets playlists 21-40, etc.
get_playlist_tracksA

Get tracks from a playlist with full pagination support.

Args:
    playlist_id: Playlist ID
    limit: Max tracks to return (None for all tracks, up to 10,000 safety limit)
    offset: Number of tracks to skip for pagination (default 0)

Returns:
    PlaylistTracks with 'items' (list of tracks), 'total', 'limit', 'offset'

Note: Large playlists require pagination. Use limit/offset to get specific ranges:
- Get first 100: limit=100, offset=0
- Get next 100: limit=100, offset=100
- Get all tracks: limit=None (use with caution on very large playlists)
remove_tracks_from_playlistB

Remove tracks from a playlist.

Args:
    playlist_id: Playlist ID
    track_uris: List of track URIs to remove
modify_playlist_detailsC

Modify playlist details.

Args:
    playlist_id: Playlist ID
    name: New playlist name (optional)
    description: New playlist description (optional)
    public: Whether playlist should be public (optional)
reorder_playlist_tracksA

Move a contiguous block of tracks to a new position within a playlist.

Args:
    playlist_id: Playlist ID
    range_start: Zero-based position of the first track to move
    insert_before: Zero-based position to insert the moved block before.
        Pass the playlist's total track count to move the block to the end.
    range_length: Number of consecutive tracks to move (default 1)
    snapshot_id: Optional playlist snapshot ID to guard against concurrent edits

Returns:
    ActionResult with the new snapshot_id

Note: Positions are zero-based. Example: move the first 3 tracks to just
before position 10 with range_start=0, range_length=3, insert_before=10.
get_album_infoA

Get detailed information about a Spotify album.

Args:
    album_id: Spotify album ID

Returns:
    AlbumInfo with album metadata (release_date, label) and its tracks
get_saved_tracksA

Get user's saved/liked tracks (Liked Songs library).

Args:
    limit: Max tracks to return per page (1-50, default 20)
    offset: Number of tracks to skip for pagination (default 0)

Returns:
    SavedTracks with 'items' (tracks with added_at timestamp) and pagination info

Prompts

Interactive templates invoked by user choice

NameDescription
create_mood_playlistCreate a playlist based on mood and preferences.
analyze_large_playlistAnalyze a large playlist efficiently using pagination.
discover_music_systematicallySystematically discover music using search pagination.

Resources

Contextual data attached and managed by the client

NameDescription
current_userCurrent user's profile.
current_playback_resourceCurrent playback state.

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/jamiew/spotify-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server