Skip to main content
Glama
mfteloglu

Spotify MCP Server

by mfteloglu
README.md
# Spotify MCP Server

A simple MCP server to control Spotify playback and manage your liked songs via LLM's.

## Features

- Play and pause Spotify playback
- Get info about the current track
- Add the current track to your Liked Songs

## Setup

1. **Clone the repository:**
   ```sh
   git clone https://github.com/yourusername/spotify-mcp-server.git
   cd spotify-mcp-server
   ```

2. **Create and activate a virtual environment:**
   ```sh
   python3 -m venv .venv
   source .venv/bin/activate
   ```

3. **Install dependencies:**
   ```sh
   pip install uv
   pip install -r requirements.txt
   ```

4. **Create a `.env` file:**
   ```
   SPOTIPY_CLIENT_ID=your_spotify_client_id
   SPOTIPY_CLIENT_SECRET=your_spotify_client_secret
   SPOTIPY_REDIRECT_URI=http://localhost:8888/callback
   ```

5. **Run the server:**
   ```sh
   python main.py
   ```

## Integration with Claude Desktop (MCP Server)

To use this server as an MCP server with Claude, add the following entry to your Claude config file (usually located at `~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):

```json
{
  "mcpServers": {
    "spotify-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/PROJECT/spotify-mcp-server",
        "run",
        "main.py"
      ]
    }
  }
}
```

- Replace `/ABSOLUTE/PATH/TO/PROJECT/spotify-mcp-server` with the actual path to your project
- If command `uv` is not recognized, give the absolute path for `uv` executable (can be found with `which uv` on MacOS)
- Make sure your environment variables are set either in the config or via a `.env` file.
- Restart Claude after editing the config file.

## Notes

- You need to register your app at the [Spotify Developer Dashboard](https://developer.spotify.com/dashboard/) to get your client ID and secret.

## Example Session

Below is an example session using Claude with the Spotify MCP server:

![Example Conversation](images/conversation.png)

**Sample interaction:**

```
User: Play the current track using Spotify MCP server
Claude: Playback started successfully

User: What song is playing?
Claude: Currently playing: Shape of You by Ed Sheeran

User: Like this song
Claude: Added 'Shape of You' to your Liked Songs.
```

TDQS

A3.5/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: getting track info, liking a track, starting playback, and stopping playback. There is no overlap in functionality, making it easy for an agent to select the correct tool without confusion.

Naming Consistency5/5

All tool names follow a consistent 'spotify_' prefix with descriptive verb_noun patterns (e.g., current_track, like_current_track, play, stop). This uniformity enhances readability and predictability across the toolset.

Tool Count4/5

With 4 tools, the count is reasonable for a basic Spotify control server, covering core playback and interaction functions. However, it feels slightly thin as it lacks tools for searching, playlists, or volume control, which are common in music APIs.

Completeness3/5

The toolset covers basic playback control and track interaction, but there are notable gaps for a Spotify domain, such as no search, playlist management, or device selection tools. Agents can perform simple tasks but may struggle with more complex music-related workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues