Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SPOTIFY_CLIENT_IDYesSpotify Client ID from your Spotify app (required for OAuth PKCE login). No secret needed since this uses PKCE.

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
pingA

Health-check tool: confirms the MCP server is reachable and tools can be called.

liked_songsA

List the user's saved ("Liked Songs") tracks. limit is capped at 50 by Spotify — pass a higher offset in a follow-up call to page through more (the user may have hundreds or thousands of saved tracks).

like_tracksA

Save one or more tracks to the user's Liked Songs. track_ids come from search_track / playlist_tracks / top_tracks. Note: Spotify restricts this endpoint to apps with "Extended Quota Mode" approval — it may fail with a permissions error on apps that don't have it.

unlike_tracksA

Remove one or more tracks from the user's Liked Songs. Note: Spotify restricts this endpoint to apps with "Extended Quota Mode" approval — it may fail with a permissions error on apps that don't have it.

top_tracksA

Get the user's most-listened-to tracks. time_range: short_term (~4 weeks), medium_term (~6 months, default), or long_term (years).

top_artistsA

Get the user's most-listened-to artists. time_range: short_term (~4 weeks), medium_term (~6 months, default), or long_term (years).

recently_playedA

Get the user's most recently played tracks, most recent first.

now_playingA

Get the track currently playing on the user's Spotify account, if any.

pauseA

Pause playback on the user's active Spotify device.

resumeA

Resume/start playback on the user's active Spotify device.

skip_nextA

Skip to the next track on the user's active Spotify device.

skip_previousA

Skip to the previous track on the user's active Spotify device.

set_playback_volumeA

Set playback volume on the user's active Spotify device. volume_percent: 0-100.

queue_trackA

Add a track to the playback queue. track_id comes from search_track.

shuffleA

Turn shuffle mode on or off on the user's active Spotify device.

repeat_modeA

Set repeat mode on the user's active Spotify device. mode: "track" (repeat the current track), "context" (repeat the current playlist/album), or "off".

seekA

Seek to a position (in milliseconds) in the currently playing track.

list_devicesA

List the Spotify devices currently known to the user's account (phone, desktop app, web player, speakers, ...), including which one (if any) is active. Use this to see what's available before calling activate_device — the Spotify API can only control a device that's already open somewhere, it can't launch Spotify from nothing.

activate_deviceA

Switch playback to a specific device (from list_devices) and optionally start playing on it.

list_user_playlistsA

List the logged-in user's Spotify playlists.

playlist_tracksA

List the tracks in a playlist, including each track's id (needed by add_tracks / remove_tracks_from_playlist). playlist_id comes from list_user_playlists.

create_user_playlistA

Create a new playlist in the logged-in user's Spotify account.

⚠️ public=False is currently ignored by Spotify's API — playlists are created public regardless (confirmed bug on Spotify's side, not this server; see journal entry 30).

add_tracksA

Add one or more tracks to a playlist. playlist_id and track_ids come from create_user_playlist / list_user_playlists and search_track.

remove_tracksA

Remove one or more tracks from a playlist. playlist_id and track_ids come from list_user_playlists and playlist_tracks.

find_playlistsA

Search Spotify for existing curated playlists matching a query (e.g. 'lofi coding beats'). Use this to recommend/discover an existing playlist. Note: tracks inside a playlist you don't own can't be read via this API (only its name/description/owner) — playlist_tracks only works on your own playlists.

search_trackA

Search Spotify's catalog for tracks matching a query (song name, artist, etc.). Each result includes its id, for use with add_tracks / queue_track.

import_youtube_playlistA

Extract a tracklist from a YouTube video's chapters or description (for videos that list their songs — mixes, compilations, study/focus playlists, etc.), look each one up on Spotify, and add whatever matches to a new playlist. Best-effort: only works for videos with a written tracklist (no audio recognition); entries are skipped rather than guessed when the Spotify result's artist doesn't match the tracklist entry's artist (common for "unreleased"/"coming soon" tracks that aren't on Spotify at all).

⚠️ public=False is currently ignored by Spotify's API — playlists are created public regardless (confirmed bug on Spotify's side, not this server; see journal entry 30).

Prompts

Interactive templates invoked by user choice

NameDescription
build_playlistBuild a Spotify playlist around a theme, using the model's own music knowledge instead of generic search phrases.
listening_recapSummarize the user's current Spotify listening: now playing, top tracks, and recently played.
import_youtube_mixImport a YouTube mix/compilation video's tracklist into a new Spotify playlist.
start_listeningGet music playing: check what's already active, or help pick a device if nothing is.
curate_from_likedBuild a new playlist from a subset of the user's Liked Songs that fits some criteria (mood, era, genre feel, ...).

Resources

Contextual data attached and managed by the client

NameDescription
now_playing_resourceThe track currently playing on the logged-in user's account, if any.
playlists_resourceThe logged-in user's Spotify playlists.
profile_resourceThe logged-in user's basic Spotify profile (id, display name, follower count, profile URL/image).
dashboard_resourceA one-shot snapshot of the user's Spotify state — what's playing, available devices, top tracks, and recently played — everything a host might want to show at a glance, without several separate tool calls.

TDQS

A3.6/5.0

Scored across 27 tools

Disambiguation4/5

Most tools clearly target a distinct resource and action: devices, playlists, playback modes, liked songs, and search are easy to tell apart. The only minor overlaps are resume vs activate_device (both can start playback) and add_tracks vs queue_track, but their targets are clearly described.

Naming Consistency3/5

Snake_case is used consistently and many tools follow a verb_noun pattern such as list_devices, create_user_playlist, and unlike_tracks. However, several tools are noun or state phrases instead of commands (playlist_tracks, liked_songs, top_tracks, repeat_mode), and similar operations use different verbs like list_user_playlists vs find_playlists.

Tool Count3/5

27 tools is heavy and just past the 25 threshold, but Spotify's domain spans playback, playlists, library, and search, so most tools have a distinct purpose. A few tools like ping and the many single-purpose playback controls add bulk and could be consolidated.

Completeness3/5

Core workflows are covered: searching tracks, creating and editing playlists, controlling playback, and viewing listening history. Obvious gaps include no playlist update/delete/reorder, no ability to play a specific playlist or album context, and no artist/album search, so some lifecycle flows dead-end.

Maintenance

ActivityMaintained
ResponsivenessNo issues