YouTube Playlist Generator MCP Server

Un servidor del Protocolo de Contexto del Modelo (MCP) que permite a las aplicaciones de IA buscar videos musicales de YouTube y gestionar listas de reproducción utilizando la API oficial de YouTube Data v3.

Documentación

Servidor MCP de Generador de Listas de Reproducción de Spotify

Un servidor de Protocolo de Contexto de Modelo (MCP) que permite a las aplicaciones de IA buscar pistas musicales y gestionar listas de reproducción utilizando la API web oficial de Spotify.

Características

  • Buscar Pistas Musicales: Encuentra pistas musicales en Spotify con parámetros de búsqueda personalizables
  • Obtener Detalles de Pistas: Recupera información completa sobre pistas específicas
  • Obtener Pistas de Listas de Reproducción: Lista pistas de listas de reproducción
  • Gestión de Listas de Reproducción: Gestión completa de listas de reproducción, incluyendo creación, edición y administración (requiere configuración de OAuth)

Configuración

Requisitos Previos

  • Node.js 18 o superior
  • Una Cuenta de Desarrollador de Spotify
  • Credenciales de la aplicación de Spotify (ID de Cliente y Secreto de Cliente)

Instalación

  1. Clona este repositorio:
git clone https://github.com/danisss9/spotify-playlist-generator-mcp-server
  1. Instala las dependencias:
npm install
  1. Crea una aplicación de Spotify:

    • Ve al Panel de Desarrollador de Spotify
    • Crea una nueva aplicación
    • Anota tu ID de Cliente y Secreto de Cliente
    • Añade http://localhost:8888/callback a tus URI de redirección
  2. Configura las variables de entorno:

# Create a .env file
echo "SPOTIFY_CLIENT_ID=your_client_id_here" > .env
echo "SPOTIFY_CLIENT_SECRET=your_client_secret_here" >> .env
  1. Compila el código TypeScript:
npm run build

Ejecutar el Servidor

Para desarrollo con reconstrucción automática:

npm run dev

Para producción:

npm start

Uso con Clientes MCP

Este servidor utiliza el transporte stdio, por lo que puede usarse con cualquier cliente MCP que soporte stdio.

Configuración de Claude Desktop

Añade a tu archivo de configuración de Claude Desktop:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "spotify-playlist-generator": {
      "command": "node",
      "args": ["/absolute/path/to/spotify-playlist-generator/build/index.js"],
      "env": {
        "SPOTIFY_CLIENT_ID": "your_client_id_here",
        "SPOTIFY_CLIENT_SECRET": "your_client_secret_here"
      }
    }
  }
}

Configuración de Visual Studio Code con GitHub Copilot

Para usar este servidor MCP con GitHub Copilot en Visual Studio Code, debes configurarlo en la configuración de VS Code:

  1. Abre la Configuración de VS Code: Pulsa Ctrl+, (Windows/Linux) o Cmd+, (macOS)

  2. Busca MCP: Escribe "mcp" en la barra de búsqueda

  3. Añade la Configuración del Servidor MCP: Añade lo siguiente al JSON de configuración de VS Code:

{
  "github.copilot.chat.mcp.servers": {
    "spotify-playlist-generator": {
      "command": "node",
      "args": ["/absolute/path/to/spotify-playlist-generator/build/index.js"],
      "env": {
        "SPOTIFY_CLIENT_ID": "your_client_id_here",
        "SPOTIFY_CLIENT_SECRET": "your_client_secret_here"
      }
    }
  }
}

Alternativa: Usar la Interfaz de Configuración

  1. Ve a Archivo > Preferencias > Configuración (o usa Ctrl+,)
  2. Busca "GitHub Copilot MCP"
  3. Haz clic en "Editar en settings.json" junto a "Github › Copilot › Chat: Mcp Servers"
  4. Añade la configuración del servidor como se muestra arriba

Configuración de Variables de Entorno

Por seguridad, también puedes establecer variables de entorno a nivel de sistema en lugar de en la configuración:

Windows (PowerShell):

[Environment]::SetEnvironmentVariable("SPOTIFY_CLIENT_ID", "your_client_id_here", "User")
[Environment]::SetEnvironmentVariable("SPOTIFY_CLIENT_SECRET", "your_client_secret_here", "User")

Windows (Símbolo del sistema):

