Comprehensive Spotify MCP server with granular tools for dynamic HUDs and full playback control
This server exhibits severe definition quality issues across nearly all 19 tools. While tool names follow verb_noun convention (spotify_get_*), descriptions are superficial and lack actionable guidance. Most critically, NO tools have input schemas beyond optional market parameters, 17 of 19 tools declare empty input objects {} despite accepting no parameters. Parameter descriptions are absent. Output schemas are completely undocumented; tools return raw JSON or plain text with no structure guidance for LLMs. Error handling is minimal (generic 'No track playing' messages). The tool set exhibits massive redundancy: 6 tools extract single fields from the same API endpoint (/me/player/currently-playing), violating the single-responsibility principle. This forces LLMs to reason about which granular tool to call rather than composing higher-level operations. No security considerations, no pagination, no rate-limit guidance.
Get ONLY the URL of the album artwork for the currently playing track. Returns the largest available image URL - perfect for displaying in HUDs.
Get ONLY the album name of the currently playing track. Returns plain text - perfect for HUD displays.
Get all artist names of the currently playing track (comma-separated). Returns plain text.
Get ONLY the primary artist name of the currently playing track. Returns plain text - perfect for HUD displays.
Get complete information about the currently playing track, including all metadata. Returns comprehensive JSON data.
Get ONLY the name of the currently active playback device. Returns plain text - perfect for HUD displays.
17 of 19 tools have empty input schemas ({}). These tools provide no parameter guidance to LLMs.
No output schemas documented. Tools return raw JSON strings or plain text with no structure guidance. LLMs cannot plan downstream operations or extract typed fields. Violates pattern:response-shaper.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Get complete information about the user's current playback state, including track, artist, album, progress, device, and all settings. Returns comprehensive JSON data.
Get ONLY the time remaining in the current track in formatted time (M:SS or H:MM:SS). Returns formatted text - perfect for HUD countdown displays.
Get ONLY the time remaining in the current track in milliseconds. Returns number as text - perfect for countdown timers.
Get ONLY the total duration of the current track in formatted time (M:SS or H:MM:SS). Returns formatted text - perfect for HUD displays.
Get ONLY the total duration of the current track in milliseconds. Returns number as text.
Get ONLY whether the current track is explicit. Returns 'true' or 'false' as text.
Get ONLY the Spotify ID of the currently playing track. Returns ID as text.
Get ONLY the name of the currently playing track. Returns plain text - perfect for HUD displays.
Get ONLY the popularity score of the current track (0-100). Returns number as text.
Get ONLY the current playback position in formatted time (M:SS or H:MM:SS). Returns formatted text - perfect for HUD displays.
Get ONLY the current playback position in milliseconds. Returns number as text.
Get ONLY the playback progress as a percentage (0-100). Returns number as text - perfect for progress bars in HUDs.
Get ONLY the Spotify URI of the currently playing track. Returns URI as text.
Massive tool redundancy: 6 tools (get_track_name, get_artist_name, get_album_name, get_track_duration_formatted, get_track_progress_formatted, get_time_remaining_formatted) all call the same API endpoint (/me/player/currently-playing) and extract single fields. Violates pattern:tool single-responsibility principle. Should consolidate into 1-2 higher-level tools.
Descriptions are generic and lack LLM-optimized guidance. Most descriptions (50-60 chars) are below the 194-char baseline for A+ tools. No 'when to use' guidance, no dependency hints, no error recovery instructions. Descriptions like 'Get ONLY the name...' repeat across 17 tools without distinguishing when to call each.
Error handling is minimal and non-actionable. Generic fallback messages ('No track playing', 'No artist', 'No album') do not guide LLM recovery. No distinction between retryable vs fatal errors. No guidance on prerequisites (e.g., 'Start playing music on a Spotify device'). Violates pattern:recovery-guide.