Back to MCP Servers

Claude Spotify

An integration that allows Claude Desktop to interact with Spotify using the Model Context Protocol (MCP).

other-tools-and-integrations
By imprvhub
4217Updated 2 weeks agoTypeScriptMPL-2.0

Installation

npx -y mcp-claude-spotify

Configuration

{
  "mcpServers": {
    "mcp-claude-spotify": {
      "command": "npx",
      "args": ["-y", "mcp-claude-spotify"]
    }
  }
}

How to use

  1. Run the installation command above (if needed)
  2. Open your Claude Code settings file (~/.claude/settings.json)
  3. Add the configuration to the mcpServers section
  4. Restart Claude Code to apply changes

MCP Claude Spotify

Trust Score Verified on MseeP smithery badge

<table style="border-collapse: collapse; width: 100%;"> <tr> <td style="padding: 15px; vertical-align: middle; border: none; text-align: center;"> <a href="https://mseep.ai/app/imprvhub-mcp-claude-spotify"> <img src="https://mseep.net/pr/imprvhub-mcp-claude-spotify-badge.png" alt="MseeP.ai Security Assessment Badge" /> </a> </td> <td style="width: 50%; padding: 15px; vertical-align: middle; border: none;">An integration that allows Claude Desktop to interact with Spotify using the Model Context Protocol (MCP).</td> <td style="width: 50%; padding: 0; vertical-align: middle; border: none;"><a href="https://glama.ai/mcp/servers/@imprvhub/mcp-claude-spotify"><img src="https://glama.ai/mcp/servers/@imprvhub/mcp-claude-spotify/badge" alt="Claude Spotify MCP server" style="max-width: 100%;" /></a></td> </tr> </table>

Features

  • Spotify authentication
  • Search for tracks, albums, artists, and playlists
  • Playback control (play, pause, next, previous)
  • Full playlist management (create, update, delete, reorder tracks, manage cover images)
  • Get personalized recommendations
  • Access user's top played tracks over different time periods
  • View recently played tracks

Demo

<p> <a href="https://www.youtube.com/watch?v=WNw5H9epZfc"> <img src="public/assets/preview.png" width="600" alt="Claude Spotify Integration Demo"> </a> </p>

Requirements

  • Node.js 16 or higher
  • Spotify account
  • Claude Desktop
  • Spotify API credentials (Client ID and Client Secret)

Installation

Installing via Smithery

To install MCP Claude Spotify for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @imprvhub/mcp-claude-spotify --client claude

Installing Manually

  1. Clone or download this repository:
git clone https://github.com/imprvhub/mcp-claude-spotify
cd claude-spotify-mcp
  1. Install dependencies:
npm install
  1. Build the project (if you want to modify the source code):
npm run build

The repository already includes pre-built files in the build directory, so you can skip step 3 if you don't plan to modify the source code.

Setting up Spotify Credentials

To use this MCP, you need to obtain Spotify API credentials:

  1. Go to Spotify Developer Dashboard
  2. Log in with your Spotify account
  3. Click "Create App"
  4. Fill in your app information:
    • App name: "MCP Claude Spotify" (or whatever you prefer)
    • App description: "Spotify integration for Claude Desktop"
    • Website: You can leave this blank or put any URL
    • Redirect URI: Important - Add http://127.0.0.1:8888/callback
  5. Accept the terms and conditions and click "Create"
  6. In your app dashboard, you'll see the "Client ID"
  7. Click "Show Client Secret" to reveal your "Client Secret"

Save these credentials as you'll need them for configuration.

Running the MCP Server

There are two ways to run the MCP server:

Option 1: Running manually (recommended for first-time setup and troubleshooting)

  1. Open a terminal or command prompt
  2. Navigate to the project directory
  3. Run the server directly:
node build/index.js

Keep this terminal window open while using Claude Desktop. The server will run until you close the terminal.

Option 2: Auto-starting with Claude Desktop (recommended for regular use)

The Claude Desktop can automatically start the MCP server when needed. To set this up:

Configuration

The Claude Desktop configuration file is located at:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Edit this file to add the Spotify MCP configuration. If the file doesn't exist, create it:

{
  "mcpServers": {
    "spotify": {
      "command": "node",
      "args": ["ABSOLUTE_PATH_TO_DIRECTORY/mcp-claude-spotify/build/index.js"],
      "env": {
        "SPOTIFY_CLIENT_ID": "your_client_id_here",
        "SPOTIFY_CLIENT_SECRET": "your_client_secret_here"
      }
    }
  }
}

Important: Replace:

  • ABSOLUTE_PATH_TO_DIRECTORY with the complete absolute path where you installed the MCP
    • macOS/Linux example: /Users/username/mcp-claude-spotify
    • Windows example: C:\\Users\\username\\mcp-claude-spotify
  • your_client_id_here with the Client ID you obtained from Spotify
  • your_client_secret_here with the Client Secret you obtained from Spotify

If you already have other MCPs configured, simply add the "spotify" section inside the "mcpServers" object.

Setting up auto-start scripts (Optional)

For a more reliable experience, you can set up auto-start scripts:

<details> <summary><b>Windows auto-start instructions</b></summary>
  1. Create a file named start-spotify-mcp.bat in the project directory with the following content:
@echo off
cd %~dp0
node build/index.js
  1. Create a shortcut to this BAT file
  2. Press Win+R, type shell:startup and press Enter
  3. Move the shortcut to this folder to have it start with Windows
