King Crimson Discography MCP Server

Un servidor MCP que presenta datos de discos y actuaciones en vivo de King Crimson, incluido un modelo curado de encarnaciones (épocas de formación) que muestra cómo cada canción pertenece a eras específicas de la banda.

Documentación

King Crimson Discography MCP Server

Versión en japonés: README.ja.md

Un servidor MCP que expone datos de discos y actuaciones en vivo de King Crimson, incluido un modelo de encarnación (era de formación) curado que muestra cómo cada canción pertenece a eras específicas de la banda.

Qué lo hace diferente

Los servidores MCP genéricos de MusicBrainz/Discogs ya pueden obtener lanzamientos, créditos y ediciones. Este servidor también lo hace, pero añade dos cosas que una herramienta de discografía agnóstica de banda estructuralmente no puede tener:

  • Una capa de integración entre fuentes basada en MBID. MusicBrainz, Discogs, Cover Art Archive y setlist.fm se combinan para que un solo MBID de grupo de lanzamiento te dé créditos, ediciones físicas, arte y historial en vivo sin tener que re-resolver identidades por fuente.

  • Un modelo de encarnación de King Crimson. La formación de King Crimson cambió casi por completo, muchas veces, a lo largo de cinco décadas: la misma canción puede significar una banda totalmente distinta según el año. Este servidor cura manualmente ocho eras de formación y cruza el historial de actuaciones en vivo de cada canción rastreada con ellas:

    CanciónEncarnaciones en las que aparece
    "21st Century Schizoid Man"Repartida en todas las eras: la firma de la banda
    "Starless"Solo en la era de Larks' Tongues y en la era de los tres bateristas
    "Elephant Talk"Nacida en la era Discipline, desaparecida en la era de los tres bateristas
  • Una caché local de conciertos, offline-first. El historial completo de conciertos (más de 1.200 shows) se obtiene una vez mediante refresh_setlist_cache y se guarda como JSON. Cada consulta posterior de canción/gira/era lee la caché: instantánea e inmune a los fallos intermitentes de límite de tasa de setlist.fm durante el análisis.

  • Búsqueda inversa: canción → los álbumes en vivo que la capturaron, por era. Pregunta "¿qué lanzamientos en vivo contienen Red?" y obténlos agrupados por encarnación. Cruza dos cosas que este servidor ya conoce: cuándo se tocó una canción (de la caché de setlists) y cuándo se grabó cada álbum en vivo oficial (parseado de su título), por lo que responde una pregunta que ni MusicBrainz ni Discogs responden directamente.

    Para Red, esto saca a la luz 37 álbumes en vivo de un solo show en las eras Discipline, THRAK, ProjeKcts y de los tres bateristas, y muestra correctamente ninguno de la formación de 1974 que lo grabó, que nunca lo tocó en vivo (números al momento de escribir esto; el catálogo de MusicBrainz puede crecer).

Herramientas

HerramientaDescripción
search_release(query, artist="King Crimson", limit=10)Búsqueda de álbumes en MusicBrainz → MBIDs
get_credits(mbid, release_mbid=None)Créditos de intérpretes/producción por pista, resueltos a nivel de grabación, más una lista de álbum deduplicada
get_editions(mbid, max_versions=25)Ediciones/reediciones físicos vía Discogs, prefiriendo la relación exacta MusicBrainz→Discogs sobre la búsqueda difusa
get_artwork(mbid)Portada a través del Cover Art Archive
get_live_history(query="", artist="King Crimson", year=None, limit=20)Búsqueda de setlist.fm en una página por recinto/ciudad/año (sin necesidad de caché)
refresh_setlist_cache(artist_mbid=<King Crimson>, max_pages=100, max_retries=3, force=False)Obtener y cachear el historial completo de conciertos de un artista desde setlist.fm
song_performance_history(song, artist_mbid=<King Crimson>, match="exact")Historial en vivo de una canción desde la caché: by_year, by_tour, by_incarnation
get_incarnations()Las eras de formación curadas: miembros, instrumentos, lanzamientos clave
refresh_live_releases_cache(artist_mbid=<King Crimson>, max_pages=10, max_retries=3, force=False)Obtener los lanzamientos en vivo oficiales de King Crimson desde MusicBrainz y cachearlos, parseando una fecha de grabación de cada título
song_live_releases(song, artist_mbid=<King Crimson>, match="exact")Encontrar lanzamientos en vivo oficiales que capturaron una canción, agrupados por encarnación: compara la caché de setlists con las fechas de grabación de los lanzamientos en vivo
refresh_box_sets_cache(discogs_artist_id=70828, artist_mbid=<King Crimson>, force=False)Obtener las compilaciones y cajas de King Crimson desde Discogs y cachear sus listas de pistas
song_box_sets(song, artist_mbid=<King Crimson>, match="exact")Listar cajas/compilaciones que contienen una canción dada (de Discogs), con año, formato, URL de Discogs y número de apariciones

