Discogs MCP Server
🎵 Discogs MCP Server
Un potente servidor de Model Context Protocol (MCP) que permite a los asistentes de IA interactuar con tu colección de música personal de Discogs. Construido sobre Cloudflare Workers con el Cloudflare Agents SDK y @modelcontextprotocol/sdk oficiales.
✨ Características
🔐 Autenticación OAuth segura: Conecta tu cuenta de Discogs de forma segura
🧠 Asignación de emociones inteligente: Traduce emociones en música («tranquilo», «enérgico», «ambiente de domingo por la noche»)
🔍 Inteligencia de búsqueda avanzada: Búsqueda multiestrategia con lógica OR y puntuación por relevancia
📊 Analítica de colección: Estadísticas y perspectivas completas sobre tu música
🎯 Recomendaciones contextuales: Sugerencias inteligentes basadas en estado de ánimo, género y similitud
⚡ Edge computing: Respuestas de baja latencia global gracias a Cloudflare Workers
🗂️ Caché inteligente: Caché basada en KV para un rendimiento óptimo
🔄 Sincronización de colección en segundo plano: Un proceso cada 6 horas mantiene una instantánea de tu colección en KV, de modo que las búsquedas responden desde esa instantánea en lugar de paginar por Discogs en cada llamada
Related MCP server: 1001 Albums Generator MCP
⚠️ Esto no es un servicio compartido
discogs-mcp.com es una instancia privada del mantenedor. Está bloqueada para una única cuenta de Discogs y devolverá un 403 a cualquier otra persona.
¿Por qué? El límite de peticiones de la API de Discogs (60 peticiones por minuto, contadas por IP de origen) es demasiado ajustado para compartirlo entre usuarios. Una única consulta activa a la colección puede saturarlo. En lugar de ofrecer un servicio multiusuario defectuoso, cada usuario despliega su propio Worker con sus propias credenciales de la API de Discogs.
La buena noticia: desplegar tu propia copia es sencillo, funciona en el plan gratuito de Cloudflare Workers y tan solo tarda unos 10 minutos. Consulta Alojamiento propio más abajo.
🚀 Alojamiento propio
El camino más rápido es el botón Deploy to Cloudflare de arriba. Clona este repositorio en tu cuenta de GitHub, configura los namespaces de KV y el Durable Object en tu cuenta de Cloudflare, te pide los tres secretos y activa Workers Builds para que futuros cambios en tu fork se redistribuyan automáticamente.
1. Registra una aplicación de desarrollador de Discogs
Ve a discogs.com/settings/developers → Create an Application. Ponle cualquier nombre; la Callback URL puede ser un marcador provisional (volverás a ella después de que el Worker esté desplegado). Guarda el Consumer Key y el Consumer Secret; los pegarás en el siguiente paso.
2. Haz clic en el botón
Cuando se lo pida, pega lo siguiente:
Secret | Valor |
| del paso 1 |
| del paso 1 |
| cualquier cadena aleatoria — sirve |
Después de completar el despliegue, Cloudflare te muestra la URL de tu Worker, algo así como https://discogs-mcp.<your-subdomain>.workers.dev. El endpoint de MCP es /mcp.
3. Actualiza la dirección de callback de tu aplicación Discogs
Vuelve a tu aplicación Discogs y establece la Callback URL como:
https://discogs-mcp.<your-subdomain>.workers.dev/discogs-callbackActividad este paso sin cerrar sesión.
4. (Opcional pero recomendado) Restringe la instancia a tu propio usuario de Discogs
Por defecto, cualquiera que descubra la URL de tu Worker puede autenticarse y consumir tu cuota de límite de Discogs. Para restringirlo, edita wrangler.toml en tu fork y añade ALLOWED_DISCOGS_USER_ID dentro de [vars]:
[vars]
# Single user
ALLOWED_DISCOGS_USER_ID = "123456"
# Or a comma-separated list for multiple users
ALLOWED_DISCOGS_USER_ID = "123456,789012,345678"Encuentra tu ID numérico visitando https://api.discogs.com/users/<your-username> y mirando el campo id. Haz el cambio y sube; Workers Builds se redistribuye automáticamente.
5. Conecta tu cliente MCP
Sustituye https://your-worker.workers.dev más abajo por tu propia URL.
Claude Desktop — Configuración → Integraciones → Añadir integración → https://your-worker.workers.dev/mcp
Claude Code:
claude mcp add --transport http discogs https://your-worker.workers.dev/mcpWindsurf (~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"discogs": {
"serverUrl": "https://your-worker.workers.dev/mcp"
}
}
}Continue.dev / Zed / Genérico:
{
"mcpServers": {
"discogs": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://your-worker.workers.dev/mcp"]
}
}
}MCP Inspector (probando):
npx @modelcontextprotocol/inspector https://your-worker.workers.dev/mcpDespliegue manual (alternativa)
Si prefieres evitar el botón — por ejemplo, porque quieres un clon completamente local o porque tu cuenta de Cloudflare no permite el botón —:
git clone https://github.com/rianvdm/discogs-mcp.git
cd discogs-mcp
npm install
# Create the two KV namespaces and copy the returned IDs into wrangler.toml
# (replace the empty `id = ""` values under the top-level [[kv_namespaces]] blocks)
wrangler kv namespace create MCP_SESSIONS
wrangler kv namespace create OAUTH_KV
# Set the three secrets
wrangler secret put DISCOGS_CONSUMER_KEY
wrangler secret put DISCOGS_CONSUMER_SECRET
wrangler secret put JWT_SECRET
# Deploy
npm run deployDespués sigue los pasos 3-5 anteriores (URL de callback, lista blanca opcional, conecta tu cliente MCP).
Opcional: enruta las llamadas a Discogs a través de tu propia IP
Discogs limita por IP de origen, y las peticiones salientes de un Worker se realizan desde las IPs compartidas de Cloudflare, así que otros Workers que llamen a Discogs desde la misma ubicación consumen tus 60 peticiones por minuto. Puedes verlo cuando una primera petición después de mucho inactividad ya muestra un X-Discogs-Ratelimit-Remaining bajo. Si te molesta, dirige el Worker hacia un relay controlado por ti: un Cloudflare Tunnel a cualquier máquina siempre encendida (un Mac en casa, un VPS pequeño) con un proxy inverso local que redirija a https://api.discogs.com y establezca Host y X-Forwarded-Host a api.discogs.com (cloudflared por sí solo no puede, porque sobrescribe X-Forwarded-Host). Pon una aplicación de Cloudflare Access con una política de service token delante del hostname del túnel, y después:
# wrangler.toml: DISCOGS_RELAY_ORIGIN = "https://relay.example.com"
wrangler secret put RELAY_ACCESS_CLIENT_ID
wrangler secret put RELAY_ACCESS_CLIENT_SECRETDeja DISCOGS_RELAY_ORIGIN vacío para llamar a Discogs directamente (por defecto). Si el relay no está disponible, el Worker se retira a llamadas directas para esa petición y lo registra, por lo que una máquina apagada se degrada al comportamiento de IP compartida en lugar de provocar una interrupción del servicio. Implementación y justificación: src/rate-limiter/relay.ts.
Tamaño de la colección y el plan gratuito
El límite del plan gratuito que cuenta aquí es el tiempo de CPU: 10 ms por invocación, tanto en las llamadas de herramientas como en la sincronización en segundo plano. La sincronización almacena una página cada vez para mantenerse dentro de ese límite y la instantánea que construye solo guarda los campos que la búsqueda necesita (unos 450 bytes por lanzamiento). Eso cubre colecciones de hasta 2.000 lanzamientos sin dificultad. A partir de ahí, leer la instantánea en cada búsqueda empieza a acercarse al límite, y una colección de 4.000 o más puede hacer que search_collection o refresh_collection fallen con un error de ejecución desnudo y sin mensaje: eso es el runtime terminando la invocación, no un error de Discogs. La solución es Workers Paid ($5/mes), que sube el presupuesto a 30 segundos; también cambia nada más en el despliegue.
Independientemente del plan, get_cache_stats informa del número de elementos e instantes de descarga de la instantánea y de las páginas de cualquier sincronización en curso, así puedes ver si la sincronización en segundo plano está llegando en lugar de inferirlo a partir de los contadores de la caché.
🔐 Autenticación
Este servidor usa MCP OAuth 2.1 con Discogs como proveedor de identidad. Cuando se conecta por primera vez:
Tu cliente MCP abre automáticamente una ventana del navegador
Autoriza la aplicación en Discogs
Eres redirigido de vuelta y quedas autentificado: no requiere copiar y pegar
Tu sesión persiste durante 7 días
🛠️ Herramientas disponibles
🔓 Herramientas públicas (sin autenticación)
Tool | Descripción |
| Probar la conexión con el servidor |
| Obtener información y detalles del servidor |
| Comprobar el estado de autenticación y obtener las instrucciones de inicio de sesión |
🔐 Herramientas autenticadas (requieren inicio)
Búsqueda y descubrimiento
Tool | Descripción |
| Buscar tu colección con filtros de género explícitos, ranking sensible al estado de ánimo y deduplicación a nivel de master |
| Buscar en el catálogo global de Discogs (lanzamientos, masters, artistas, sellos) — remarca los resultados que ya tienes |
| Obtener detalle de un lanzamiento individual (lista de cortes, formatos, sellos) |
| Ver desglose por género, análisis por década, distribución del formato y valoraciones |
| Obtener recomendaciones personalizadas por género, década, estado de ánimo o similitud |
Gestión de colección
Tool | Descripción |
| Agregar un lanzamiento a una carpeta (doble función, esta vez por defecto en Uncategorized) |
| Eliminar una instancia concreta de lanzamiento de una carpeta |
| Mover una instancia de lanzamiento entre carpetas |
| Valorar un lanzamiento de 0 (sin valoración) a 5 estrellas |
Wantlist
Tool | Descripción |
| Listar lanzamientos de tu wantlist (por páginas) |
| Añadir un lanzamiento a tu wantlist |
| Quitar un lanzamiento de tu wantlist |
Carpetas
Tool | Descripción |
| Listar todas las carpetas que no son vacías y contar la cantidad de lanzamientos que tienen |
| Formar una carpeta nueva |
| Renombrar una carpeta existente (excluidas las del sistema) |
| Eliminar una carpeta vacía (excluidas las del sistema) |
Campos personalizados
Tool | Descripción |
| Listar todos los campos personalizados definidos en tu colección |
| Fijar un valor de campo personalizado en una instancia específica de lanzamiento |
Diagnóstico
Tool | Descripción |
| Ver el rendimiento de la caché (total de entradas, peticiones pendientes, desglose) |
| Forzar una actualización completa de la instantánea de la colección ahora, en lugar de esperar la sincronización cada 6 horas |
📚 Recursos MCP
Accede a datos de Discogs a través de URIs de recursos MCP estandarizados:
discogs://collection # Complete collection (JSON)
discogs://release/{id} # Specific release details
discogs://search?q={query} # Search results💬 Prompts de MCP
Prompt | Descripción | Arguments |
| Explorar y navegar por tu colección | |
| Exacta buscar música en tu colección |
|
| Obtén información y estadísticas de tu colección |
🏗️ Desarrollo local
# Dev secrets live in .dev.vars (gitignored); the same Discogs app is fine for dev
cp .dev.vars.example .dev.vars # then fill in DISCOGS_CONSUMER_KEY, DISCOGS_CONSUMER_SECRET, JWT_SECRET
# Run the Worker locally
npm run dev
# Test with MCP Inspector
npx @modelcontextprotocol/inspector http://localhost:8787/mcpEl bloque [vars] predeterminado en wrangler.toml deja ALLOWED_DISCOGS_USER_ID vacío, por lo que el desarrollo local está abierto a cualquier cuenta de Discogs — conveniente para pruebas.
🧪 Pruebas
npm test # vitest in watch mode (runs in workerd via @cloudflare/vitest-pool-workers)
npx vitest run # one pass, then exit
npm run lint # ESLint; CI runs lint, test, and a dry-run buildDiagnósticos
ping y server_info informan cómo sale el tráfico de Discogs (directamente o a través del relay descrito anteriormente) y si el relay ha vuelto a las llamadas directas. Para el estado en tiempo real del limitador de velocidad — presupuesto restante, profundidad de la cola, estado del interruptor de circuito, fallbacks del relay — establece un secreto DEBUG_TOKEN y llama a GET /debug/budget?token=<DEBUG_TOKEN>; sin el secreto, el endpoint devuelve 404.
🤝 Contribuciones
Haz un fork del repositorio
Crea tu rama de características (
git checkout -b feature/amazing-feature)Haz commit de tus cambios (
git commit -m 'Add amazing feature')Haz push de la rama (
git push origin feature/amazing-feature)Abre un Pull Request
📄 Licencia
Licencia MIT — consulta el archivo LICENSE para ver el details.
🙏 Agradecimientos
Discogs por la API de la base de datos de música
Model Context Protocol por el estándar
Cloudflare Workers por la plataforma
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The media memory layer for AI agents and their humans. Your AI client gets 29 tools to search your collection, add items, update ratings, preview music, and find patterns across everything you've read, watched, and listened to.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
A personal RAG database you build from chat, so AI creates work that sounds like you.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Related MCP Servers
- AlicenseAqualityDmaintenanceConnects AI assistants to a self-hosted Your Spotify instance and Spotify's Web API for deep listening analytics and playback control. It enables users to query unlimited listening history, generate custom Wrapped summaries, and manage playlists through natural language.18Apache 2.0
- AlicenseNot gradedqualityDmaintenanceConnects the 1001 Albums Generator dataset to AI assistants, enabling natural language exploration of your listening journey, taste analysis, and group comparisons.ISC
- AlicenseNot gradedqualityAmaintenanceA powerful Model Context Protocol (MCP) server that enables AI assistants to interact with your personal Discogs music collection.1516MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search, manage, and analyze personal Discogs music collections with features like mood-based recommendations, advanced search, and collection analytics.15MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nepomusic/discogs-mcp-nepomusic'
If you have feedback or need assistance with the MCP directory API, please join our Discord server