
A lightweight Model Context Protocol (MCP) server that enables AI assistants like Cursor & Claude to control Spotify playback and manage playlists.
query (string): The search termtype (string): Type of item to search for (track, album, artist, playlist)limit (number, optional): Maximum number of results to return (10-50)Example: searchSpotify("bohemian rhapsody", "track", 20)
getNowPlaying
Example: getNowPlaying()
getMyPlaylists
limit (number, optional): Maximum number of playlists to return (default: 20)offset (number, optional): Index of the first playlist to return (default: 0)Example: getMyPlaylists(10, 0)
getPlaylistTracks
playlistId (string): The Spotify ID of the playlistlimit (number, optional): Maximum number of tracks to return (default: 100)offset (number, optional): Index of the first track to return (default: 0)getPlaylistTracks("37i9dQZEVXcJZyENOWUFo7")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 playdeviceId (string, optional): ID of the device to play onplayMusic({ uri: "spotify:track:6rqhFgbbKwnb9MLmUQDhG6" })Alternative: playMusic({ type: "track", id: "6rqhFgbbKwnb9MLmUQDhG6" })
pausePlayback
deviceId (string, optional): ID of the device to pauseExample: pausePlayback()
skipToNext
deviceId (string, optional): ID of the deviceExample: skipToNext()
skipToPrevious
deviceId (string, optional): ID of the deviceExample: skipToPrevious()
createPlaylist
name (string): Name for the new playlistdescription (string, optional): Description for the playlistpublic (boolean, optional): Whether the playlist should be public (default: false)Example: createPlaylist({ name: "Workout Mix", description: "Songs to get pumped up", public: false })
addTracksToPlaylist
playlistId (string): ID of the playlisttrackUris (array): Array of track URIs or IDs to addposition (number, optional): Position to insert tracksaddTracksToPlaylist({ playlistId: "3cEYpjA9oz9GiPac4AsH4n", trackUris: ["spotify:track:4iV5W9uYEdYUVa79Axb7Rh"] })git clone https://github.com/marcelmarais/spotify-mcp-server.git
cd spotify-mcp-server
npm install
npm run build
http://localhost:8888/callback)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"
}
The Spotify API uses OAuth 2.0 for authentication. Follow these steps to authenticate your application:
npm run auth
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
}
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
No description, website, or topics provided.
No releases published
No packages published
Languages