Navigation
Spotify MCP Server: Instant Access & Total Control - MCP Implementation

Spotify MCP Server: Instant Access & Total Control

Unleash the full potential of Spotify with the MCP Server—your seamless mirror for instant access, total control, and unmatched streaming power. Elevate your sound, own your experience.

Research And Data
4.5(148 reviews)
222 saves
103 comments

Users create an average of 31 projects per month with this tool

About Spotify MCP Server

What is Spotify MCP Server: Instant Access & Total Control?

Spotify MCP Server acts as a middleware interface, enabling developers and power users to programmatically control Spotify's functionalities through a customizable server. By exposing API endpoints, it grants direct access to core features like playlist management, authentication workflows, and automation tasks. This server architecture allows seamless integration with external tools and workflows, transforming Spotify into a programmable platform for advanced use cases.

How to use Spotify MCP Server: Instant Access & Total Control?

  1. Initialize the server environment via Node.js and configure Spotify API credentials.
  2. Execute OAuth2 authentication flow to obtain secure access tokens.
  3. Deploy server processes through CLI commands compatible with AI frameworks like Claude Desktop or Cursor.
  4. Construct API requests to perform actions such as playlist modification, track addition/removal, and real-time playback control.

Spotify MCP Server Features

Key Features of Spotify MCP Server: Instant Access & Total Control?

  • Automated Workflows: Execute bulk operations without manual intervention through RESTful endpoints.
  • Granular Control: Modify playback parameters, manage library content, and analyze user data programmatically.
  • Token Management: Built-in OAuth2 handling with automatic token refreshing and session persistence.
  • Platform Integration: Native support for AI-driven systems like Cursor and Claude Desktop via MCP protocols.

Use cases of Spotify MCP Server: Instant Access & Total Control?

Automated Playlist Curators

Develop AI-driven services that dynamically generate personalized playlists based on mood analysis or listening habits.

Enterprise Workflows

Integrate Spotify into corporate systems for background music management in retail environments or conference setups.

Research Applications

Extract anonymized user behavior data for academic studies on music consumption patterns and recommendation algorithms.

Spotify MCP Server FAQ

FAQ from Spotify MCP Server: Instant Access & Total Control?

Do I need a Spotify Premium account?

All API features requiring playback control or library modifications mandate a Premium subscription.

What happens if tokens expire?

The server implements automatic token refresh mechanisms using the OAuth2 refresh token endpoint.

Can this be used commercially?

Depends on Spotify's API terms of service - enterprise solutions require proper licensing agreements.

Content

Spotify MCP Server

A lightweight Model Context Protocol (MCP) server that enables AI assistants like Cursor & Claude to control Spotify playback and manage playlists.

Contents
  • Example Interactions
  • Tools
    • Read Operations
    • Play / Create Operations
  • Setup
    • Prerequisites
    • Installation
    • Creating a Spotify Developer Application
    • Spotify API Configuration
    • Authentication Process
  • Integrating with Claude Desktop and Cursor

Example Interactions

  • "Play Elvis's first song"
  • "Create a Taylor Swift / Slipknot fusion playlist"
  • "Copy all the techno tracks from my workout playlist to my work playlist"

Tools

Read Operations

  1. searchSpotify
* **Description** : Search for tracks, albums, artists, or playlists on Spotify
* **Parameters** : 
  * `query` (string): The search term
  * `type` (string): Type of item to search for (track, album, artist, playlist)
  * `limit` (number, optional): Maximum number of results to return (10-50)
* **Returns** : List of matching items with their IDs, names, and additional details
* **Example** : `searchSpotify("bohemian rhapsody", "track", 20)`
  1. getNowPlaying
* **Description** : Get information about the currently playing track on Spotify
* **Parameters** : None
* **Returns** : Object containing track name, artist, album, playback progress, duration, and playback state
* **Example** : `getNowPlaying()`
  1. getMyPlaylists
* **Description** : Get a list of the current user's playlists on Spotify
* **Parameters** : 
  * `limit` (number, optional): Maximum number of playlists to return (default: 20)
  * `offset` (number, optional): Index of the first playlist to return (default: 0)
* **Returns** : Array of playlists with their IDs, names, track counts, and public status
* **Example** : `getMyPlaylists(10, 0)`
  1. getPlaylistTracks
* **Description** : Get a list of tracks in a specific Spotify playlist
* **Parameters** : 
  * `playlistId` (string): The Spotify ID of the playlist
  * `limit` (number, optional): Maximum number of tracks to return (default: 100)
  * `offset` (number, optional): Index of the first track to return (default: 0)
* **Returns** : Array of tracks with their IDs, names, artists, album, duration, and added date
* **Example** : `getPlaylistTracks("37i9dQZEVXcJZyENOWUFo7")`