setx SPOTIFY_CLIENT_ID "your_client_id_here"
setx SPOTIFY_CLIENT_SECRET "your_client_secret_here"

macOS/Linux:

export SPOTIFY_CLIENT_ID="your_client_id_here"
export SPOTIFY_CLIENT_SECRET="your_client_secret_here"
# Add to ~/.bashrc, ~/.zshrc, or ~/.profile to persist
echo 'export SPOTIFY_CLIENT_ID="your_client_id_here"' >> ~/.bashrc
echo 'export SPOTIFY_CLIENT_SECRET="your_client_secret_here"' >> ~/.bashrc

Luego elimina la sección env de la configuración de VS Code:

{
  "github.copilot.chat.mcp.servers": {
    "spotify-playlist-generator": {
      "command": "node",
      "args": ["/absolute/path/to/spotify-playlist-generator/build/index.js"]
    }
  }
}

Uso en VS Code

Una vez configurado, puedes usar el servidor MCP a través del Chat de GitHub Copilot:

  1. Abre el Chat de Copilot (Ctrl+Alt+I o haz clic en el icono de chat)
  2. Usa lenguaje natural para interactuar con Spotify:
    • "Busca pistas de música jazz"
    • "Crea una nueva lista de reproducción llamada 'Mis Favoritos'"
    • "Añade estas pistas a mi lista de reproducción"
    • "Muéstrame detalles sobre esta pista de Spotify"

Herramientas Disponibles

Herramientas que Requieren OAuth (Todas las funciones requieren autenticación)

authenticate_spotify

Autentícate con OAuth de Spotify para habilitar la búsqueda de música y las funciones de gestión de listas de reproducción.

Parámetros:

  • getAuthUrl (booleano, predeterminado: falso): Establece en verdadero para obtener la URL de autorización
  • authCode (cadena, opcional): Código de autorización del flujo OAuth

get_auth_status

Comprueba el estado actual de autenticación de Spotify.

Parámetros: Ninguno

search_tracks

Busca pistas musicales en Spotify.

Parámetros:

  • query (cadena): Consulta de búsqueda de pistas
  • limit (número, 1-50, predeterminado: 20): Número máximo de resultados
  • market (cadena, opcional): Código de país ISO 3166-1 alfa-2 para filtrar resultados

get_track_details

Obtén información detallada sobre una pista específica de Spotify.

Parámetros:

  • trackId (cadena): ID de la pista de Spotify
  • market (cadena, opcional): Código de país ISO 3166-1 alfa-2 para el mercado

create_playlist

Crea una nueva lista de reproducción de Spotify (requiere autenticación).

Parámetros:

  • name (cadena): Nombre de la lista de reproducción
  • description (cadena, opcional): Descripción de la lista de reproducción
  • public (booleano, predeterminado: falso): Si la lista de reproducción debe ser pública
  • collaborative (booleano, predeterminado: falso): Si la lista de reproducción debe ser colaborativa

edit_playlist

Edita información de una lista de reproducción existente (requiere autenticación).

Parámetros:

  • playlistId (cadena): ID de la lista de reproducción a editar
  • name (cadena, opcional): Nuevo nombre para la lista de reproducción
  • description (cadena, opcional): Nueva descripción para la lista de reproducción
  • public (booleano, opcional): Nueva configuración pública
  • collaborative (booleano, opcional): Nueva configuración colaborativa

Nota: Al menos un campo (nombre, descripción, público o colaborativo) debe proporcionarse para actualizar.

add_to_playlist

Añade pistas a una lista de reproducción de Spotify (requiere autenticación).

Parámetros:

  • playlistId (cadena): ID de la lista de reproducción de destino
  • trackUris (matriz de cadenas): Matriz de URI de pistas de Spotify para añadir
  • position (número, opcional): Posición para insertar pistas (índice basado en 0)

list_playlists

Lista las listas de reproducción de Spotify del usuario (requiere autenticación).

Parámetros:

  • limit (número, 1-50, predeterminado: 20): Número máximo de listas de reproducción
  • offset (número, mínimo: 0, predeterminado: 0): Desplazamiento de índice para paginación

get_playlist_tracks

Obtén pistas de una lista de reproducción de Spotify (requiere autenticación).

Parámetros:

  • playlistId (cadena): ID de la lista de reproducción de la que obtener pistas
  • limit (número, 1-100, predeterminado: 50): Número máximo de pistas a devolver
  • offset (número, mínimo: 0, predeterminado: 0): Desplazamiento de índice para paginación

