Skip to main content
Glama

Spotify MCP Server

by akarnik23

Spotify MCP Server

A FastMCP server that provides provides access to Spotify's music data through the Spotify Web API.

🎡 Features

  • Search Tracks: Find songs by name, artist, or lyrics

  • Search Artists: Discover artists and get their information

  • Artist Top Tracks: Get the most popular tracks for any artist

Note: The Recommendations API is no longer available for new Spotify apps as of November 27, 2024. See Spotify's announcement for more details.

πŸš€ Quick Start

Prerequisites

  • Python 3.8+

  • Spotify Developer Account

  • Spotify App credentials (Client ID and Client Secret)

Local Development

  1. Clone and navigate to the repository:

    git clone <your-repo-url> cd mcp-spotify
  2. Create a virtual environment:

    python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
  3. Install dependencies:

    pip install -r requirements.txt
  4. Set up Spotify API credentials:

    export SPOTIFY_CLIENT_ID="your_client_id" export SPOTIFY_CLIENT_SECRET="your_client_secret"
  5. Run the server:

    python src/server.py

The server will start on http://localhost:8000 with the MCP endpoint at http://localhost:8000/mcp.

πŸ”‘ Getting Spotify API Credentials

  1. Go to

  2. Log in with your Spotify account

  3. Click "Create App"

  4. Fill in the app details:

    • App name: Your MCP Server (or any name you prefer)

    • App description: MCP server for Spotify integration

    • Website: https://spotify-mcp.onrender.com (use your deployed URL)

    • Redirect URI: https://spotify-mcp.onrender.com (use your deployed URL)

  5. Select "Web API" when asked about APIs/SDKs

  6. Click "Save"

  7. Copy your

Note: Use your deployed Render URL (not localhost) for the redirect URI since Spotify requires HTTPS for security.

🚒 Deployment

Deploy to Render

Deploy to Render

Steps:

  1. Click the "Deploy to Render" button below (or go to render.com and sign up/login)

  2. Connect your GitHub account to Render (if you haven't already)

  3. Create a new Web Service:

    • Connect this repository

    • Name: spotify-mcp

    • Environment: Python 3

    • Plan: Free

    • Build Command: pip install -r requirements.txt

    • Start Command: python src/server.py

  4. Set environment variables:

    • Go to your Render service dashboard

    • Click on "Environment" tab

    • Add:

      • SPOTIFY_CLIENT_ID = your_client_id

      • SPOTIFY_CLIENT_SECRET = your_client_secret

    • Click "Save Changes"

  5. Deploy!

Note: On Render's free tier, services go idle after ~15 minutes of inactivity and may require a manual "Deploy" to wake or to pick up the latest commit. Unlike Vercel, pushes do not auto-deploy by default.

Your server will be available at https://spotify-mcp.onrender.com/mcp

🎯 Poke Integration

  1. Go to poke.com/settings/connections

  2. Add the MCP URL: https://spotify-mcp.onrender.com/mcp

  3. Give it a name like "Spotify"

  4. Try: "Can you use the Spotify MCP to search tracks for 'Bohemian Rhapsody'?"

References

πŸ› οΈ Available Tools

search_tracks(query, limit=10)

Search for tracks on Spotify.

Parameters:

  • query (string): Search query (song name, artist, lyrics, etc.)

  • limit (int, optional): Number of results to return (1-50, default: 10)

Example:

search_tracks("Bohemian Rhapsody", 5)

search_artists(query, limit=10)

Search for artists on Spotify.

Parameters:

  • query (string): Search query (artist name, genre, etc.)

  • limit (int, optional): Number of results to return (1-50, default: 10)

Example:

search_artists("Queen", 3)

get_artist_top_tracks(artist_id, market="US")

Get the top tracks for a specific artist.

Parameters:

  • artist_id (string): Spotify artist ID

  • market (string, optional): Market code (default: "US")

Example:

get_artist_top_tracks("1dfeR4HaWDbWqFHLkxsg1d") # Queen's artist ID

πŸ§ͺ Testing

Test the server locally:

# Test health endpoint curl http://localhost:8000/ # Test MCP endpoint curl -X POST http://localhost:8000/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}'

πŸ“ Notes

  • Rate Limiting: The Spotify API has rate limits. The server includes automatic token refresh.

  • Authentication: Uses Spotify's Client Credentials flow (no user login required).

  • Data Format: All responses are in JSON format for easy integration.

  • Error Handling: Comprehensive error handling with descriptive error messages.

-
security - not tested
F
license - not found
-
quality - not tested

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/akarnik23/mcp-spotify'

If you have feedback or need assistance with the MCP directory API, please join our Discord server