spotify-mcp-server

nlevy/spotify-mcp-server

3.2

If you are the rightful owner of spotify-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

A Model Context Protocol (MCP) server that provides Spotify integration, allowing AI assistants and applications to interact with Spotify's music streaming service.

Tools
  1. search_artists

    Search for artists on Spotify.

  2. get_artist

    Get detailed information about an artist.

  3. get_artist_albums

    Get albums for an artist.

  4. get_artist_top_tracks

    Get top tracks for an artist.

  5. get_album

    Get detailed information about an album.

  6. get_album_tracks

    Get tracks from an album.

  7. get_new_releases

    Get new album releases.

  8. create_playlist

    Create a new Spotify playlist.

  9. add_tracks_to_playlist

    Add tracks to an existing playlist.

  10. get_user_playlists

    Get current user's playlists.

Spotify MCP Server

A Model Context Protocol (MCP) server that provides Spotify integration, allowing AI assistants and applications to interact with Spotify's music streaming service.

Features

Artist Tools

  • Search Artists - Search for artists by name
  • Get Artist - Get detailed information about a specific artist
  • Get Artist Albums - Get all albums for an artist
  • Get Artist Top Tracks - Get an artist's most popular tracks

Album Tools

  • Get Album - Get detailed information about a specific album
  • Get Album Tracks - Get all tracks from an album
  • Get New Releases - Get new album releases

Playlist Tools

  • Create Playlist - Create new playlists
  • Add Tracks to Playlist - Add tracks to existing playlists
  • Get User Playlists - Get current user's playlists

Prerequisites

  • Python 3.8+
  • Spotify Developer Account
  • MCP Client (like Claude Desktop, Cursor, etc.)

Setup

1. Install Dependencies

# Using uv (recommended)
uv sync

# Or using pip
pip install -r requirements.txt

2. Spotify API Setup

  1. Go to Spotify Developer Dashboard
  2. Create a new application
  3. Add http://localhost:8888/callback to your app's Redirect URIs
  4. Copy your Client ID and Client Secret

3. Environment Configuration

Create a .env file in the project root:

SPOTIFY_CLIENT_ID=your_client_id_here
SPOTIFY_CLIENT_SECRET=your_client_secret_here
SPOTIFY_REDIRECT_URI=http://localhost:8888/callback

4. Authentication

On first run, the server will open a browser window for Spotify authentication. Follow the OAuth flow to authorize the application.

Usage

Running the Server

# Development mode with inspector
mcp dev spotify_mcp_server.py

# Or run directly
python spotify_mcp_server.py

Available Tools

Artist Management
# Search for artists
search_artists(query="The Beatles", limit=10)

# Get artist details
get_artist(artist_id="3WrFJ7ztbogyGnTHbHJFl2")

# Get artist albums
get_artist_albums(artist_id="3WrFJ7ztbogyGnTHbHJFl2", include_groups="album,single")

# Get artist top tracks
get_artist_top_tracks(artist_id="3WrFJ7ztbogyGnTHbHJFl2", market="US")
Album Management
# Get album details
get_album(album_id="4aawyAB9vmqN3uQ7FjRGTy", market="US")

# Get album tracks
get_album_tracks(album_id="4aawyAB9vmqN3uQ7FjRGTy", limit=20)

# Get new releases
get_new_releases(country="US", limit=20)
Playlist Management
# Create a new playlist
create_playlist(name="My New Playlist", description="A great playlist", public=False)

# Add tracks to playlist
add_tracks_to_playlist(playlist_id="playlist_id", track_uris=["spotify:track:track_id"])

# Get user playlists
get_user_playlists()

Project Structure

spotify-mcp/
ā”œā”€ā”€ spotify_mcp_server.py    # Main MCP server
ā”œā”€ā”€ mcp_tools/              # Tool modules
│   ā”œā”€ā”€ __init__.py
│   ā”œā”€ā”€ artist_tools.py     # Artist-related tools
│   ā”œā”€ā”€ playlist_tools.py   # Playlist-related tools
│   └── albums.py          # Album-related tools
ā”œā”€ā”€ .env                    # Environment variables
ā”œā”€ā”€ .spotify_cache         # Spotify OAuth cache
ā”œā”€ā”€ requirements.txt        # Python dependencies
└── README.md             # This file

API Reference

Artist Tools

search_artists

Search for artists on Spotify.

Parameters:

  • query (str): Search query for artist name
  • limit (int, optional): Maximum number of results (default: 10, max: 50)

Returns:

  • List of artists with ID, name, popularity, followers, genres, and Spotify URL
get_artist

Get detailed information about an artist.

Parameters:

  • artist_id (str): Spotify artist ID

Returns:

  • Detailed artist information including images, genres, and popularity
get_artist_albums

Get albums for an artist.

Parameters:

  • artist_id (str): Spotify artist ID
  • include_groups (str, optional): Album types to include (default: "album,single")
  • limit (int, optional): Maximum albums to return (default: 20, max: 50)

Returns:

  • List of albums with details including release date, track count, and cover images
get_artist_top_tracks

Get top tracks for an artist.

Parameters:

  • artist_id (str): Spotify artist ID
  • market (str, optional): Market/country code (default: "US")

Returns:

  • List of top tracks with popularity, duration, and album information

Album Tools

get_album

Get detailed information about an album.

Parameters:

  • album_id (str): Spotify album ID
  • market (str, optional): Market/country code (default: "US")

Returns:

  • Detailed album information including artists, images, and genres
get_album_tracks

Get tracks from an album.

Parameters:

  • album_id (str): Spotify album ID
  • market (str, optional): Market/country code (default: "US")
  • limit (int, optional): Maximum tracks to return (default: 20, max: 50)
  • offset (int, optional): Starting index (default: 0)

Returns:

  • List of tracks with track number, duration, and artist information
get_new_releases

Get new album releases.

Parameters:

  • country (str, optional): Country code (default: "US")
  • limit (int, optional): Maximum albums to return (default: 20, max: 50)
  • offset (int, optional): Starting index (default: 0)

Returns:

  • List of new release albums with artist and image information

Playlist Tools

create_playlist

Create a new Spotify playlist.

Parameters:

  • name (str): Name of the playlist
  • description (str, optional): Description of the playlist
  • public (bool, optional): Whether the playlist is public (default: False)
  • collaborative (bool, optional): Whether the playlist is collaborative (default: False)

Returns:

  • Playlist information including ID, name, and Spotify URL
add_tracks_to_playlist

Add tracks to an existing playlist.

Parameters:

  • playlist_id (str): Spotify playlist ID
  • track_uris (List[str]): List of Spotify track URIs

Returns:

  • Success status and number of tracks added
get_user_playlists

Get current user's playlists.

Parameters:

  • None

Returns:

  • List of user's playlists with details including track count and privacy settings

Development

Adding New Tools

  1. Create a new function in the appropriate tool module (artist_tools.py, playlist_tools.py, or albums.py)
  2. Add the function to the __init__.py exports
  3. Create a wrapper function in spotify_mcp_server.py
  4. Copy the docstring and register the tool

Testing

# Run the server in development mode
mcp dev spotify_mcp_server.py

# The MCP Inspector will open at http://localhost:6274
# Use it to test your tools interactively

Troubleshooting

Authentication Issues

  • Ensure your .env file has the correct Spotify credentials
  • Check that your redirect URI matches exactly: http://localhost:8888/callback
  • Clear the .spotify_cache file if you encounter token issues

API Rate Limits

  • Spotify has rate limits on API calls
  • The server includes error handling for rate limit responses
  • Consider implementing caching for frequently accessed data