</details> <details> <summary><b>macOS auto-start instructions</b></summary>
  1. Create a file named com.spotify.mcp.plist in ~/Library/LaunchAgents/ with the following content:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.spotify.mcp</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/node</string>
        <string>ABSOLUTE_PATH_TO_DIRECTORY/mcp-claude-spotify/build/index.js</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/tmp/spotify-mcp.err</string>
    <key>StandardOutPath</key>
    <string>/tmp/spotify-mcp.out</string>
    <key>EnvironmentVariables</key>
    <dict>
        <key>SPOTIFY_CLIENT_ID</key>
        <string>your_client_id_here</string>
        <key>SPOTIFY_CLIENT_SECRET</key>
        <string>your_client_secret_here</string>
    </dict>
</dict>
</plist>
  1. Replace the path and credentials with your actual values
  2. Load the agent with: launchctl load ~/Library/LaunchAgents/com.spotify.mcp.plist
</details> <details> <summary><b>Linux auto-start instructions</b></summary>
  1. Create a file named spotify-mcp.service in ~/.config/systemd/user/ (create the directory if it doesn't exist):
[Unit]
Description=Spotify MCP Server for Claude Desktop
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node ABSOLUTE_PATH_TO_DIRECTORY/mcp-claude-spotify/build/index.js
Restart=on-failure
Environment="SPOTIFY_CLIENT_ID=your_client_id_here"
Environment="SPOTIFY_CLIENT_SECRET=your_client_secret_here"

[Install]
WantedBy=default.target
  1. Replace the path and credentials with your actual values
  2. Enable and start the service:
systemctl --user enable spotify-mcp.service
systemctl --user start spotify-mcp.service
  1. Check status with:
systemctl --user status spotify-mcp.service
</details>

Usage

  1. Restart Claude Desktop after modifying the configuration
  2. In Claude, use the auth-spotify command to start the authentication process
  3. A browser window will open for you to authorize the application
  4. Log in with your Spotify account and authorize the application
  5. Important: After successful authentication, restart Claude Desktop to properly initialize the MCP's tool registry and WebSocket session token cache
  6. After restarting, all Spotify MCP tools will be properly registered and available for use

The MCP server runs as a child process managed by Claude Desktop. When Claude is running, it automatically starts and manages the Node.js server process based on the configuration in claude_desktop_config.json.

Available Tools

Authentication

auth-spotify

Initiates the Spotify authentication process.

Search

search-spotify

Searches for tracks, albums, artists, or playlists.

Parameters:

  • query: Search text
  • type: Type of search (track, album, artist, playlist)
  • limit: Number of results (1-10, default: 5)

Playback Control

get-current-playback

Gets information about the current playback state.

play-track

Plays a specific track on an active device.

Parameters:

  • trackId: Spotify track ID
  • deviceId: (Optional) Spotify device ID to play on

pause-playback

Pauses the current playback.

next-track

Skips to the next track.

previous-track

Returns to the previous track.

Playlist Management

get-user-playlists

Gets a list of the user's playlists.

Parameters:

  • limit: (Optional) Number of playlists to return (1-50, default: 20)
  • offset: (Optional) Index of the first playlist to return (default: 0)

create-playlist

Creates a new playlist for the current user.

Parameters:

  • name: Playlist name
  • description: (Optional) Description
  • public: (Optional) Whether it's public or private

update-playlist

Updates a playlist's name, description, public/private status, or collaborative setting.

Parameters:

  • playlistId: Spotify ID of the playlist
  • name: (Optional) New name for the playlist
  • description: (Optional) New description for the playlist
  • public: (Optional) Whether the playlist should be public
  • collaborative: (Optional) Whether the playlist should be collaborative (must set public to false first)

delete-playlist

Unfollows (removes) a playlist from your library. The playlist still exists on Spotify but is no longer in your library.

Parameters:

  • playlistId: Spotify ID of the playlist

get-playlist-tracks

Gets the tracks in a playlist with pagination support.

Parameters:

  • playlistId: Spotify ID of the playlist
  • limit: (Optional) Number of tracks to return (1-50, default: 20)
  • offset: (Optional) Index of the first track to return (default: 0)

add-tracks-to-playlist

Adds tracks to a playlist.

Parameters:

  • playlistId: Playlist ID
  • trackIds: Array of track IDs

remove-tracks-from-playlist

Removes tracks from a playlist.

Parameters:

  • playlistId: Spotify ID of the playlist
  • trackIds: Array of Spotify track IDs to remove

reorder-playlist-tracks

Reorders tracks in a playlist by moving a range of tracks to a new position.

Parameters:

  • playlistId: Spotify ID of the playlist
  • rangeStart: Position of the first track to move
  • insertBefore: Position where the tracks should be inserted
  • rangeLength: (Optional) Number of tracks to move (default: 1)

get-playlist-cover

Gets the cover image of a playlist.

Parameters:

  • playlistId: Spotify ID of the playlist

upload-playlist-cover

Uploads a custom cover image for a playlist (base64 encoded JPEG, max 256KB).

Parameters:

  • playlistId: Spotify ID of the playlist
  • imageBase64: Base64 encoded JPEG image

Discovery & History

get-recommendations

Gets track recommendations based on seed tracks, artists, or genres.

Parameters:

  • seedTracks: (Optional) Array of Spotify track IDs
  • seedArtists: (Optional) Array of Spotify artist IDs
  • seedGenres: (Optional) Array of genre names
  • limit: (Optional) Number of recommendations (1-100, default: 20)

get-top-tracks

Gets the user's most played tracks over a specified time range.

Parameters:

  • limit: (Optional) Number of tracks to return (1-50, d

View source on GitHub