addy07s

Spotify MCP Server (Express.js)

Community addy07s
Updated

Model Context Protocol server for Spotify API

Spotify MCP Server (Express.js)

This is a Model Context Protocol (MCP) server implementation that allows AI assistants to interact with Spotify's API. The server provides endpoints for searching tracks, getting artist information, and managing playlists.

Setup

  1. Create a Spotify Developer account and create a new application at Spotify Developer Dashboard.
  2. Get your Client ID and Client Secret from your Spotify application.
  3. Create a .env file in the root directory with the following content:
SPOTIFY_CLIENT_ID=your_client_id
SPOTIFY_CLIENT_SECRET=your_client_secret
SPOTIFY_REDIRECT_URI=http://localhost:3000/callback
  1. Install dependencies:
npm install
  1. Run the server:
npm start

Available Endpoints

The server implements the following MCP endpoints:

  • POST /mcp/search - Search for tracks, artists, or albums.
  • GET /mcp/artist/{artistId} - Get detailed information about an artist.
  • GET /mcp/track/{trackId} - Get detailed information about a track.
  • GET /mcp/playlist/{playlistId} - Get playlist information.
  • GET /mcp/me/top-tracks - Get user's top tracks (requires authentication).
  • GET /mcp/me/playlists - Get user's playlists (requires authentication).
  • GET /mcp/me/tracks - Get user's saved tracks (requires authentication).
  • GET /mcp/auth/login - Generate a Spotify login URL for user authentication.
  • GET /callback - Handle Spotify OAuth callback and exchange authorization code for an access token.
  • POST /mcp/auth/refresh - Refresh a user's access token.

Example Usage

Here's an example of how an AI assistant can interact with the server:

// Search for a track
const searchResponse = await fetch('http://localhost:3000/mcp/search', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    query: 'Bohemian Rhapsody',
    type: 'track'
  })
});
const searchData = await searchResponse.json();

// Get artist information
const artistResponse = await fetch('http://localhost:3000/mcp/artist/1dfeR4HaWDbWqJHLk5g1d1');
const artistData = await artistResponse.json();

MCP Protocol Implementation

This server implements the Model Context Protocol, allowing AI assistants to:

  1. Authenticate with Spotify.
  2. Search for music content.
  3. Retrieve detailed information about artists, tracks, and playlists.
  4. Access personalized user data (with proper authentication).

Security Note

Make sure to keep your .env file secure and never commit it to version control. The server uses environment variables to manage sensitive credentials.

MCP Server · Populars

MCP Server · New

    chatmcp

    mcpso

    directory for Awesome MCP Servers

    Community chatmcp
    TBXark

    MCP Proxy Server

    An MCP proxy server that aggregates and serves multiple MCP resource servers through a single HTTP server.

    Community TBXark
    ttommyth

    interactive-mcp

    Ask users questions from your LLM! interactive-mcp: Local, cross-platform MCP server for interactive prompts, chat & notifications.

    Community ttommyth
    lpigeon

    ros-mcp-server

    The ROS MCP Server is designed to support robots in performing complex tasks and adapting effectively to various environments by providing a set of functions that transform natural language commands, entered by a user through an LLM, into ROS commands for robot control.

    Community lpigeon
    emicklei

    melrose-mcp

    interactive programming of melodies, producing MIDI

    Community emicklei