Spotify MCP Server

Spotify MCP Server

Enables control of Spotify playback, track search, and user profile retrieval via MCP tools with automatic OAuth token management.

Category
Visit Server

README

Spotify MCP Server

A Model Context Protocol (MCP) server that provides Spotify integration with OAuth authorization flow based on the Model Context Protocol specification.

Files

  • index.ts - MCP server setup and tool registration with StreamableHTTPServerTransport
  • spotify.ts - Spotify API service with token management
  • auth.ts - BetterAuth configuration with Drizzle adapter
  • db/ - Database schema and connection using Drizzle ORMotocol (MCP) server that provides Spotify integration with OAuth authorization flow based on the Model Context Protocol specification.

Features

  • OAuth Authorization Flow: Implements MCP's authorization specification with Spotify OAuth
  • Streaming HTTP Transport: Uses MCP's StreamableHTTPServerTransport for efficient communication
  • Automatic Token Refresh: Handles Spotify access token expiration and refresh automatically
  • Simple Architecture: Clean separation between authentication, Spotify API calls, and MCP tools
  • Comprehensive Spotify Tools: Multiple tools for controlling Spotify playback

Available Tools

Playback Control

  • getCurrentlyPlaying - Get information about the currently playing track
  • pausePlayback - Pause Spotify playback
  • resumePlayback - Resume Spotify playback
  • skipToNext - Skip to the next track
  • skipToPrevious - Skip to the previous track
  • setVolume - Set playback volume (currently defaults to 50%)

Track Discovery

  • searchTracks - Search for tracks on Spotify
  • playTrack - Play specific tracks (enhanced functionality coming)

User Info

  • getUserProfile - Get user's Spotify profile information

Architecture

Files

  • index.ts - MCP server setup and tool registration
  • spotify.ts - Spotify API service with token management
  • auth.ts - Better Auth configuration
  • db/ - Database schema and connection

Token Management

The SpotifyService class automatically handles:

  • Token expiry checking (with 5-minute buffer)
  • Automatic token refresh using refresh tokens
  • Database updates for new tokens
  • Error handling for failed refreshes

Key Features

  • Token Refresh: Automatically refreshes tokens before they expire
  • Database Integration: Uses Drizzle ORM with PostgreSQL for token storage
  • Error Handling: Graceful handling of API errors and token issues
  • Session Management: Secure session handling with Better Auth

Setup

  1. Set environment variables:

    SPOTIFY_CLIENT_ID=your_spotify_client_id
    SPOTIFY_CLIENT_SECRET=your_spotify_client_secret
    
  2. Configure database connection in db/index.ts

  3. Run database migrations:

    bun run drizzle-kit push
    
  4. Start the server:

    bun run index.ts
    

Usage

  1. Navigate to http://localhost:3000/sign-in to authenticate with Spotify
  2. Use the MCP tools through your MCP client
  3. The server automatically handles token refresh in the background

Technical Notes

  • Uses BetterAuth with Drizzle adapter for OAuth flow with Spotify
  • Implements the MCP Authorization specification for secure authentication
  • Utilizes StreamableHTTPServerTransport for efficient communication
  • Stores tokens securely in PostgreSQL database via Drizzle ORM
  • Clean separation of concerns between authentication, API calls, and MCP tools

Installation

To install dependencies:

bun install

To run:

bun run index.ts

This project was created using bun init in bun v1.2.13. Bun is a fast all-in-one JavaScript runtime.

License

MIT License

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured