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 personal de música de Discogs. Construido sobre Cloudflare Workers usando el Cloudflare Agents SDK oficial y @modelcontextprotocol/sdk.
✨ Características
🔐 Autenticación OAuth segura: Conecta tu cuenta de Discogs de forma segura
🧠 Mapeo de estados de ánimo inteligente: Traduce emociones en música ("melódico", "enérgico", "vibraciones de domingo por la noche")
🔍 Inteligencia de búsqueda avanzada: Búsqueda multiestrategia con lógica OR y puntuación de relevancia
📊 Analíticas de colección: Estadísticas e información completa sobre tu música
🎯 Recomendaciones contextuales: Sugerencias inteligentes basadas en estado de ánimo, género y similitud
⚡ Computación en el borde: Respuestas globales de baja latencia mediante Cloudflare Workers
🗂️ Caché inteligente: Caché basada en KV para un rendimiento óptimo
🔄 Sincronización de colección en segundo plano: Un trabajo cada 6 horas mantiene una instantánea de tu colección en KV, de modo que las búsquedas respondan desde la 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 la instancia privada del mantenedor. Está bloqueada a una sola cuenta de Discogs y devolverá un 403 para cualquier otra persona.
¿Por qué? El límite de tasa de la API de Discogs (60 solicitudes por minuto, contadas por IP de origen) es demasiado ajustado para compartirlo entre usuarios. Una sola consulta activa de colección de un usuario puede saturarlo. En lugar de ejecutar un servicio multiinquilino roto, cada usuario despliega su propio Worker con sus propias credenciales de API de Discogs.
La buena noticia: desplegar tu propia copia es sencillo, funciona en el nivel gratuito de Cloudflare Workers y toma unos 10 minutos. Consulta Autoalojamiento a continuación.
🚀 Autoalojamiento
El camino más rápido es el botón Deploy to Cloudflare de arriba. Clona este repositorio en tu cuenta de GitHub, aprovisiona los espacios de nombres KV y el Durable Object en tu cuenta de Cloudflare, te solicita los tres secretos y configura Workers Builds para que los futuros envíos a tu fork se redesplieguen automáticamente.
1. Registra una aplicación de desarrollador de Discogs
Ve a discogs.com/settings/developers → Create an Application. Ponle cualquier nombre; la URL de devolución de llamada puede ser un marcador de posición por ahora (volverás a configurarla después de desplegar el Worker). Guarda la Consumer Key y el Consumer Secret — los pegarás a continuación.
2. Haz clic en el botón
Cuando se te solicite, pega:
Secreto | Valor |
| del paso 1 |
| del paso 1 |
| cualquier cadena aleatoria — |
Después de que el despliegue se complete, Cloudflare muestra la URL de tu Worker — algo como https://discogs-mcp.<tu-subdominio>.workers.dev. El endpoint de MCP es /mcp.
3. Actualiza la URL de devolución de llamada de tu aplicación de Discogs
Vuelve a tu aplicación de Discogs y establece la Callback URL a:
https://discogs-mcp.<your-subdomain>.workers.dev/discogs-callback4. (Opcional pero recomendado) Bloquea tu instancia a tu propio usuario de Discogs
Por defecto, cualquiera que descubra la URL de tu Worker puede autenticarse y consumir tu presupuesto de límite de tasa de Discogs. Para restringirlo, edita wrangler.toml en tu fork y establece ALLOWED_DISCOGS_USER_ID bajo [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/<tu-nombre-de-usuario> y mirando el campo id. Empuja el cambio — Workers Builds se redespliega automáticamente.
5. Conecta tu cliente MCP
Reemplaza https://your-worker.workers.dev a continuación con tu propia URL.
Claude Desktop — Configuración → Integraciones → Agregar 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 (pruebas):
npx @modelcontextprotocol/inspector https://your-worker.workers.dev/mcpDespliegue manual (alternativa)
Si prefieres omitir el botón — por ejemplo, quieres un clon completamente local o estás en una cuenta de Cloudflare donde el botón no funciona:
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 deployLuego sigue los pasos 3–5 de arriba (URL de devolución de llamada, lista de permitidos opcional, conecta tu cliente MCP).
Opcional: enruta las llamadas de Discogs a través de tu propia IP
Discogs limita por IP de origen, y las solicitudes salientes de un Worker salen desde las IPs de salida compartidas de Cloudflare, por lo que otros Workers que hablan con Discogs desde la misma ubicación consumen tus 60 solicitudes por minuto. Puedes verlo cuando una primera solicitud después de horas de inactividad ya reporta un X-Discogs-Ratelimit-Remaining bajo. Si te afecta, apunta el Worker a un relé que ejecutes: un Cloudflare Tunnel a cualquier máquina siempre encendida (un Mac en casa, un VPS pequeño) con un proxy inverso local que reenvíe a https://api.discogs.com y establezca tanto Host como X-Forwarded-Host a api.discogs.com (cloudflared solo no puede, sobrescribe X-Forwarded-Host). Pon una aplicación de Cloudflare Access con una política de token de servicio frente al nombre de host del túnel, luego:
# 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 (el valor predeterminado). Si el relé no es alcanzable, el Worker cae a llamadas directas para esa solicitud y lo registra, de modo que una máquina apagada degrada al comportamiento de IP compartida en lugar de una interrupción. Implementación y justificación: src/rate-limiter/relay.ts.
Tamaño de colección y el plan gratuito
El límite del plan gratuito que importa aquí es el tiempo de CPU: 10 ms por invocación, tanto para llamadas de herramientas como para la sincronización en segundo plano. La sincronización almacena una página a la vez para mantenerse dentro de eso, y la instantánea que construye conserva solo los campos que la búsqueda necesita (alrededor de 450 bytes por lanzamiento). Eso cubre cómodamente colecciones de hasta aproximadamente 2,000 lanzamientos. Más allá de eso, leer la instantánea en cada búsqueda comienza a agotar el presupuesto, y una colección de 4,000+ puede ver search_collection o refresh_collection fallar 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 eleva el presupuesto a 30 segundos; nada más del despliegue cambia.
Sea cual sea el plan, get_cache_stats reporta el recuento de elementos de la instantánea y el tiempo de obtención, y el recuento de páginas de cualquier sincronización en curso, para que puedas ver si la sincronización en segundo plano está aterrizando en lugar de inferirlo de los recuentos de entradas de caché.
🔐 Autenticación
Este servidor usa MCP OAuth 2.1 con Discogs como proveedor de identidad. Cuando te conectes por primera vez:
Tu cliente MCP abre automáticamente una ventana del navegador
Autoriza la aplicación en Discogs
Se te redirige de vuelta y quedas autenticado — sin necesidad de copiar y pegar
Tu sesión persiste durante 7 días
🛠️ Herramientas Disponibles
🔓 Herramientas Públicas (Sin Autenticación Requerida)
Herramienta | Descripción |
| Prueba la conectividad del servidor |
| Obtén información del servidor y sus capacidades |
| Verifica el estado de autenticación y obtén instrucciones de inicio de sesión |
🔐 Herramientas Autenticadas (Requieren Inicio de Sesión)
Búsqueda y descubrimiento
Herramienta | Descripción |
| Busca en tu colección con filtros de género explícitos, clasificación consciente del estado de ánimo y deduplicación a nivel de maestro |
| Busca en el catálogo general de Discogs (lanzamientos, maestros, artistas, sellos) — marca los resultados que ya posees |
| Obtén información detallada sobre un lanzamiento específico (lista de pistas, formatos, sellos) |
| Ve el desglose por género, análisis por década, distribución de formatos y calificaciones |
| Obtén recomendaciones personalizadas por género, década, estado de ánimo o similitud |
Gestión de colección
Herramienta | Descripción |
| Agrega un lanzamiento a una carpeta (por defecto, Sin categoría) |
| Elimina una instancia específica de lanzamiento de una carpeta |
| Mueve una instancia de lanzamiento entre carpetas |
| Califica un lanzamiento de 0 (sin calificación) a 5 estrellas |
Lista de deseos
Herramienta | Descripción |
| Lista los lanzamientos en tu lista de deseos (paginado) |
| Agrega un lanzamiento a tu lista de deseos |
| Elimina un lanzamiento de tu lista de deseos |
Carpetas
Herramienta | Descripción |
| Lista todas las carpetas con recuentos de lanzamientos |
| Crea una nueva carpeta |
| Renombra una carpeta existente (carpetas del sistema excluidas) |
| Elimina una carpeta vacía (carpetas del sistema excluidas) |
Campos personalizados
Herramienta | Descripción |
| Lista todos los campos personalizados definidos en tu colección |
| Establece un valor de campo personalizado en una instancia de lanzamiento específica |
Diagnóstico
Herramienta | Descripción |
| Ve el rendimiento de la caché (entradas totales, solicitudes pendientes, desglose) |
| Fuerza una actualización completa de la instantánea de la colección ahora, en lugar de esperar la sincronización de 6 horas |
📚 Recursos MCP
Accede a los datos de Discogs mediante URIs de recursos MCP estandarizados:
discogs://collection # Complete collection (JSON)
discogs://release/{id} # Specific release details
discogs://search?q={query} # Search results💬 Prompts MCP
Prompt | Descripción | Argumentos |
| Navega y explora tu colección | |
| Encuentra música específica en tu colección |
|
| Obtén información y estadísticas sobre 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 probar.
🧪 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 (directo o a través del relay descrito anteriormente) y si el relay ha recurrido a llamadas directas. Para el estado en vivo del limitador de velocidad — presupuesto restante, profundidad de la cola, estado del interruptor de circuito, respaldos 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 a la rama (
git push origin feature/amazing-feature)Abre un Pull Request
📄 Licencia
Licencia MIT: consulta el archivo LICENSE para más detalles.
🙏 Agradecimientos
Discogs por la API de la base de datos musical
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…
Scrape Discogs music releases, artists, labels, formats and catalogue numbers. Pay per row.
AI assistant integration for Leaf — track books, log reading sessions, and manage your library.
Related MCP Servers
- AlicenseCqualityAmaintenanceEnables interactions with the Discogs API for music catalog operations and search functionality, allowing users to manage their Discogs collections through natural language.5396120MIT
- 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 gradedqualityAmaintenanceEnables finding the best-sounding pressing of an album and mood- and taste-based music recommendations via Discogs.2MIT
- 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/DirtyDimmy/discogs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server