Play / Create Operations

  1. playMusic
* **Description** : Start playing a track, album, artist, or playlist on Spotify
* **Parameters** : 
  * `uri` (string, optional): Spotify URI of the item to play (overrides type and id)
  * `type` (string, optional): Type of item to play (track, album, artist, playlist)
  * `id` (string, optional): Spotify ID of the item to play
  * `deviceId` (string, optional): ID of the device to play on
* **Returns** : Success status
* **Example** : `playMusic({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" })`
* **Alternative** : `playMusic({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })`
  1. pausePlayback
* **Description** : Pause the currently playing track on Spotify
* **Parameters** : 
  * `deviceId` (string, optional): ID of the device to pause
* **Returns** : Success status
* **Example** : `pausePlayback()`
  1. skipToNext
* **Description** : Skip to the next track in the current playback queue
* **Parameters** : 
  * `deviceId` (string, optional): ID of the device
* **Returns** : Success status
* **Example** : `skipToNext()`
  1. skipToPrevious
* **Description** : Skip to the previous track in the current playback queue
* **Parameters** : 
  * `deviceId` (string, optional): ID of the device
* **Returns** : Success status
* **Example** : `skipToPrevious()`
  1. createPlaylist
* **Description** : Create a new playlist on Spotify
* **Parameters** : 
  * `name` (string): Name for the new playlist
  * `description` (string, optional): Description for the playlist
  * `public` (boolean, optional): Whether the playlist should be public (default: false)
* **Returns** : Object with the new playlist's ID and URL
* **Example** : `createPlaylist({ name: "Workout Mix", description: "Songs to get pumped up", public: false })`
  1. addTracksToPlaylist
* **Description** : Add tracks to an existing Spotify playlist
* **Parameters** : 
  * `playlistId` (string): ID of the playlist
  * `trackUris` (array): Array of track URIs or IDs to add
  * `position` (number, optional): Position to insert tracks
* **Returns** : Success status and snapshot ID
* **Example** : `addTracksToPlaylist({ playlistId: "3cEYpjA9oz9GiPac4AsH4n", trackUris: ["spotify:track:4iV5W9uYEdYUVa79Axb7Rh"] })`

Setup

Prerequisites

  • Node.js v16+
  • A Spotify Premium account
  • A registered Spotify Developer application

Installation

git clone https://github.com/marcelmarais/spotify-mcp-server.git
cd spotify-mcp-server
npm install
npm run build

Creating a Spotify Developer Application

  1. Go to the Spotify Developer Dashboard
  2. Log in with your Spotify account
  3. Click the "Create an App" button
  4. Fill in the app name and description
  5. Accept the Terms of Service and click "Create"
  6. In your new app's dashboard, you'll see your Client ID
  7. Click "Show Client Secret" to reveal your Client Secret
  8. Click "Edit Settings" and add a Redirect URI (e.g., http://localhost:8888/callback)
  9. Save your changes

Spotify API Configuration

Create a spotify-config.json file in the project root (you can copy and modify the provided example):

# Copy the example config file
cp spotify-config.example.json spotify-config.json

Then edit the file with your credentials:

{
  "clientId": "your-client-id",
  "clientSecret": "your-client-secret",
  "redirectUri": "http://localhost:8888/callback"
}

Authentication Process

The Spotify API uses OAuth 2.0 for authentication. Follow these steps to authenticate your application:

  1. Run the authentication script:
npm run auth
  1. The script will generate an authorization URL. Open this URL in your web browser.

  2. You'll be prompted to log in to Spotify and authorize your application.

  3. After authorization, Spotify will redirect you to your specified redirect URI with a code parameter in the URL.

  4. The authentication script will automatically exchange this code for access and refresh tokens.

  5. These tokens will be saved to your spotify-config.json file, which will now look something like:

{
  "clientId": "your-client-id",
  "clientSecret": "your-client-secret",
  "redirectUri": "http://localhost:8888/callback",
  "accessToken": "BQAi9Pn...kKQ",
  "refreshToken": "AQDQcj...7w",
  "expiresAt": 1677889354671
}
  1. The server will automatically refresh the access token when needed, using the refresh token.

Integrating with Claude Desktop and Cursor

To use your MCP server with Claude Desktop, add it to your Claude configuration:

{
  "mcpServers": {
    "spotify": {
      "command": "node",
      "args": ["spotify-mcp-server/build/index.js"]
    }
  }
}

For Cursor, go to the MCP tab in Cursor Settings (command + shift + J). Add a server with this command:

node path/to/spotify-mcp-server/build/index.js

Related MCP Servers & Clients