Spotify MCP Server
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
Clone and navigate to the repository:
git clone <your-repo-url> cd mcp-spotifyCreate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activateInstall dependencies:
pip install -r requirements.txtSet up Spotify API credentials:
export SPOTIFY_CLIENT_ID="your_client_id" export SPOTIFY_CLIENT_SECRET="your_client_secret"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
Log in with your Spotify account
Click "Create App"
Fill in the app details:
App name:
Your MCP Server(or any name you prefer)App description:
MCP server for Spotify integrationWebsite:
https://spotify-mcp.onrender.com(use your deployed URL)Redirect URI:
https://spotify-mcp.onrender.com(use your deployed URL)
Select "Web API" when asked about APIs/SDKs
Click "Save"
Copy your
Client IDandClient Secret
Note: Use your deployed Render URL (not localhost) for the redirect URI since Spotify requires HTTPS for security.
๐ข Deployment
Deploy to Render
Steps:
Click the "Deploy to Render" button below (or go to render.com and sign up/login)
Connect your GitHub account to Render (if you haven't already)
Create a new Web Service:
Connect this repository
Name:
spotify-mcpEnvironment:
Python 3Plan:
FreeBuild Command:
pip install -r requirements.txtStart Command:
python src/server.py
Set environment variables:
Go to your Render service dashboard
Click on "Environment" tab
Add:
SPOTIFY_CLIENT_ID=your_client_idSPOTIFY_CLIENT_SECRET=your_client_secret
Click "Save Changes"
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
Add the MCP URL:
https://spotify-mcp.onrender.com/mcpGive it a name like "Spotify"
Try: "Can you use the Spotify MCP to search tracks for 'Bohemian Rhapsody'?"
References
Based on the Interaction MCP server template: MCP Server Template
Discovered via Interactionโs HackMIT challenge: Interaction HackMIT Challenge
๐ ๏ธ 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 IDmarket(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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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