This is a TypeScript-based MCP server for Spotify based on the Model Context Protocol.
create_playlist
- Create a new Spotify playlist.- Takes name, description, tracks, and public status as parameters.
- Returns the URI of the created playlist.
search_songs
- Search for songs on Spotify.- Takes a search query and an optional limit for results.
Install dependencies:
npm install
Build the server:
npm run build
For development with auto-rebuild:
npm run watch
To use with Claude Desktop, add the server config:
On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"SpotifyMCP": {
"command": "node",
"args": [
"/Users/your_username/Documents/SideProjects/MCPs/spotify-mcp/build/index.js"
],
"env": {
"SPOTIFY_CLIENT_ID": "your_client_id_here",
"SPOTIFY_CLIENT_SECRET": "your_client_secret_here",
"SPOTIFY_REFRESH_TOKEN": "your_refresh_token_here"
}
},
}
}
Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, which is available as a package script:
npm run inspector
The Inspector will provide a URL to access debugging tools in your browser.
-
Create a Spotify Developer Account
Visit Spotify Developer and create an account. -
Create a New Application
After logging in, create a new application to obtain your Client ID and Client Secret. -
Set Up Redirect URI
In your Spotify application settings, configure the redirect URI to:http://localhost:8888/callback
-
Create a
.env
File
In the root of your project, create a.env
file and add the following environment variables:SPOTIFY_CLIENT_ID=your_client_id_here SPOTIFY_CLIENT_SECRET=your_client_secret_here SPOTIFY_REDIRECT_URI=http://localhost:8888/callback
-
Get Your Spotify Token
Run the following command to obtain your Spotify token:npx ts-node src/scripts/get-spotify-token.ts
-
Login to Your Application
Visit http://localhost:8888/login in your browser Copy the refresh token and set it in your environment variables: SPOTIFY_REFRESH_TOKEN=your_refresh_token_here