Provides comprehensive integration with Spotify's Web API, enabling music search, playback control, playlist management, library management, and access to user profiles and listening history through 29 tools across 7 categories.
Spotify MCP Server
A comprehensive Model Context Protocol (MCP) server that provides seamless integration between AI assistants (like Claude Desktop) and the Spotify Web API. This server enables AI assistants to interact with Spotify's music streaming service through a well-structured, type-safe interface.
🎵 Overview
This MCP server acts as a bridge between AI assistants and Spotify's Web API, allowing users to:
- Search for music, artists, albums, and playlists
- Control playback (play, pause, skip, volume control)
- Manage playlists (create, modify, add/remove tracks)
- Access user profiles and music libraries
- Manage user's music library (save/remove tracks)
- Get user's listening history and top content
- Retrieve plain text song lyrics
✨ Key Features
🛠️ 29 Comprehensive Tools across 7 categories:
- Albums (4 tools): Album information and new releases
- Artists (6 tools): Artist data, top tracks, and discovery
- Tracks (8 tools): Track details, lyrics, and library management
- Playlists (10 tools): Complete playlist management and discovery
- Playback (10 tools): Full player control and device management
- User (1 tool): User profile information
- Search (2 tools): General search and search-to-play functionality
🏗️ Clean Architecture:
- Modular Design: Feature-based tool organization
- Type Safety: Full TypeScript implementation with Zod validation
- Reusable Components: Common schema builders eliminate code duplication
- Automatic Registration: Tools are automatically discovered and registered
- Error Handling: Comprehensive error management with descriptive messages
🔧 Developer Experience:
- Easy Extension: Simple pattern for adding new tools
- Maintainable Code: Clear separation of concerns
- Documentation: Self-documenting schema definitions
- Debugging: Detailed logging and error reporting
🚀 Quick Start
1. Clone and Install
2. Get Spotify Access Token
3. Build and Start
🔧 Claude Desktop Integration
To use this MCP server with Claude Desktop, add it to your MCP configuration:
macOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
📖 Usage Examples
Once integrated with Claude Desktop, you can use natural language commands:
🏗️ Project Architecture
Architecture Benefits
- Modularity: Each tool category is self-contained
- Type Safety: Full TypeScript and Zod validation throughout
- Reusability: Common schemas prevent code duplication
- Scalability: Easy to add new tools and categories
- Maintainability: Clear separation of concerns
- Performance: Efficient registration and validation
🛠️ Available Tools
Albums (4 tools)
get_album
: Retrieve detailed album informationget_album_tracks
: Get tracks from a specific albumget_new_releases
: Discover new album releasessearch_albums
: Search for albums by keywords
Artists (6 tools)
get_artist
: Get detailed artist informationget_artist_albums
: Retrieve artist's albumsget_artist_top_tracks
: Get artist's most popular trackssearch_artists
: Search for artists by keywordsget_followed_artists
: Get user's followed artistsget_top_artists
: Get user's top artists
Tracks (8 tools)
get_track
: Get detailed track informationsearch_tracks
: Search for tracks by keywordsget_liked_tracks
: Get user's saved/liked trackssave_tracks
: Add tracks to user's libraryremove_tracks
: Remove tracks from user's libraryget_top_tracks
: Get user's top tracksget_recently_played
: Get recently played tracksget_track_lyrics
: Get plain text lyrics for tracks
Playlists (10 tools)
get_playlist
: Retrieve playlist detailsget_user_playlists
: Get user's playlistsget_playlist_tracks
: Get tracks from a playlistcreate_playlist
: Create a new playlistadd_to_playlist
: Add tracks to a playlistremove_from_playlist
: Remove tracks from a playlistsearch_playlists
: Search for playlists by keywordsget_categories
: Get browse categoriessave_playlist
: Follow/save a user-created playlistunsave_playlist
: Unfollow/unsave a playlist
Playback (10 tools)
get_currently_playing
: Get current playback informationstart_playback
: Start music playbackresume_player
: Resume paused playbackpause_player
: Pause current playbackskip_to_next
: Skip to next trackskip_to_previous
: Skip to previous trackset_volume
: Adjust playback volumeadd_to_queue
: Add song to playback queueget_devices
: Get available playback devicestransfer_playback
: Switch playback between devices
User (1 tool)
get_user_profile
: Get current user's profile information
Search (2 tools)
search_music
: Search for tracks, artists, albums, or playlistssearch_and_play_music
: Search for content and immediately start playback
Happy Music Streaming with AI! 🎵🤖
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
A Model Context Protocol server that enables AI assistants like Claude Desktop to interact with Spotify's music streaming service, supporting playback control, playlist management, music search, and user profile access.
Related MCP Servers
- AsecurityFlicenseAqualityA lightweight Model Context Protocol server that enables AI assistants like Cursor & Claude to control Spotify playback and manage playlists.Last updated -12105TypeScript
- -securityFlicense-qualityA Model Context Protocol server that enables controlling Spotify playback through natural language commands in MCP clients like Cursor or Claude for Desktop.Last updated -2TypeScript
- -securityFlicense-qualityA Model Context Protocol server that enables AI assistants like Claude to interact with Spotify, allowing them to search for tracks, control playback, and manage playlists.Last updated -1TypeScript
- -securityFlicense-qualityIntegrates with Spotify Web API through the Model Context Protocol, allowing users to search tracks, control playback, and manage playlists programmatically.Last updated -JavaScript