Skip to main content
Glama
Spotify Model Context Protocol

Spotify Model Context Protocol

by belljustin

Spotify Model Context Protocol (MCP)

A Spotify MCP for creating playlists based on a description.

Prerequisites

  • Python 3.6 or higher

  • Spotify Developer credentials (Client ID and Client Secret)

Related MCP server: Spotify MCP Node Server

Setup

  1. Clone this repository:

    git clone https://github.com/yourusername/spotify-mcp.git
    cd spotify-mcp
  2. Install the required dependencies:

    pip install -r requirements.txt
  3. Set up your Spotify Developer credentials:

    • Go to Spotify Developer Dashboard

    • Create a new application

    • Set up your environment variables:

      echo SPOTIFY_CLIENT_ID='your_client_id' >> .env
      echo SPOTIFY_CLIENT_SECRET='your_client_secret' >> .env

Usage

Starting the Authentication Server

  1. Set up your redirect URI in the Spotify Developer Dashboard:

    • Go to your app in the Spotify Developer Dashboard

    • Click "Edit Settings"

    • Add http://localhost:5000/callback to the Redirect URIs

    • Save the changes

  2. Start the authentication server:

    python main.py

    This will start a local server on port 5000 that handles Spotify OAuth authentication.

  3. Visit http://localhost:5000 in your browser to authenticate with Spotify. After successful authentication, your access token will be saved for use with the MCP.

Integrating with Cursor

  1. Open Cursor and go to Settings

  2. Navigate to the "Model Context Protocols" section

  3. Click "Add MCP"

  4. Enter the following details in your mcp.json, replacing PATH-TO-BASE-DIR:

{
  "mcpServers": {
    "spotify": {
        "command": "uv",
        "args": [
          "--directory",
          "PATH-TO-BASE-DIR/spotify-mcp",
          "run",
          "spotify.py"
        ]
    }
  }
}

Now you can use the Spotify MCP commands in Cursor to create and manage playlists directly from your editor!

Available Tools

3 tools
create_playlistB
Create a new playlist on Spotify and add tracks to it.

Args:
    name: Name of the playlist
    track_uris: List of Spotify track URIs to add to the playlist
    description: Optional description for the playlist
    public: Whether the playlist should be public (default: False)

Inputs: name (required), track_uris (required), description, public.

get_track_urisA
Look up Spotify track URIs for a list of songs.

Args:
    songs: List of dictionaries containing song information.
          Each dictionary should have 'name' and 'artist' keys.
          Example: [{"name": "Yesterday", "artist": "The Beatles"}]

Returns:
    List of Spotify track URIs for the found songs.
    Songs that couldn't be found will be skipped.

Inputs: songs (required).

update_playlistB
Update an existing Spotify playlist's details and/or tracks.

Args:
    playlist_id: The Spotify ID of the playlist to update
    name: New name for the playlist (optional)
    track_uris: New list of track URIs to replace the playlist's tracks (optional)
    description: New description for the playlist (optional)
    public: New public/private status for the playlist (optional)

Inputs: playlist_id (required), name, track_uris, description, +1 more.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 3 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose with no overlap: create_playlist makes new playlists, get_track_uris looks up song metadata, and update_playlist modifies existing playlists. The descriptions clearly differentiate their functions, eliminating any ambiguity.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern (create_playlist, get_track_uris, update_playlist) with clear, descriptive names. There are no deviations in style or convention across the set.

    Tool Count3/5

    With only 3 tools, the set feels thin for a Spotify integration, lacking operations like searching for playlists, deleting playlists, or managing user profiles. While the tools cover basic playlist creation and updating, the scope is limited compared to typical music service APIs.

    Completeness2/5

    There are significant gaps in the tool surface for a Spotify domain. Missing are tools for reading or listing existing playlists, deleting playlists, searching for tracks or artists beyond URI lookup, and user-related operations. This incompleteness will likely cause agent failures when trying to perform common Spotify tasks.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Enables interaction with Spotify through LLMs using OAuth2 authentication. Supports music search, playback control, playlist management, and device management through natural language commands.
      14
      2
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Enables interaction with Spotify through OAuth 2.0 authentication, supporting search for tracks/artists/albums/playlists, user profile access, and playlist management including creation and adding tracks.
      6
      MIT