Vuples Spotify MCP Server
A Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with Spotify, allowing them to search for and play tracks.
Features
- Search for tracks by artist, title, or any query
- Play tracks directly on your active Spotify device
- Get information about your currently playing track
- Find available Spotify playback devices
- Combined search-and-play functionality
- List user's Spotify playlists
- View tracks within playlists
- Play playlists (with optional shuffle mode)
- Find and play playlists by name
Requirements
- Node.js (v16+)
- Spotify Developer Account
- Spotify Premium account (for playback functionality)
- An MCP-compatible client (e.g., Claude Desktop)
Installation
Clone this repository:
git clone https://github.com/yourusername/spotify-mcp.git cd spotify-mcp
Install dependencies:
npm install
Create a
.env
file with your Spotify API credentials:SPOTIFY_CLIENT_ID=your_client_id SPOTIFY_CLIENT_SECRET=your_client_secret SPOTIFY_REDIRECT_URI=http://localhost:8888 # Optional: For playback control SPOTIFY_REFRESH_TOKEN=your_refresh_token
You can get your Client ID and Secret from the Spotify Developer Dashboard.
Generate a refresh token (required for playback control):
There are two ways to get a refresh token:
Option 1: Use the built-in script
npm run get-token
This will start a local server and provide instructions in the terminal.
Option 2: Use the simple script (if option 1 doesn't work)
node src/simple-auth.js
This will give you a URL to open in your browser. After authorizing, you'll be redirected to a URL. Copy that URL back to the terminal, and it will show you a curl command to get the refresh token.
Required scopes (already included in the scripts):
user-read-playback-state
user-modify-playback-state
user-read-currently-playing
playlist-read-private
playlist-read-collaborative
Add the refresh token to your
.env
file:SPOTIFY_REFRESH_TOKEN=your_refresh_token
Build the project:
npm run build
Usage with Claude Desktop
First, ensure Spotify is open and playing on your device
Add this server to your Claude Desktop configuration:
Edit your
claude_desktop_config.json
file (typically in~/Library/Application Support/Claude/
on macOS or%APPDATA%\\Claude\\
on Windows):{ "mcpServers": { "spotify": { "command": "node", "args": ["/absolute/path/to/vulpes-spotify-mcp/dist/index.js"], "env": { "SPOTIFY_CLIENT_ID": "your_client_id", "SPOTIFY_CLIENT_SECRET": "your_client_secret", "SPOTIFY_REDIRECT_URI": "http://localhost:8888", "SPOTIFY_REFRESH_TOKEN": "your_refresh_token" } } } }
Make sure to replace
/absolute/path/to/vulpes-spotify-mcp
with the actual path to your project.Restart Claude Desktop
You should now see the Spotify tools available when you click on the hammer icon in Claude Desktop
Available Tools
- spotify-search: Search for tracks by query
- spotify-play: Play a specific track by ID or URI
- spotify-currently-playing: Get information about the currently playing track
- spotify-devices: List available Spotify playback devices
- spotify-search-and-play: Search for a track and automatically play the top result
- spotify-playlists: Get a list of the user's Spotify playlists
- spotify-playlist-tracks: Get tracks from a specific playlist
- spotify-play-playlist: Play a specific playlist (with optional shuffle)
- spotify-find-playlist: Find a playlist by name and play it (recommended for AI use)
Troubleshooting
- "No active device found": Make sure Spotify is open and playing on at least one of your devices
- "Missing permissions": Your refresh token may not have the required scopes
- "Not premium": Playback control requires a Spotify Premium account
- "Issues with refresh token": If your token expires, generate a new one using the steps in the installation section
Important Notes
- Always ensure Spotify is open on at least one device before using playback controls
- The refresh token in your
.env
file and Claude Desktop config must match - After making changes to your configuration, restart Claude Desktop
License
MIT