El modelo de encarnación

Ocho eras de formación, divididas por cambios de miembros:

idEraAños
kc_1969Era In the Court1969
kc_1970_1972Era transicional1970 – Sep 1972
kc_1972_1974Era Larks' TonguesOct 1972 – 1974
kc_1981_1984Era Discipline1981 – 1984
kc_1994_1997Era Double Trio / THRAK1994 – 1996
kc_1997_2003Era ProjeKcts / Nuovo Metal1997 – 2003
kc_2008Era 40 aniversario2008
kc_2014_2021Era de los tres bateristas2014 – 2021

Los límites son fechas, no solo años; en particular, 1972 se divide en la gira de primavera "Earthbound" de la era Islands (transicional) y la gira de otoño de la era Wetton (Larks' Tongues), ya que la membresía de la banda cambió genuinamente a mitad de año.

Las eras de formación son una cuestión de interpretación de los fans, y este es un corte razonable, no el único. La definición completa vive en KING_CRIMSON_INCARNATIONS en src/king_crimson_mcp/server.py — edítalo (miembros, lanzamientos clave, límites de fecha) para que coincida con tu propia visión; la lógica de agregación no necesita cambiar.

Canción → lanzamientos (búsqueda inversa)

"¿Qué lanzamientos tienen Red?" se responde de dos maneras complementarias, porque el catálogo en vivo de King Crimson se divide limpiamente en álbumes de un solo show y compilaciones de varios shows.

Álbumes en vivo de un solo show, mapeados a eras — song_live_releases

Necesita dos cachés locales, construidas una vez:

  1. refresh_setlist_cache — cada show y lo que se tocó (ya cubierto arriba).
  2. refresh_live_releases_cache — los lanzamientos en vivo oficiales de King Crimson desde MusicBrainz, con una fecha de grabación parseada de cada título cuando sea posible.

Ambas son construcciones de una sola vez: la historia de la banda es fija, por lo que ninguna caché necesita reconstruirse a menos que quieras recoger nuevas entradas de MusicBrainz.

Cómo funciona: las fechas de interpretación de una canción provienen de la caché de setlists; cada lanzamiento en vivo lleva una fecha de grabación parseada de su título (por ejemplo, "Live in Toronto – June 24, 1974"). Cuando la fecha de grabación de un lanzamiento coincide con una fecha en que se tocó la canción, se considera que ese lanzamiento contiene la canción. Esta es una regla sencilla y transparente: fiable para álbumes en vivo de un solo show.

Límites conocidos (por diseño): King Crimson tiene alrededor de 187 lanzamientos en vivo oficiales, de los cuales solo unos 87 (al momento de escribir esto) tienen un título que MusicBrainz pueda parsear a una fecha de grabación completa: ese es el rango que song_live_releases puede emparejar con confianza. Los otros ~100 (cajas, compilaciones, títulos sin fecha) no se pueden emparejar de esta manera; song_live_releases informa exactamente cuántos se omitieron en su campo coverage en lugar de subinformar silenciosamente. Las compilaciones de extractos también son un caso límite: una canción tocada en un show puede, en principio, emparejarse con el lanzamiento de ese show incluso si el lanzamiento específico es un disco de destacados que omite la pista: el emparejamiento por fecha no puede distinguir "grabado esa noche" de "incluido en el disco".

Cajas y compilaciones, listadas — song_box_sets

Las cajas y compilaciones de varios shows que song_live_releases no puede emparejar por fecha se cubren aquí, desde Discogs. Filtra los lanzamientos de King Crimson en Discogs a compilaciones y cajas (el formato contiene "Comp" o "Box", lo que excluye descargas de un solo show) y lista aquellos cuya lista de pistas contiene la canción: título, año, formato, enlace de Discogs y cuántas veces aparece la canción en cada uno.

Por qué no hay agrupación por eras aquí: Discogs no estructura fechas de grabación por pista, por lo que una caja no se puede dividir en eras como se hace con los álbumes de un solo show. song_box_sets por lo tanto lista las cajas que contienen una canción en lugar de clasificarlas: la precisión a nivel de era es trabajo de song_live_releases. Juntos cubren ambas mitades de la pregunta.

Necesita su propia caché de una sola vez: ejecuta refresh_box_sets_cache (aproximadamente un minuto; ~38 cajas/compilaciones de Discogs, al momento de escribir esto). Requiere DISCOGS_TOKEN.

Para Red, song_box_sets devuelve 14 cajas/compilaciones (los volúmenes "Collectors' King Crimson", "1972–1974", el "2015 Japan Tour Box", …), mientras que song_live_releases maneja el lado de un solo show.

La honestidad del informe de cobertura de ambas herramientas es el punto: los resultados son exactamente tan completos como los datos subyacentes lo permiten, y tú (o el agente que llama) puedes ver dónde profundizar en lugar de obtener una respuesta incompleta en silencio.

Inicio rápido

Tres pasos únicos, luego se ejecuta dentro de Claude.

Paso 1 — Instalar uv (una vez)

uv es una pequeña herramienta que puede obtener y ejecutar este servidor por ti.

  • macOS / Linux:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  • Windows (PowerShell):
    powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
    

Cierra y vuelve a abrir tu terminal después. Para comprobar que funcionó:

uv --version

Paso 2 — Obtén tus claves API gratuitas

Este servidor lee bases de datos musicales públicas. Dos de ellas necesitan una clave gratuita:

  • setlist.fm (historial de actuaciones en vivo) — solicita una clave en https://api.setlist.fm/docs/1.0/index.html
  • Discogs (ediciones físicas) — crea un token en Discogs → Configuración → Desarrolladores → Generar token

También debes establecer un correo electrónico de contacto (MCP_CONTACT) — MusicBrainz lo requiere para que sus servidores sepan quién llama. Cualquier correo que poseas está bien.

(MusicBrainz y Cover Art Archive no necesitan clave.)

Paso 3 — Añádelo a Claude Desktop

Abre el archivo de configuración de Claude Desktop:

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

Añade esto (rellena tu correo y claves):

{
  "mcpServers": {
    "king-crimson": {
      "command": "uvx",
      "args": ["king-crimson-mcp"],
      "env": {
        "MCP_CONTACT": "you@example.com",
        "SETLISTFM_API_KEY": "your-setlistfm-key",
        "DISCOGS_TOKEN": "your-discogs-token"
      }
    }
  }
}

Reinicia Claude Desktop. Las herramientas de King Crimson aparecerán automáticamente — no necesitas ejecutar nada en una terminal tú mismo.

Paso 4 — Primer uso

En Claude, pregunta algo como "Refresh the King Crimson setlist cache" una vez (descarga el historial completo de conciertos, ~40 segundos). Después, prueba "Show me the performance history of Starless" o "Which incarnations played 21st Century Schizoid Man?"

Solución de problemas

  • "uvx: command not found" / el servidor no arranca en Claude Desktop. uv no está instalado o no está en tu PATH. Repite el Paso 1, luego cierra por completo y vuelve a abrir Claude Desktop. En Windows puede que necesites la ruta completa a uvx en el campo command.
  • Aparece una advertencia si lo ejecutas manualmente en una terminal. Ejecutar uvx king-crimson-mcp directamente solo espera silenciosamente a un cliente — eso es normal (habla por stdin/stdout). No necesitas ejecutarlo a mano; Claude Desktop lo inicia y lo detiene por ti. Pulsa Ctrl+C para detenerlo.
  • get_editions / las herramientas de setlist devuelven un error sobre una clave faltante. La clave API de esa herramienta no está configurada en el bloque env de tu configuración. Ver Paso 2.
  • Los datos de setlist parecen incompletos para giras antiguas. setlist.fm es de envío de usuarios; algunos shows o canciones históricos simplemente no están registrados allí. Esto es una limitación de datos, no un error.

Instalación desde PyPI

Para desarrolladores — el mismo paquete que el Inicio rápido anterior, sin la configuración de Claude Desktop:

# run directly without installing (recommended)
uvx king-crimson-mcp

# or install as a persistent tool
pipx install king-crimson-mcp
king-crimson-mcp

Los secretos (MCP_CONTACT, DISCOGS_TOKEN, SETLISTFM_API_KEY) van ya sea en un archivo .env en el directorio desde el que ejecutas el comando, o directamente en el bloque env de la configuración de Claude Desktop (ver abajo) — cualquiera de los dos se lee. .env se carga desde el directorio de trabajo actual, ya que un paquete instalado no tiene un directorio de proyecto propio para mantenerlo.

Configuración desde el código fuente (desarrollo)

# Python 3.10+ required (3.12 recommended)
uv venv --python 3.12
source .venv/bin/activate
uv pip install -e .

# configure secrets
cp .env.example .env
# then edit .env

Variables .env:

  • MCP_CONTACT — requerida por la política de MusicBrainz; identifica tu aplicación a su API mediante el encabezado User-Agent.
  • DISCOGS_TOKEN — necesaria para get_editions (token de acceso personal de Discogs).
  • SETLISTFM_API_KEY — necesaria para get_live_history, refresh_setlist_cache y song_performance_history.
  • KC_CACHE_DIR — opcional; anula dónde se escribe la caché de setlists (ver abajo).

Ejecución

# quick tool check via MCP Inspector
mcp dev src/king_crimson_mcp/server.py

Ejecuta refresh_setlist_cache una vez primero — obtiene el historial completo de conciertos de King Crimson (~1,200 shows, ~40 segundos) y lo cachea localmente bajo $XDG_CACHE_HOME/king-crimson-mcp (o ~/.cache/king-crimson-mcp; anula con KC_CACHE_DIR) como setlists_<artist_mbid>.json. Después, song_performance_history lee desde la caché y devuelve al instante.

Ejecuta refresh_live_releases_cache una vez también si quieres song_live_releases — escribe live_releases_<artist_mbid>.json junto a la caché de setlists, en el mismo directorio. refresh_box_sets_cache de manera similar escribe box_sets_<artist_mbid>.json allí, para song_box_sets.

Registrar con Claude Desktop

Usando el paquete publicado:

{
  "mcpServers": {
    "king-crimson": {
      "command": "uvx",
      "args": ["king-crimson-mcp"],
      "env": {
        "MCP_CONTACT": "you@example.com",
        "DISCOGS_TOKEN": "...",
        "SETLISTFM_API_KEY": "..."
      }
    }
  }
}

O, ejecutando desde un clon local en su lugar (después de uv pip install -e ., que instala el mismo script de consola king-crimson-mcp en el venv):

{
  "mcpServers": {
    "king-crimson": {
      "command": "/absolute/path/to/.venv/bin/king-crimson-mcp",
      "env": { "MCP_CONTACT": "you@example.com" }
    }
  }
}

Los secretos pueden vivir en .env (en el directorio desde el que se ejecuta el comando) en lugar del bloque env — cualquiera de los dos se lee.

Fuentes de datos y atribución

Este proyecto es un cliente no oficial sin afiliación ni respaldo de MusicBrainz, la Fundación MetaBrainz, el Archivo de Internet, Discogs o setlist.fm.

  • MusicBrainz — gratuito, sin clave de API. Requiere un User-Agent identificativo con información de contacto (límite de velocidad: 1 petición/seg). Los datos son en gran parte CC0; acreditar a MusicBrainz en tu aplicación es una buena práctica. refresh_live_releases_cache también usa esto: lista los grupos de lanzamientos en vivo oficiales de King Crimson (type=live) — no se necesita ningún servicio o clave adicional.
  • Cover Art Archive — un proyecto conjunto de MusicBrainz / Internet Archive. Las imágenes son aportadas por usuarios individuales; sigue la misma etiqueta de atribución que MusicBrainz.
  • Discogs — requiere un token de acceso personal y un User-Agent único (60 peticiones/min autenticadas). El uso está sujeto a los términos de servicio de la API de Discogs. song_box_sets usa la misma API de Discogs que get_editions (sin servicio o clave adicional).
  • setlist.fm — requiere una clave de API (solicítala en api.setlist.fm). Cualquier visualización de datos de setlist.fm debe incluir un enlace de atribución al setlist fuente — cada actuación devuelta por este servidor incluye su url precisamente para ese propósito; muéstralo dondequiera que muestres los datos. Los datos de setlist.fm son enviados por los usuarios, por lo que no se garantiza su integridad ni precisión.

Limitaciones

  • Los datos de setlist.fm son enviados por los usuarios — algunos conciertos o canciones pueden faltar o ser incorrectos, especialmente de giras antiguas.
  • Los límites de las encarnaciones son una interpretación de la historia de la formación de King Crimson, no una taxonomía oficial.
  • Los créditos de intérpretes dependen de lo que MusicBrainz haya catalogado para un lanzamiento dado; los lanzamientos más escasos producen créditos más escasos.
  • song_live_releases solo puede coincidir con lanzamientos en vivo cuyo título produzca una fecha de grabación completa (aproximadamente la mitad de los ~187 lanzamientos en vivo oficiales de King Crimson); consulta Canción → lanzamientos arriba para ver qué está fuera de alcance y por qué.
  • song_box_sets no puede clasificar cajas recopilatorias por encarnación — Discogs no estructura las fechas de grabación por pista, por lo que lista las cajas/compilaciones coincidentes en lugar de agruparlas por era. Un puñado de las ~38 compilaciones que escanea son colecciones de varios artistas donde King Crimson contribuyó solo con una pista; estas pueden aparecer como ruido para títulos de canciones muy comunes.

Licencia

MIT — consulta LICENSE.