Skip to main content
Glama

Spotify MCP

A FastMCP tool for Spotify.

Demo

Link: https://drive.google.com/file/d/1jGGQBzeXSKSJijeUwFZLdvrKPmPuogGd/

Related MCP server: Spotify MCP Server

Pre-requisites

Installation

  • Clone this repository

  • Create a .env file in the root of the repository and add your Spotify API credentials (copy over from .env.example)

  • You can get your credentials by going to the Spotify Developer Dashboard and creating an app.

  • Go to Cursor Settings > Features > MCP Servers > + Add new MCP server

  • Name: Spotify, Type: command, Command: uv --directory <path-to-repository/mcp-spotify> run main.py

You should see the tool installed now. installed_mcp

Trying it out

  • Open Composer in "agent" mode and voila, you can have cursor control your Spotify player. (make sure you have spotify open on an active device)

Features

Below is an example conversation showcasing how you can interact with the Spotify MCP tool through Cursor Composer:

  1. User: "Show me my playlists."
    Response: "Here are your playlists: Chill Vibes, Workout Mix, Top Hits."

  2. User: "Play my 'Chill Vibes' playlist."

  3. User: "Pause song."
    Response: "Playback paused."

  4. User: "Resume song."
    Response: "Resuming playback..."

  5. User: "What song is this?"
    Response: "You're listening to 'Faded' by Alan Walker."

  6. User: "Tell me about this artist and show me some popular tracks."
    Response: "Artist Info: Alan Walker."

  7. User: "Show me my top artists from the last 6 months."
    Response: "Here are your most played artists..."

  8. User: "Search for Coldplay."
    Response: "Found artist: Coldplay. Here are their top tracks..."

  9. User: "Play song 'Fix You'."
    Response: "Starting playback for 'Fix You'..."

  10. User: "Show me my queue."
    Response: "Current queue: Track 1, Track 2, Track 3..."

  11. User: "Add 'Paradise' to my queue."
    Response: "Added 'Paradise' by Coldplay to your queue."

  12. User: "Move 'Paradise' up in the queue."

  13. User: "Set it on repeat."

  14. User: "I like this song. Recommend some similar tracks."
    Response: "Here are some recommendations based on this track..."

  15. User: "Add this track to my 'Chill Vibes' playlist."

Additional Available Features:

  • Seek to specific position in track

  • View detailed playback state

  • Skip multiple tracks at once

If you want more features to be supported, feel free to raise an issue!

Available Tools

21 tools
add_to_playlistC
Add tracks to a playlist
Args:
    playlist_id: Spotify playlist ID
    track_ids: List of track IDs to add

Inputs: playlist_id (required), track_ids (required).

add_to_queueC
Add a track to the queue
Args:
    track_id: Spotify track ID to add

Inputs: track_id (required).

get_artist_top_tracksC
Get top tracks for an artist
Args:
    artist_id: Spotify artist ID

Inputs: artist_id (required).

get_current_trackB

Get information about the currently playing track

Inputs: no named parameters.

get_item_infoC
Get detailed information about a Spotify item
Args:
    item_id: Spotify ID
    type: One of 'track', 'album', 'artist', 'playlist'

Inputs: item_id (required), type.

get_my_playlistsC

FastMCP tool to get user playlists using SpotifyClient.

Inputs: no named parameters.

get_playback_stateB

Get current playback information

Inputs: no named parameters.

get_queueB

Get the current queue of tracks

Inputs: no named parameters.

get_recommendationsB
Get Spotify recommendations based on seeds
Args:
    seed_artists: Comma-separated artist IDs
    seed_tracks: Comma-separated track IDs
    seed_genres: Comma-separated genres
    limit: Number of recommendations

Inputs: seed_artists, seed_tracks, seed_genres, limit.

get_top_artistsB
Get user's top artists from Spotify
Args:
    limit: Number of artists (max 50)
    time_range: One of 'short_term' (4 weeks), 'medium_term' (6 months), 'long_term' (all time)

Inputs: limit, time_range.

next_trackA

Skip to next track in queue

Inputs: no named parameters.

pause_playbackB

FastMCP tool to pause playback on spotify.

Inputs: no named parameters.

previous_trackB

Go back to previous track

Inputs: no named parameters.

reorder_queueB
Reorder tracks in queue by moving a track to a different position
Args:
    range_start: Position of track to move
    insert_before: Position to insert the track

Inputs: range_start (required), insert_before (required).

search_spotifyC
Search Spotify for tracks, artists, albums, or playlists.
Args:
    query: Search term
    type: One of 'track', 'artist', 'album', 'playlist'
    limit: Max number of results

Inputs: query (required), type, limit.

seek_positionC
Seek to position in current track
Args:
    position_ms: Position in milliseconds

Inputs: position_ms (required).

set_repeat_modeB
Set repeat mode for playback
Args:
    state: One of 'track', 'context', or 'off'

Inputs: state (required).

skip_tracksC
Skip multiple tracks at once
Args:
    num_skips: Number of tracks to skip (default: 1)

Inputs: num_skips.

start_playbackB

FastMCP tool to resume playback on the currently active Spotify device.

Inputs: no named parameters.

start_playback_trackC
Start playback of a specific track on Spotify
Args:
    track_uri: Spotify URI of the track (e.g. 'spotify:track:1234...')
    device_id: Optional device to play on

Inputs: track_uri (required), device_id.

start_playlist_playbackC
Start playback of a specific playlist
Args:
    playlist_id: Spotify playlist ID
    device_id: Optional device to play on

Inputs: playlist_id (required), device_id.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 21 tools

    Disambiguation4/5

    Most tools have distinct purposes targeting specific Spotify resources and actions, with clear boundaries between playback control, queue management, and content retrieval. However, some overlap exists between 'skip_tracks' and 'next_track'/'previous_track', and 'start_playback' vs 'start_playback_track'/'start_playlist_playback' could cause confusion about which to use for resuming vs starting specific content.

    Naming Consistency4/5

    The server maintains strong consistency with snake_case naming throughout and mostly follows verb_noun patterns (e.g., 'get_current_track', 'add_to_queue', 'search_spotify'). Minor deviations include 'get_item_info' (noun_verb) and some tools using 'playback' while others use 'track'/'playlist' in similar contexts, but the overall pattern remains clear and predictable.

    Tool Count3/5

    With 21 tools, this feels borderline heavy for a music streaming interface. While Spotify's API is feature-rich, the tool set includes some redundancy (e.g., multiple skip/playback variants) that could potentially be consolidated. The count is manageable but approaches the upper limit of what feels well-scoped for this domain.

    Completeness5/5

    The tool surface provides comprehensive coverage of Spotify's core functionality including playback control (play/pause/skip/seek/repeat), queue management, content retrieval (tracks/artists/playlists/recommendations), search capabilities, and user data access. There are no obvious gaps for typical agent workflows, with CRUD-like operations well-represented across the music streaming domain.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables interaction with Spotify through natural language for music discovery, playback control, library management, and playlist creation. Supports searching for music, controlling playback, managing saved tracks, and getting personalized recommendations based on mood and preferences.
      118 npm
      5
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      MCP server for Spotify that enables playlist building and music discovery through 19 tools, allowing LLM agents to search tracks/artists/albums, manage playlists, control playback, and access personal listening data.
      20
      1
      MIT