Spotify MCP Server
Provides comprehensive control of Spotify playback, search, and library management, including playing tracks/albums/playlists, controlling playback (play/pause/skip/volume/shuffle/repeat), searching content, managing playlists, saving tracks to library, viewing playback history, and accessing user profile information. Requires Spotify Premium for playback control features.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Spotify MCP Serverplay my Discover Weekly playlist"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Spotify MCP Server
Servidor MCP (Model Context Protocol) para controlar Spotify desde asistentes de IA como Claude, Cursor, Kiro, VS Code, Windsurf, etc.
Requisitos
Node.js 18+
Cuenta de Spotify Premium (requerido para control de reproduccion)
Credenciales de la API de Spotify
Related MCP server: Spotify MCP Node Server
Configuracion Inicial
1. Clonar el proyecto
git clone https://github.com/Yonsn76/spotify-mcp.git
cd spotify-mcp
npm install
npm run build2. Obtener credenciales de Spotify
Crea una nueva aplicacion
Copia el Client ID y Client Secret
En "Edit Settings", agrega como Redirect URI:
http://127.0.0.1:8000/callback
3. Configurar credenciales
Hay dos formas de configurar las credenciales:
Opcion A: Variables de entorno en mcp.json (recomendado para configuracion inicial)
Agrega las credenciales en el archivo de configuracion MCP de tu IDE.
Opcion B: Configuracion por el LLM
Puedes pedirle al asistente que configure las credenciales usando:
spotifyAuth(accion="configurar", clientId="tu_client_id", clientSecret="tu_client_secret")Las credenciales se guardan en ~/.spotify-mcp-tokens.json junto con los tokens de sesion.
Instalacion por IDE
Opcion 1: Importar Power (recomendado)
Abre Kiro
Ve al panel de Powers
Clic en "Import Local Power"
Selecciona la carpeta
power-kiro/de este proyecto
Opcion 2: Configuracion manual
Edita .kiro/settings/mcp.json:
{
"mcpServers": {
"spotify": {
"command": "npx",
"args": ["tsx", "RUTA/AL/PROYECTO/src/index.ts"],
"env": {
"SPOTIFY_CLIENT_ID": "tu_client_id",
"SPOTIFY_CLIENT_SECRET": "tu_client_secret",
"SPOTIFY_REDIRECT_URI": "http://127.0.0.1:8000/callback"
}
}
}
}Edita tu archivo de configuracion MCP:
{
"mcpServers": {
"spotify": {
"command": "npx",
"args": ["tsx", "RUTA/AL/PROYECTO/src/index.ts"],
"env": {
"SPOTIFY_CLIENT_ID": "tu_client_id",
"SPOTIFY_CLIENT_SECRET": "tu_client_secret",
"SPOTIFY_REDIRECT_URI": "http://127.0.0.1:8000/callback"
}
}
}
}Abre Settings (Ctrl+Shift+J o Cmd+Shift+J)
Ve a la seccion MCP
Agrega el servidor:
{
"mcpServers": {
"spotify": {
"command": "npx",
"args": ["tsx", "RUTA/AL/PROYECTO/src/index.ts"],
"env": {
"SPOTIFY_CLIENT_ID": "tu_client_id",
"SPOTIFY_CLIENT_SECRET": "tu_client_secret",
"SPOTIFY_REDIRECT_URI": "http://127.0.0.1:8000/callback"
}
}
}
}Edita el archivo de configuracion:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"spotify": {
"command": "npx",
"args": ["tsx", "RUTA/AL/PROYECTO/src/index.ts"],
"env": {
"SPOTIFY_CLIENT_ID": "tu_client_id",
"SPOTIFY_CLIENT_SECRET": "tu_client_secret",
"SPOTIFY_REDIRECT_URI": "http://127.0.0.1:8000/callback"
}
}
}
}Reinicia Claude Desktop despues de guardar.
Agrega a tu configuracion MCP:
{
"mcpServers": {
"spotify": {
"command": "npx",
"args": ["tsx", "RUTA/AL/PROYECTO/src/index.ts"],
"env": {
"SPOTIFY_CLIENT_ID": "tu_client_id",
"SPOTIFY_CLIENT_SECRET": "tu_client_secret",
"SPOTIFY_REDIRECT_URI": "http://127.0.0.1:8000/callback"
}
}
}
}Autenticacion
Una vez configurado el servidor MCP:
Usa
spotifyAuth(accion="verificar")para ver el estado actualSi no hay credenciales, configuralas con
spotifyAuth(accion="configurar", clientId="...", clientSecret="...")Usa
spotifyAuth(accion="ejecutar")para completar el flujo OAuth (abre navegador automaticamente)
Herramientas Disponibles
El servidor expone 4 herramientas consolidadas:
spotifyAuth - Autenticacion
Accion | Descripcion |
| Comprueba estado de autenticacion (usar primero) |
| Guarda clientId y clientSecret |
| Completa flujo OAuth automatico |
| Abre navegador para auth manual |
| Obtiene URL de autorizacion |
| Cierra sesion |
spotifyPlayer - Control de Reproduccion
Accion | Parametros | Descripcion |
| tipo, id o uri | Reproduce contenido |
| - | Pausa reproduccion |
| - | Reanuda reproduccion |
| - | Siguiente cancion |
| - | Cancion anterior |
| valor (0-100) | Ajusta volumen |
| valor (bool) | Activa/desactiva aleatorio |
| valor (track/context/off) | Modo repeticion |
| valor (ms) | Salta a posicion |
| tipo, id o uri | Agrega a la cola |
| dispositivo | Cambia dispositivo |
| valor (bool=shuffle) | Reproduce Me gusta |
| valor (bool=web) | Abre Spotify |
spotifyInfo - Busqueda e Informacion
Accion | Parametros | Descripcion |
| consulta, tipo | Busca contenido |
| - | Cancion actual |
| - | Lista dispositivos |
| - | Perfil del usuario |
| - | Cola de reproduccion |
| limite | Canciones recientes |
| limite, offset | Canciones guardadas |
| limite | Playlists del usuario |
| id, limite | Canciones de playlist |
| id, limite | Canciones de album |
| id, mercado | Top de artista |
| periodo, limite | Tus canciones top |
| periodo, limite | Tus artistas top |
| - | Estado de reproduccion |
spotifyLibrary - Gestion de Biblioteca
Accion | Parametros | Descripcion |
| ids | Guarda canciones en Me gusta |
| ids | Quita de Me gusta |
| ids | Verifica si estan guardadas |
| nombre, descripcion, publica | Crea playlist |
| playlistId, ids, posicion | Agrega a playlist |
| playlistId, ids | Quita de playlist |
| playlistId | Elimina playlist |
| playlistId, nombre | Renombra playlist |
Notas Importantes
Sesion de Reproduccion Activa
Spotify requiere que haya una sesion de reproduccion activa para que las herramientas de control funcionen. Si acabas de abrir Spotify sin reproducir nada:
El servidor MCP puede no responder correctamente
Solucion: Reproduce cualquier cancion manualmente en Spotify
Una vez que haya musica sonando (aunque este pausada), las herramientas funcionaran
Flujo Recomendado para Reproducir
Verificar dispositivos:
spotifyInfo(accion="devices")Si no hay dispositivos:
spotifyPlayer(accion="openApp")Esperar a que Spotify cargue y reproducir algo manualmente
Buscar contenido:
spotifyInfo(accion="search", consulta="...", tipo="track")Reproducir:
spotifyPlayer(accion="play", tipo="track", id="ID_OBTENIDO")
Almacenamiento
Credenciales y tokens se guardan en
~/.spotify-mcp-tokens.jsonLos tokens se refrescan automaticamente
El Redirect URI debe coincidir exactamente en el Dashboard y la configuracion
Solucion de Problemas
Usa spotifyAuth(accion="configurar", clientId="...", clientSecret="...") o agrega las variables de entorno en el mcp.json.
Verifica dispositivos con
spotifyInfo(accion="devices")Si no hay ninguno, abre Spotify con
spotifyPlayer(accion="openApp")Reproduce algo manualmente para activar la sesion
El control de reproduccion requiere Spotify Premium. Las funciones de busqueda e informacion funcionan con cuentas gratuitas.
Verifica que Client ID y Client Secret sean correctos
Confirma que el Redirect URI en el Dashboard sea exactamente
http://127.0.0.1:8000/callback
El puerto 8000 esta en uso.
Windows:
netstat -ano | findstr :8000
taskkill /PID [PID] /FLinux/macOS:
lsof -i :8000
kill -9 [PID]Si ninguna herramienta del player funciona:
Abre Spotify manualmente
Reproduce cualquier cancion
Ahora las herramientas deberian funcionar
Available Tools
4 toolsspotifyAuthA
Gestiona autenticación de Spotify. FLUJO RECOMENDADO:
Si error "Credenciales no configuradas": Pide al usuario clientId y clientSecret (de https://developer.spotify.com/dashboard) o que los agregue en env del mcp.json, luego usa accion="configurar"
Después de configurar: Usa accion="ejecutar" para completar OAuth (abre navegador automáticamente)
Si el usuario no puede autorizar: Usa accion="urlAuth" para darle el link manual IMPORTANTE: Las credenciales se guardan en ~/.spotify-mcp-tokens.json junto con los tokens de sesión
| Name | Required | Description | Default |
|---|---|---|---|
| accion | Yes | verificar=comprobar estado (USAR PRIMERO), configurar=guardar clientId+clientSecret, ejecutar=completar OAuth automático, urlAuth=obtener URL manual, cerrar=logout | |
| clientId | No | Client ID de Spotify Developer Dashboard (solo para configurar) | |
| clientSecret | No | Client Secret de Spotify Developer Dashboard (solo para configurar) | |
| redirectUri | No | Redirect URI (default: http://127.0.0.1:8000/callback) - debe coincidir con Spotify Dashboard |
spotifyInfoA
Busca y obtiene información de Spotify. USOS COMUNES:
Para reproducir música: Primero search(consulta="nombre canción", tipo="track") para obtener el ID, luego usar spotifyPlayer(play, id=ID_OBTENIDO)
Para verificar dispositivos antes de reproducir: devices (si "Sin dispositivos", usar spotifyPlayer openApp)
Para ver qué suena: nowPlaying
Para ver estado de reproducción: state NO REQUIERE dispositivo activo para búsquedas, pero sí para nowPlaying/state/queue.
| Name | Required | Description | Default |
|---|---|---|---|
| accion | Yes | search=buscar(consulta+tipo), nowPlaying=canción actual, devices=listar dispositivos, profile=perfil usuario, queue=cola, history=historial, saved=guardadas, playlists=mis playlists, playlistTracks/albumTracks/artistTop=contenido por ID, topTracks/topArtists=mis favoritos | |
| consulta | No | Texto de búsqueda (para search) - incluir artista mejora resultados | |
| tipo | No | Tipo de búsqueda: track=canción, album, artist, playlist | |
| id | No | ID de playlist/album/artista (para playlistTracks, albumTracks, artistTop) | |
| limite | No | Cantidad de resultados (1-50, default: 20) | |
| offset | No | Posición inicial para paginación | |
| periodo | No | Periodo para topTracks/topArtists: short_term=4 semanas, medium_term=6 meses, long_term=años | |
| mercado | No | Código país ISO para artistTop (ES, MX, US, etc) |
spotifyLibraryB
Gestiona biblioteca y playlists del usuario. FLUJOS COMUNES:
Guardar canción actual: Primero spotifyInfo(nowPlaying) para obtener ID, luego save(ids=[ID])
Crear playlist con canciones: 1) createPlaylist(nombre="Mi Playlist"), 2) addToPlaylist(playlistId=ID_PLAYLIST, ids=[IDs de canciones])
Ver playlists del usuario: spotifyInfo(playlists)
Ver canciones de playlist: spotifyInfo(playlistTracks, id=PLAYLIST_ID) NOTA: Los IDs de canciones se obtienen de spotifyInfo(search) o spotifyInfo(nowPlaying).
| Name | Required | Description | Default |
|---|---|---|---|
| accion | Yes | save=guardar en Me gusta, remove=quitar de Me gusta, check=verificar si guardada, createPlaylist, addToPlaylist, removeFromPlaylist, deletePlaylist, renamePlaylist | |
| ids | No | Array de IDs de canciones (obtener de spotifyInfo search/nowPlaying) | |
| playlistId | No | ID de playlist (obtener de spotifyInfo playlists) | |
| nombre | No | Nombre para createPlaylist o renamePlaylist | |
| descripcion | No | Descripción de playlist (opcional) | |
| publica | No | Si la playlist es pública (default: false) | |
| posicion | No | Posición donde insertar canciones en playlist (0=inicio) |
spotifyPlayerA
Controla reproduccion de Spotify. MANEJO DE ERRORES:
Si error "No hay dispositivo activo": 1) Usa spotifyInfo(accion="devices") para obtener lista. 2) Si hay dispositivos, usa spotifyPlayer(accion="transfer", dispositivo="ID") para activarlo y luego reintenta play. 3) Si no hay dispositivos, usa spotifyPlayer(accion="openApp"), espera que cargue, repite desde paso 1.
Si transfer falla o no hay dispositivos despues de abrir: Pide al usuario que reproduzca algo manualmente en Spotify para activar la sesion.
Si error "Premium requerido": Informa que necesita Spotify Premium.
Para reproducir: Primero busca con spotifyInfo(accion="search"), luego usa el ID con play. FLUJO RECOMENDADO cuando no reproduce: devices -> transfer(dispositivo=ID) -> play. Si falla, openApp -> esperar -> devices -> transfer -> play.
| Name | Required | Description | Default |
|---|---|---|---|
| accion | Yes | play=reproducir(uri o tipo+id), pause/resume, next/prev, volume(valor:0-100), shuffle(valor:bool), repeat(valor:track/context/off), seek(valor:ms), queue=agregar a cola, transfer=cambiar dispositivo, playLiked=reproducir Me gusta, openApp=abrir Spotify(valor:true=web) | |
| uri | No | URI completo de Spotify ej: spotify:track:ID (alternativa a tipo+id) | |
| tipo | No | Tipo de contenido para play/queue | |
| id | No | ID del contenido (obtener de spotifyInfo search) | |
| valor | No | Valor según acción: volume(0-100), shuffle(bool), repeat(track/context/off), seek(ms), openApp(true=forzar web) | |
| dispositivo | No | ID del dispositivo (obtener de spotifyInfo devices) | |
| enContexto | No | Para tracks: reproducir en contexto del álbum (default: true, false=solo la canción) |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.0.0- First observed
spotifyAuth - First observed
spotifyInfo - First observed
spotifyLibrary - First observed
spotifyPlayer
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose with no overlap: spotifyAuth handles authentication, spotifyInfo retrieves information, spotifyLibrary manages user content, and spotifyPlayer controls playback. The descriptions reinforce these boundaries by specifying unique workflows and use cases for each tool.
All tool names follow a consistent 'spotify' prefix with a descriptive suffix (Auth, Info, Library, Player), using camelCase uniformly. This pattern is predictable and makes it easy to identify the tool's domain and function at a glance.
With 4 tools, the server is well-scoped for managing Spotify integration, covering authentication, information retrieval, library management, and playback control. Each tool earns its place by handling a distinct aspect of the Spotify API without unnecessary duplication or fragmentation.
The tool set provides comprehensive coverage for core Spotify workflows, including authentication, search, playback, and library management. A minor gap exists in direct playlist modification (e.g., removing tracks or editing details), but the described flows allow agents to work around this by combining tools effectively.
Maintenance
Related MCP Connectors
Full Spotify Web API coverage - albums, artists, playlists, player controls, and more.
Spotify: Spotify Data API for Millions of songs & podcasts, artists, albums, playlists and more.
Generate full songs with vocals, instrumentals and sound effects from text. One server for Suno, Google Lyria, Mureka, MiniMax, ACE-Step, YuE and ElevenLabs. Your agent can quote the credit cost before generating, start a song, wait for it to finish and return download links. Sign in with OAuth; optional daily credit caps; retries never charge twice.
Control your Tesla from your AI assistant - climate, charging, access, and security.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables AI assistants to control Spotify playback, search for music, manage playlists, and interact with your Spotify library through natural language commands.19-
- AlicenseBqualityDmaintenanceEnables AI assistants to control Spotify playback, manage playlists, search music, and access listening history. Requires Spotify Premium and uses secure OAuth 2.0 with PKCE authentication.1395 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to control Spotify playback, search music, manage playlists and library, and access user listening insights via the Spotify Web API.-
- AlicenseBqualityBmaintenanceEnables AI assistants to control Spotify playback, search the full catalog including podcasts and audiobooks, manage libraries and playlists, and understand listening taste.131128 npm1MIT