|
--- |
|
title: Spotify MCP Server |
|
emoji: 🎵 |
|
colorFrom: blue |
|
colorTo: purple |
|
sdk: gradio |
|
sdk_version: 5.33.1 |
|
app_file: server.py |
|
pinned: false |
|
--- |
|
|
|
# Spotify MCP Server |
|
|
|
A Gradio-based MCP server that provides a user-friendly interface to interact with Spotify's API. This server offers various tools for managing your Spotify experience, from authentication to playlist management and music playback control. |
|
|
|
## Demo Video |
|
[Watch the demo video](https://asset.cloudinary.com/dedgdfu0l/0f0cb2dda40de41f419c50b57e9e74c5) |
|
|
|
## Features |
|
|
|
- **Authentication**: Secure Spotify authentication using OAuth2 |
|
- **Music Search**: Search for tracks and get artist information |
|
- **Queue Management**: Add songs to your Spotify queue (requires Spotify Premium) |
|
- **Recently Played**: View your recently played tracks |
|
- **Playlist Management**: |
|
- Create new playlists |
|
- View existing playlists |
|
- Add songs to playlists |
|
- **User Insights**: |
|
- View top artists |
|
- View top tracks |
|
- Get genre information |
|
|
|
## Requirements |
|
|
|
- Python 3.x |
|
- Spotify Premium account (required for some queue management features) |
|
- Spotify Developer account for API credentials |
|
|
|
## Setup |
|
|
|
1. Clone this repository |
|
2. Install the required dependencies: |
|
```bash |
|
pip install gradio spotipy |
|
``` |
|
|
|
## Configuration |
|
|
|
### Getting Spotify API Keys |
|
|
|
1. Create an account on [developer.spotify.com](https://developer.spotify.com) |
|
2. Navigate to the dashboard |
|
3. Create a new app with the following settings: |
|
- Redirect URI: `http://127.0.0.1:5000/callback` (you can choose any port, but must use http and an explicit loopback address) |
|
- Note: You may need to restart your MCP environment (e.g., Claude Desktop) once or twice before it works |
|
|
|
### Environment Variables |
|
|
|
The server uses the following environment variables: |
|
Please create a .env file with the credentials |
|
|
|
- `CLIENT_ID`: Your Spotify API client ID |
|
- `CLIENT_SECRET`: Your Spotify API client secret |
|
- `REDIRECT_URI`: Your Spotify API redirect URI (default: http://127.0.0.1:5000/callback) |
|
|
|
### Running Locally |
|
|
|
This project is designed to run locally and is not yet set up for ephemeral environments (e.g., uvx usage). To run: |
|
|
|
1. Clone this repository |
|
2. Set up your environment variables |
|
3. Run the server |
|
|
|
## Example Queries for Claude Desktop |
|
|
|
Try these example queries in Claude Desktop to explore different features: |
|
|
|
### Music Discovery & Analytics |
|
"Show me my top 10 artists and their genres from the last 6 months" |
|
|
|
### Smart Playlist Creation |
|
"Create a playlist of my top 20 tracks from this month" |
|
|
|
### Queue Management |
|
"Search for 'I Like Me Better' and add it to my queue" |
|
|
|
### Playlist Organization |
|
"Show me all my playlists" |
|
|
|
### Music Curation |
|
"Compare my top 10 tracks from this month with my all-time favorites" |
|
|
|
### Quick Actions |
|
"Show me my 5 most recently played songs" |
|
|
|
## API Endpoints |
|
|
|
The server exposes several endpoints through Gradio interfaces: |
|
|
|
- `add_to_queue_song`: Add a song to the queue (Premium required) |
|
- `get_artist_and_track`: Search for tracks |
|
- `auth_with_spotify`: Authenticate with Spotify |
|
- `get_recently_played_songs`: Get recently played tracks |
|
- `create_playlist`: Create a new playlist |
|
- `get_playlist_name_and_id`: Get playlist information |
|
- `add_songs_to_playlist`: Add songs to a playlist |
|
- `get_users_top_artists`: Get user's top artists |
|
- `get_user_top_tracks`: Get user's top tracks |
|
|
|
## Premium Features |
|
|
|
The following features require a Spotify Premium account: |
|
- Adding songs to queue |
|
|
|
## Claude Desktop Configuration |
|
|
|
To use this MCP server with Claude Desktop, add the following configuration to your settings (port number can vary, please check): |
|
|
|
```json |
|
{ |
|
"mcpServers": { |
|
"gradio": { |
|
"command": "npx", |
|
"args": ["mcp-remote", "http://127.0.0.1:7860/gradio_api/mcp/sse"] |
|
} |
|
} |
|
} |
|
``` |
|
|
|
This configuration allows Claude Desktop to connect to the Gradio MCP server running on port 7860. |
|
|
|
## Tags |
|
|
|
mcp-server-track |