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