{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"awesome-spotify-player","slug":"spotify-player","name":"Spotify Player","type":"mcp","url":"https://github.com/vsaez/mcp-spotify-player","page_url":"https://unfragile.ai/spotify-player","categories":["mcp-servers","app-builders"],"tags":[],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"awesome-spotify-player__cap_0","uri":"capability://tool.use.integration.spotify.playback.control.via.mcp.protocol","name":"spotify playback control via mcp protocol","description":"Enables remote control of Spotify playback (play, pause, skip, previous) through the Model Context Protocol, translating natural language commands from Claude/Cursor into Spotify Web API calls. Implements MCP tool handlers that map user intents to Spotify API endpoints, managing authentication state and error handling for playback state changes.","intents":["I want to pause the current song without touching my phone","Skip to the next track while coding in Claude","Resume playback from Claude without switching context","Go back to the previous song programmatically"],"best_for":["developers building AI agents that need music control","solo developers wanting hands-free Spotify control in their IDE","teams integrating Spotify into Claude-based workflows"],"limitations":["Requires active Spotify Premium account — free tier does not support Web API playback control","Playback control only works on devices already authenticated with Spotify (cannot start playback on new devices)","No support for local file playback — only works with Spotify catalog tracks"],"requires":["Python 3.8+","Spotify Premium account","Spotify Developer credentials (Client ID and Client Secret)","Valid OAuth2 refresh token from Spotify authentication flow","MCP server running and connected to Claude/Cursor"],"input_types":["natural language commands from Claude","MCP tool call parameters (action: 'play'|'pause'|'next'|'previous')"],"output_types":["JSON response with playback state confirmation","error messages if playback control fails"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-spotify-player__cap_1","uri":"capability://tool.use.integration.queue.management.and.track.sequencing","name":"queue management and track sequencing","description":"Manages Spotify playback queue by adding tracks, removing queued items, and reordering the queue through MCP tool calls. Implements queue state tracking and provides visibility into upcoming tracks, allowing Claude to intelligently sequence music based on user preferences or context.","intents":["Add a specific song to the queue without interrupting current playback","Remove a queued track that I don't want to hear","See what songs are coming up next in the queue","Reorder the queue to prioritize certain tracks"],"best_for":["developers building DJ-like agents that curate playlists dynamically","users wanting programmatic queue control from Claude","teams building music-aware productivity tools"],"limitations":["Queue operations are device-specific — changes only affect the currently active device","Cannot directly reorder queue items via Spotify Web API — must remove and re-add tracks","Queue state is ephemeral and resets when playback stops or device switches","Limited to 10,000 tracks maximum in queue (Spotify platform limit)"],"requires":["Python 3.8+","Spotify Premium account","Spotify Developer credentials","Valid OAuth2 refresh token","Active playback device with Spotify running"],"input_types":["track URI or Spotify track ID","natural language track descriptions (resolved to URIs)","queue position indices"],"output_types":["JSON confirmation of queue modification","list of queued tracks with metadata","error responses if track not found or queue operation fails"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-spotify-player__cap_2","uri":"capability://tool.use.integration.volume.and.device.control","name":"volume and device control","description":"Controls playback volume across Spotify devices and switches active playback between devices (speakers, headphones, etc.) through MCP tool calls. Implements device enumeration to discover available Spotify devices and volume adjustment via Spotify Web API, with real-time state synchronization.","intents":["Lower the volume without reaching for the speaker","Switch playback from my laptop to my phone","Check which devices are currently available for playback","Set volume to a specific percentage programmatically"],"best_for":["developers building multi-device Spotify control systems","users wanting hands-free volume control in their workflow","teams managing shared Spotify playback across office devices"],"limitations":["Volume control only works on active playback device — cannot adjust volume on inactive devices","Device switching requires active playback to be running — cannot transfer to a device without starting playback","Device list only includes devices that have been active in the last 24 hours","Some devices (e.g., Spotify Connect speakers) may have latency in volume updates (100-500ms)"],"requires":["Python 3.8+","Spotify Premium account","Spotify Developer credentials","Valid OAuth2 refresh token","At least one active Spotify device"],"input_types":["volume percentage (0-100)","device ID or device name","natural language device descriptions"],"output_types":["JSON list of available devices with metadata","confirmation of volume change","confirmation of device switch","error messages if device unavailable"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-spotify-player__cap_3","uri":"capability://tool.use.integration.playlist.creation.and.management","name":"playlist creation and management","description":"Creates new playlists, adds/removes tracks from existing playlists, and modifies playlist metadata (name, description, public/private status) through MCP tool calls. Implements playlist CRUD operations via Spotify Web API with support for batch operations and playlist state tracking.","intents":["Create a new playlist from Claude with a specific name and description","Add multiple songs to a playlist programmatically","Remove tracks from a playlist without opening Spotify","Change a playlist from private to public"],"best_for":["developers building AI-powered playlist curation systems","users wanting to organize music programmatically from Claude","teams building music discovery or recommendation agents"],"limitations":["Can only manage playlists owned by the authenticated user — cannot modify collaborative playlists created by others","Batch add operations limited to 100 tracks per request (Spotify API constraint)","Playlist creation requires user ID — must be obtained from user profile endpoint first","Changes to playlist metadata (name, description) take 1-2 seconds to propagate across Spotify clients"],"requires":["Python 3.8+","Spotify Premium account (recommended for full functionality)","Spotify Developer credentials","Valid OAuth2 refresh token with playlist-modify scope","User ID from Spotify profile"],"input_types":["playlist name and description (strings)","track URIs or Spotify track IDs","boolean flags for public/private/collaborative status","natural language playlist descriptions"],"output_types":["JSON playlist object with ID, URI, and metadata","confirmation of tracks added/removed","list of playlists owned by user","error responses if operation fails"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-spotify-player__cap_4","uri":"capability://memory.knowledge.current.playback.state.introspection","name":"current playback state introspection","description":"Retrieves real-time playback state including current track, artist, album, progress, duration, and device information through MCP tool calls. Implements polling of Spotify Web API's currently-playing endpoint with state caching to minimize API calls and provide fast context to Claude.","intents":["Tell me what song is currently playing","Check how far into the current track I am","Get metadata about the current artist and album","Determine which device is currently playing music"],"best_for":["developers building music-aware AI agents","users wanting Claude to make decisions based on current playback","teams building music-integrated productivity tools"],"limitations":["Playback state updates have 1-2 second latency due to Spotify API polling","Cannot retrieve playback history or recently played tracks (requires separate endpoint)","State is device-specific — only reflects the currently active device","API rate-limited to 60 requests per minute per user"],"requires":["Python 3.8+","Spotify Premium account","Spotify Developer credentials","Valid OAuth2 refresh token","Active playback or recent playback history"],"input_types":["optional device ID filter"],"output_types":["JSON object with current track, artist, album, progress, duration","device information (name, type, volume)","playback state (playing/paused)","null if no active playback"],"categories":["memory-knowledge","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-spotify-player__cap_5","uri":"capability://search.retrieval.search.and.track.resolution","name":"search and track resolution","description":"Searches Spotify's catalog for tracks, artists, albums, and playlists using natural language queries, then resolves results to Spotify URIs for use in other operations. Implements Spotify Web API search endpoint with fuzzy matching and result ranking to handle ambiguous user queries.","intents":["Find a song by name when I don't know the exact title","Search for all tracks by a specific artist","Look up an album and get all its tracks","Resolve a song description to a Spotify track URI"],"best_for":["developers building natural language music control systems","users wanting to add songs to queue without knowing exact Spotify URIs","teams building music discovery agents"],"limitations":["Search results limited to 50 items per query (Spotify API constraint)","Fuzzy matching may return incorrect results for ambiguous queries (e.g., 'Wonderwall' returns multiple versions)","Search does not support advanced operators (e.g., year filters, genre filters)","Results are ranked by Spotify's algorithm — may not match user intent for niche or obscure tracks"],"requires":["Python 3.8+","Spotify Developer credentials","Valid OAuth2 refresh token","Spotify catalog access (no Premium required)"],"input_types":["natural language search queries (strings)","search type filters: 'track', 'artist', 'album', 'playlist'","optional limit parameter (1-50)"],"output_types":["JSON list of search results with metadata","Spotify URIs for matched items","artist, album, and track information","empty list if no matches found"],"categories":["search-retrieval","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-spotify-player__cap_6","uri":"capability://tool.use.integration.oauth2.authentication.and.token.management","name":"oauth2 authentication and token management","description":"Handles Spotify OAuth2 authentication flow, token refresh, and credential management to maintain persistent access to Spotify Web API. Implements secure token storage and automatic refresh logic to ensure MCP server can operate without manual re-authentication.","intents":["Authenticate with Spotify once and maintain access across sessions","Automatically refresh expired tokens without user intervention","Securely store Spotify credentials for the MCP server","Handle OAuth2 callback and authorization code exchange"],"best_for":["developers deploying MCP Spotify server as a persistent service","teams wanting hands-off Spotify integration without manual token refresh","users running Claude with MCP in long-lived sessions"],"limitations":["Requires initial manual OAuth2 flow to obtain refresh token (cannot be fully automated)","Refresh tokens expire after 60 days of inactivity — requires re-authentication if unused","Credentials must be stored securely (environment variables or encrypted config) — no built-in encryption","Token refresh adds 200-500ms latency on first API call after token expiration"],"requires":["Python 3.8+","Spotify Developer credentials (Client ID and Client Secret)","OAuth2 redirect URI configured in Spotify Developer Dashboard","Initial manual authentication to obtain refresh token","Secure storage mechanism (environment variables, .env file, or secrets manager)"],"input_types":["Spotify Client ID and Client Secret","OAuth2 authorization code (from initial auth flow)","stored refresh token"],"output_types":["access token for API requests","token expiration time","refresh token (if new)"],"categories":["tool-use-integration","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-spotify-player__cap_7","uri":"capability://tool.use.integration.mcp.protocol.tool.registration.and.routing","name":"mcp protocol tool registration and routing","description":"Registers Spotify control functions as MCP tools with proper schema definitions, parameter validation, and error handling. Implements MCP tool handler pattern to route Claude's tool calls to appropriate Spotify API endpoints with automatic request/response serialization.","intents":["Make Spotify functions available as Claude tools in MCP","Validate tool parameters before sending to Spotify API","Handle tool call errors and return meaningful error messages to Claude","Define tool schemas so Claude understands available operations"],"best_for":["developers integrating Spotify into Claude via MCP","teams building Claude agents with music control capabilities","users running Claude with MCP server support"],"limitations":["Tool schemas must be manually defined — no automatic schema generation from Spotify API spec","Parameter validation is basic (type checking only) — no complex validation rules","Tool call latency includes MCP serialization overhead (~50-100ms per call)","No built-in rate limiting — relies on Spotify API rate limits"],"requires":["Python 3.8+","MCP SDK for Python","Claude or Cursor with MCP support","MCP server running and connected to Claude"],"input_types":["MCP tool call with parameters","tool name and arguments from Claude"],"output_types":["MCP tool result with JSON response","error messages if tool call fails","structured data matching tool schema"],"categories":["tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":28,"verified":false,"data_access_risk":"high","permissions":["Python 3.8+","Spotify Premium account","Spotify Developer credentials (Client ID and Client Secret)","Valid OAuth2 refresh token from Spotify authentication flow","MCP server running and connected to Claude/Cursor","Spotify Developer credentials","Valid OAuth2 refresh token","Active playback device with Spotify running","At least one active Spotify device","Spotify Premium account (recommended for full functionality)"],"failure_modes":["Requires active Spotify Premium account — free tier does not support Web API playback control","Playback control only works on devices already authenticated with Spotify (cannot start playback on new devices)","No support for local file playback — only works with Spotify catalog tracks","Queue operations are device-specific — changes only affect the currently active device","Cannot directly reorder queue items via Spotify Web API — must remove and re-add tracks","Queue state is ephemeral and resets when playback stops or device switches","Limited to 10,000 tracks maximum in queue (Spotify platform limit)","Volume control only works on active playback device — cannot adjust volume on inactive devices","Device switching requires active playback to be running — cannot transfer to a device without starting playback","Device list only includes devices that have been active in the last 24 hours","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.05,"quality":0.26,"ecosystem":0.49999999999999994,"match_graph":0.25,"freshness":0.6,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-06-17T09:51:04.049Z","last_scraped_at":"2026-05-03T14:00:15.503Z","last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=spotify-player","compare_url":"https://unfragile.ai/compare?artifact=spotify-player"}},"signature":"r6q4GGeDOmperFZ2Xb03wjBynHeiSvLzLpUUEYkXrFy1U195DW9U0NLVA4EVQRVWa95xtFxS0Hn+9PmqczKOBw==","signedAt":"2026-06-21T11:44:26.880Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/spotify-player","artifact":"https://unfragile.ai/spotify-player","verify":"https://unfragile.ai/api/v1/verify?slug=spotify-player","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}