Skip to main content
Glama
jamiew

Spotify MCP Server

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

Capabilities

Server capabilities have not been inspected yet.

Tools

Functions exposed to the LLM to take actions

NameDescription
playback_control

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_tracks

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:
    Dict 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_queue

Add a track to the playback queue.

Args:
    track_id: Spotify track ID to add to queue
Returns:
    Dict with status and message
get_queue

Get the current playback queue. Returns: Dict with currently_playing track and queue of upcoming tracks

get_track_info

Get detailed information about one or more Spotify tracks.

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

Returns:
    Dict with 'tracks' list 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_info

Get detailed information about a Spotify artist.

Args:
    artist_id: Spotify artist ID
Returns:
    Dict with artist info and top tracks
get_playlist_info

Get basic information about a Spotify playlist.

Args:
    playlist_id: Spotify playlist ID

Returns:
    Dict with 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_playlist

Create a new Spotify playlist.

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

Returns:
    Dict with created playlist information
add_tracks_to_playlist

Add tracks to a playlist.

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

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:
    Dict 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_tracks

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:
    Dict 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_playlist

Remove tracks from a playlist.

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

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)
get_album_info

Get detailed information about a Spotify album.

Args:
    album_id: Spotify album ID

Returns:
    Dict with album metadata including release_date, label, tracks
get_audio_features

Get audio features for one or more tracks (tempo, key, energy, danceability, etc).

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

Returns:
    Dict with 'features' list containing audio features for each track.
    Features include: tempo, key, mode, time_signature, danceability, energy,
    valence, loudness, speechiness, acousticness, instrumentalness, liveness.

Note: Batch lookup is efficient - 100 tracks = 1 API call.
get_saved_tracks

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:
    Dict with 'items' (list of tracks with added_at timestamp) and pagination info
get_recommendations

Get track recommendations based on seed artists, tracks, or genres.

Args:
    seed_artists: List of artist IDs (up to 5 total seeds combined)
    seed_tracks: List of track IDs (up to 5 total seeds combined)
    seed_genres: List of genres (up to 5 total seeds combined)
    limit: Number of recommendations to return (1-100, default 20)

Returns:
    Dict with 'tracks' list of recommended tracks

Note: Total seeds (artists + tracks + genres) must be between 1 and 5.
Use search_tracks to find seed track/artist IDs, or common genres like:
'pop', 'rock', 'hip-hop', 'electronic', 'jazz', 'classical', 'r-n-b', 'country'

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