mcp-spotify-free
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SPOTIFY_BROWSER | No | Browser to read Spotify cookies from: edge (default), chrome, brave, vivaldi, opera. Must have an active open.spotify.com session. | edge |
| SPOTIFY_USE_PROXY | No | Set to 1 to send traffic through the system proxy (off by default). | |
| SPOTIFY_COOKIES_FILE | No | Path to a JSON file of cookies (bypasses reading from the browser). |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_docsA | Full usage guide for every tool of this server (one big text). |
| spotify_statusB | Account, token, library size, now playing and every Connect device. |
| list_devicesB | List every Spotify Connect device (Chromecast, MacBook, phones, TVs). |
| now_playingB | Current track, play/pause state and the active device. |
| list_liked_songsC | Read the Liked Songs playlist (free accounts included). |
| search_liked_songsA | Search the whole Liked Songs library for a title / artist / album. |
| search_spotifyA | Search the whole Spotify catalog (not only your library). Same search box as the web player: tracks, artists, albums, playlists and profiles. Use it when the song is not in the Liked Songs. |
| play_liked_songC | Play a liked song, optionally on a specific Spotify Connect device. |
| play_trackB | Play a raw Spotify track URI on a device. |
| play_songA | Play a song by name - Liked Songs first, then the whole catalog. This is the tool to use when the user says "play ": it looks the title/artist up in the Liked Songs and, if nothing matches, falls back to the Spotify catalog search. |
| chromecast_sentC | Shortcut: drive the Chromecast. Always targets the device named "Chromecast" (falls back to a Google / Chromecast device if the name differs). |
| pause_playbackC | Pause playback ("" = the device that is currently playing). |
| resume_playbackC | Resume playback ("" = the device that is currently playing). |
| skip_nextC | Skip to the next track. |
| skip_previousC | Go back to the previous track. |
| set_volumeB | Set the volume of a device (0-100). |
| cleanup_devicesA | Remove the leftover "MCP Spotify Free" Connect devices of this server. The server does not register a device of its own any more (it reuses the account's web-player device to send the commands), but earlier versions did - those entries are removed here, right away. |
| spotify_loginA | Capture a working Spotify session (free account is enough). Tries, in order: the stored session, then the browser profile. If the browser keeps the session cookie in memory, the user is asked to quit the browser (Cmd+Q) so Chromium flushes it to disk - the tool keeps polling until the session is captured, then stores it on the filesystem so later runs work without the browser. |
| spotify_logoutA | Forget the stored session (does not log the account out of Spotify). |
| spotify_session_statusB | Diagnose the session: where the cookies come from and if they work. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
The playback trio play_song / play_liked_song / play_track all ultimately start playback of a track, and an agent could easily misselect between them (play_song already falls back to catalog search and can target devices, so play_liked_song's niche is thin). Similarly search_liked_songs vs list_liked_songs vs search_spotify borders on overlapping, though descriptions do help distinguish library vs catalog. The rest (pause/resume/skip/volume/devices/session) are clearly distinct.
Most tools follow a snake_case verb_noun pattern (play_song, list_devices, set_volume, search_spotify), with a consistent spotify_ prefix on session tools. Outliers are chromecast_sent (a noun/past-tense name that doesn't describe an action) and now_playing (noun phrase), but overall the convention is readable and predictable.
At 20 tools this sits at the heavy end of the recommended 3-15 range for what is essentially a single-domain playback controller. Some of that weight comes from near-duplicate playback entries and a bulky get_docs tool that could be folded into status output.
Core lifecycle is covered: session login/logout/status, device listing and cleanup, play/pause/resume/skip forward-back, volume, search, library listing and now-playing. Minor gaps remain (no seek/position, no shuffle or repeat, no queue management, no playlist creation), but an agent can work around these for the stated free-account playback purpose.