remove_from_playlist

Elimina pistas de una lista de reproducción de Spotify (requiere autenticación).

Parámetros:

  • playlistId (cadena): ID de la lista de reproducción de la que eliminar pistas
  • trackUris (matriz de cadenas): Matriz de URI de pistas de Spotify para eliminar
  • snapshotId (cadena, opcional): ID de instantánea de la lista de reproducción para control de versiones

Configuración de Autenticación OAuth

Para toda la funcionalidad, necesitas configurar OAuth 2.0 con Spotify:

1. Configuración del Panel de Desarrollador de Spotify

  1. Ve al Panel de Desarrollador de Spotify
  2. Inicia sesión con tu cuenta de Spotify
  3. Haz clic en "Crear una aplicación"
  4. Completa el nombre y la descripción de la aplicación
  5. Añade http://localhost:8888/callback a las URI de redirección
  6. Copia tu ID de Cliente y Secreto de Cliente

2. Configuración de Entorno

Añade tus credenciales OAuth al archivo .env:

SPOTIFY_CLIENT_ID=your_client_id_here
SPOTIFY_CLIENT_SECRET=your_client_secret_here

3. Flujo de Autenticación

  1. Usa la herramienta authenticate_spotify con getAuthUrl: true
  2. Abre la URL proporcionada en tu navegador
  3. Inicia sesión en tu cuenta de Spotify y concede permisos
  4. Copia el código de autorización de la URL de devolución de llamada
  5. Usa la herramienta authenticate_spotify nuevamente con el parámetro authCode

4. Uso de Funciones Autenticadas

Una vez autenticado, puedes:

  • Buscar pistas musicales
  • Obtener información detallada de pistas
  • Crear nuevas listas de reproducción
  • Editar información de listas de reproducción existentes (nombre, descripción, privacidad)
  • Añadir pistas a tus listas de reproducción
  • Listar tus listas de reproducción
  • Obtener pistas de listas de reproducción
  • Eliminar pistas de listas de reproducción

Limitaciones de la API

  • Límites de Velocidad: La API de Spotify tiene límites de velocidad (varían según el endpoint)
  • Tokens OAuth: Los tokens de acceso expiran después de 1 hora y necesitan renovación
  • Restricciones de Mercado: Algunas pistas pueden no estar disponibles en ciertos mercados
  • Permisos: El alcance de OAuth determina las operaciones disponibles

Desarrollo

Compilación

npm run build

Modo de Desarrollo

npm run dev

Estructura del Proyecto

src/
└── index.ts          # Main server implementation

build/                # Compiled JavaScript output

Contribuciones

  1. Haz un fork del repositorio
  2. Crea una rama de características
  3. Realiza tus cambios
  4. Prueba exhaustivamente
  5. Envía una solicitud de extracción

Licencia

Licencia MIT - consulta el archivo LICENSE para más detalles

Solución de Problemas

Problemas Comunes

  1. "Se requieren las variables de entorno SPOTIFY_CLIENT_ID y SPOTIFY_CLIENT_SECRET"

    • Asegúrate de haber establecido ambas variables de entorno
    • Verifica que las credenciales sean válidas desde tu aplicación de Spotify
  2. Errores de "Autenticación requerida"

    • Usa la herramienta authenticate_spotify para autenticarte primero
    • Comprueba si tu token de acceso ha expirado y vuelve a autenticarte
  3. Errores de "Límite de velocidad excedido"

    • Espera a que se restablezca el límite de velocidad
    • Reduce la frecuencia de las llamadas a la API
  4. Errores de compilación

    • Asegúrate de tener Node.js 18+ instalado
    • Ejecuta npm install para asegurarte de que todas las dependencias estén instaladas
    • Comprueba la compilación de TypeScript con npm run build
  5. Errores de "Pista no disponible"

    • Algunas pistas pueden no estar disponibles en tu mercado
    • Intenta especificar un parámetro de mercado diferente

Consideraciones de Seguridad

  • Nunca comprometas claves de API en el control de versiones
  • Usa variables de entorno para configuración sensible
  • Valida todas las entradas del usuario
  • Implementa manejo adecuado de errores y registro
  • Ten en cuenta los términos de servicio de la API de Spotify

Este proyecto fue creado usando GitHub Copilot