King Crimson Discography MCP Server

Um servidor MCP que apresenta dados de discografia e performances ao vivo do King Crimson — incluindo um modelo curado de encarnações (eras de formação) que mostra como cada música pertence a eras específicas da banda.

Documentação

King Crimson Discography MCP Server

日本語版: README.ja.md

Um servidor MCP que expõe dados de discografia e performances ao vivo do King Crimson — incluindo um modelo curado de encarnações (eras de formação) que mostra como cada música pertence a eras específicas da banda.

O que torna isso diferente

Servidores MCP genéricos de MusicBrainz/Discogs já conseguem buscar lançamentos, créditos e prensagens. Este servidor também faz isso, mas adiciona duas coisas que uma ferramenta de discografia agnóstica de banda estruturalmente não pode ter:

  • Uma camada de integração entre fontes, baseada em MBID. MusicBrainz, Discogs, Cover Art Archive e setlist.fm são costurados para que um único MBID de grupo de lançamento forneça créditos, edições físicas, capas e histórico ao vivo, sem re-resolver identidades por fonte.

  • Um modelo de encarnações do King Crimson. A formação do King Crimson mudou quase completamente, muitas vezes, ao longo de cinco décadas — a mesma música pode significar uma banda totalmente diferente dependendo do ano. Este servidor cura manualmente oito eras de formação e cruza o histórico de performances ao vivo de cada música rastreada com elas:

    MúsicaEncarnações em que aparece
    "21st Century Schizoid Man"Espalhada por todas as eras — a assinatura da banda
    "Starless"Apenas na era Larks' Tongues e na era dos três bateristas
    "Elephant Talk"Nascida na era Discipline, desaparece na era dos três bateristas
  • Um cache local de shows, offline-first. O histórico completo de shows (mais de 1.200 apresentações) é buscado uma vez via refresh_setlist_cache e armazenado em cache como JSON. Toda consulta subsequente de música/turnê/era lê o cache — instantânea e imune às falhas intermitentes de rate-limit do setlist.fm durante análises.

  • Busca reversa: música → os álbuns ao vivo que a capturaram, por era. Pergunte "quais lançamentos ao vivo contêm Red?" e obtenha-os agrupados por encarnação. Ele cruza duas coisas que este servidor já conhece — quando uma música foi tocada (do cache de setlists) e quando cada álbum ao vivo oficial foi gravado (extraído do título) — respondendo assim a uma pergunta que nem MusicBrainz nem Discogs respondem diretamente.

    Para Red, isso revela 37 álbuns ao vivo de show único nas eras Discipline, THRAK, ProjeKcts e dos três bateristas — e mostra corretamente nenhum da formação de 1974 que o gravou, que nunca o tocou ao vivo (números até o momento; o catálogo do MusicBrainz pode crescer).

Ferramentas

FerramentaDescrição
search_release(query, artist="King Crimson", limit=10)Busca de álbuns no MusicBrainz → MBIDs
get_credits(mbid, release_mbid=None)Créditos de performance/produção por faixa, resolvidos no nível de gravação, além de um roster de álbum deduplicado
get_editions(mbid, max_versions=25)Prensagens/reedições físicas via Discogs, preferindo a relação exata MusicBrainz→Discogs em vez de busca difusa
get_artwork(mbid)Capas via Cover Art Archive
get_live_history(query="", artist="King Crimson", year=None, limit=20)Busca de setlist.fm em uma página por local/cidade/ano (sem cache necessário)
refresh_setlist_cache(artist_mbid=<King Crimson>, max_pages=100, max_retries=3, force=False)Busca e cache do histórico completo de shows de um artista no setlist.fm
song_performance_history(song, artist_mbid=<King Crimson>, match="exact")Histórico ao vivo de uma música a partir do cache: by_year, by_tour, by_incarnation
get_incarnations()As eras de formação curadas — membros, instrumentos, lançamentos-chave
refresh_live_releases_cache(artist_mbid=<King Crimson>, max_pages=10, max_retries=3, force=False)Busca os lançamentos ao vivo oficiais do King Crimson no MusicBrainz e os armazena em cache, extraindo uma data de gravação de cada título
song_live_releases(song, artist_mbid=<King Crimson>, match="exact")Encontra lançamentos ao vivo oficiais que capturaram uma música, agrupados por encarnação — compara o cache de setlists com as datas de gravação dos lançamentos ao vivo
refresh_box_sets_cache(discogs_artist_id=70828, artist_mbid=<King Crimson>, force=False)Busca as compilações e box sets do King Crimson no Discogs e armazena suas tracklists em cache
song_box_sets(song, artist_mbid=<King Crimson>, match="exact")Lista box sets / compilações que contêm uma determinada música (do Discogs), com ano, formato, URL do Discogs e contagem de ocorrências

O modelo de encarnações

Oito eras de formação, divididas por mudanças de membros:

idEraAnos
kc_1969Era In the Court1969
kc_1970_1972Era Transicional1970 – Set 1972
kc_1972_1974Era Larks' TonguesOut 1972 – 1974
kc_1981_1984Era Discipline1981 – 1984
kc_1994_1997Era Double Trio / THRAK1994 – 1996
kc_1997_2003Era ProjeKcts / Nuovo Metal1997 – 2003
kc_2008Era 40º Aniversário2008
kc_2014_2021Era dos três bateristas2014 – 2021

As fronteiras são datas, não apenas anos — 1972 em particular se divide na turnê de primavera "Earthbound" da era Islands (Transicional) e na turnê de outono da era Wetton (Larks' Tongues), já que a formação da banda realmente mudou no meio do ano.

As eras de formação são uma questão de interpretação dos fãs, e este é um corte razoável, não o único. A definição completa vive em KING_CRIMSON_INCARNATIONS em src/king_crimson_mcp/server.py — edite-a (membros, lançamentos-chave, fronteiras de data) para corresponder à sua própria visão; a lógica de agregação não precisa mudar.

Música → lançamentos (busca reversa)

"Quais lançamentos têm Red?" é respondido de duas maneiras complementares, porque o catálogo ao vivo do King Crimson se divide claramente em álbuns de show único e compilações de múltiplos shows.

Álbuns ao vivo de show único, mapeados para eras — song_live_releases

Requer dois caches locais, construídos uma vez:

  1. refresh_setlist_cache — cada show e o que foi tocado (já coberto acima).
  2. refresh_live_releases_cache — os lançamentos ao vivo oficiais do King Crimson do MusicBrainz, com uma data de gravação extraída de cada título quando possível.

Ambos são construções únicas: a história da banda é fixa, então nenhum cache precisa ser reconstruído a menos que você queira capturar novas entradas do MusicBrainz.

Como funciona: as datas de performance de uma música vêm do cache de setlists; cada lançamento ao vivo carrega uma data de gravação extraída do título (ex.: "Live in Toronto – June 24, 1974"). Quando a data de gravação de um lançamento coincide com uma data em que a música foi tocada, considera-se que o lançamento contém a música. Esta é uma regra simples e transparente — confiável para álbuns ao vivo de show único.

Limitações conhecidas (por design): o King Crimson tem cerca de 187 lançamentos ao vivo oficiais, dos quais apenas cerca de 87 (até o momento) têm um título que o MusicBrainz consegue converter em uma data de gravação completa — essa é a faixa que song_live_releases pode corresponder com confiança. Os outros ~100 (box sets, compilações, títulos sem data) não podem ser correspondidos dessa forma; song_live_releases relata exatamente quantos foram ignorados em seu campo coverage em vez de subnotificar silenciosamente. Compilações de trechos também são um caso extremo: uma música tocada em um show pode, em princípio, ser correspondida ao lançamento desse show mesmo que o lançamento específico seja um disco de destaques que omita a faixa — a correspondência por data não consegue distinguir "gravado naquela noite" de "incluído no disco".

Box sets e compilações, listados — song_box_sets

Os box sets e compilações de múltiplos shows que song_live_releases não consegue corresponder por data são cobertos aqui, via Discogs. Ele filtra os lançamentos do King Crimson no Discogs para compilações e box sets (formato contém "Comp" ou "Box" — o que exclui downloads de show único) e lista aqueles cuja tracklist contém a música: título, ano, formato, link do Discogs e quantas vezes a música aparece em cada um.

Por que não há agrupamento por era aqui: o Discogs não estrutura datas de gravação por faixa, então um box set não pode ser dividido em eras como os álbuns de show único. song_box_sets portanto lista os box sets que contêm uma música em vez de classificá-los — precisão em nível de era é trabalho de song_live_releases. Juntos, eles cobrem as duas metades da pergunta.

Requer seu próprio cache único: execute refresh_box_sets_cache (cerca de um minuto; ~38 box sets/compilações do Discogs, até o momento). Requer DISCOGS_TOKEN.

Para Red, song_box_sets retorna 14 box sets/compilações (os volumes "Collectors' King Crimson", "1972–1974", o "2015 Japan Tour Box", …), enquanto song_live_releases lida com o lado de show único.

A honestidade do relatório de cobertura de ambas as ferramentas é o ponto: os resultados são exatamente tão completos quanto os dados subjacentes permitem, e você (ou o agente chamador) pode ver onde aprofundar em vez de obter uma resposta incompleta silenciosamente.

Início rápido

Três etapas únicas, depois roda dentro do Claude.

Etapa 1 — Instalar uv (uma vez)

uv é uma pequena ferramenta que pode buscar e executar este servidor para você.

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

Feche e reabra seu terminal depois. Para verificar se funcionou:

uv --version

Etapa 2 — Obtenha suas chaves de API gratuitas

Este servidor lê bancos de dados musicais públicos. Dois deles precisam de uma chave gratuita:

  • setlist.fm (histórico de performances ao vivo) — solicite uma chave em https://api.setlist.fm/docs/1.0/index.html
  • Discogs (edições físicas) — crie um token em Discogs → Configurações → Desenvolvedores → Gerar token

Você também define um e-mail de contato (MCP_CONTACT) — o MusicBrainz exige isso para que seus servidores saibam quem está chamando. Qualquer e-mail seu serve.

(MusicBrainz e Cover Art Archive não precisam de chave.)

Etapa 3 — Adicione ao Claude Desktop

Abra o arquivo de configuração do Claude Desktop:

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

Adicione isto (preencha seu e-mail e chaves):

{
  "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"
      }
    }
  }
}

Reinicie o Claude Desktop. As ferramentas do King Crimson aparecerão automaticamente — você não precisa executar nada em um terminal.

Etapa 4 — Primeiro uso

No Claude, peça algo como "Atualize o cache de setlists do King Crimson" uma vez (baixa o histórico completo de shows, ~40 segundos). Depois, tente "Mostre o histórico de performances de Starless" ou "Quais encarnações tocaram 21st Century Schizoid Man?"

Solução de problemas

  • "uvx: command not found" / servidor não inicia no Claude Desktop. uv não está instalado ou não está no seu PATH. Refazer a Etapa 1 e depois sair completamente e reabrir o Claude Desktop. No Windows, talvez seja necessário o caminho completo para uvx no campo command.
  • Um aviso aparece se você executar manualmente em um terminal. Executar uvx king-crimson-mcp diretamente apenas espera silenciosamente por um cliente — isso é normal (ele fala via stdin/stdout). Você não precisa executá-lo manualmente; o Claude Desktop o inicia e para para você. Pressione Ctrl+C para parar.
  • get_editions / ferramentas de setlist retornam um erro sobre chave ausente. A chave de API dessa ferramenta não está definida no bloco env da sua configuração. Veja a Etapa 2.
  • Os dados de setlist parecem incompletos para turnês mais antigas. O setlist.fm é enviado por usuários; alguns shows ou músicas históricas simplesmente não estão registrados lá. Isso é uma limitação de dados, não um bug.

Instalar a partir do PyPI

Para desenvolvedores — o mesmo pacote do Início rápido acima, sem a configuração do 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

Segredos (MCP_CONTACT, DISCOGS_TOKEN, SETLISTFM_API_KEY) vão ou em um arquivo .env no diretório de onde você executa o comando, ou diretamente no bloco env da configuração do Claude Desktop (veja abaixo) — qualquer um é lido. .env é carregado do diretório de trabalho atual, já que um pacote instalado não tem diretório de projeto próprio para mantê-lo.

Configuração a partir do código-fonte (desenvolvimento)

# 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

Variáveis .env:

  • MCP_CONTACT — exigida pela política do MusicBrainz; identifica seu aplicativo para a API deles via cabeçalho User-Agent.
  • DISCOGS_TOKEN — necessária para get_editions (token de acesso pessoal do Discogs).
  • SETLISTFM_API_KEY — necessária para get_live_history, refresh_setlist_cache e song_performance_history.
  • KC_CACHE_DIR — opcional; substitui onde o cache de setlists é gravado (veja abaixo).

Execução

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

Execute refresh_setlist_cache uma vez primeiro — ele busca o histórico completo de shows do King Crimson (~1.200 shows, ~40 segundos) e o armazena localmente em $XDG_CACHE_HOME/king-crimson-mcp (ou ~/.cache/king-crimson-mcp; substitua com KC_CACHE_DIR) como setlists_<artist_mbid>.json. Depois disso, song_performance_history lê do cache e retorna instantaneamente.

Execute refresh_live_releases_cache uma vez também se quiser song_live_releases — ele grava live_releases_<artist_mbid>.json junto ao cache de setlists, no mesmo diretório. refresh_box_sets_cache da mesma forma grava box_sets_<artist_mbid>.json lá, para song_box_sets.

Registrar com o Claude Desktop

Usando o pacote publicado:

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

Ou, executando a partir de um clone local (após uv pip install -e ., que instala o mesmo script de console king-crimson-mcp no venv):

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

Segredos podem residir em .env (no diretório de onde o comando é executado) em vez do bloco env — qualquer um é lido.

Fontes de dados e atribuição

Este projeto é um cliente não oficial sem afiliação ou endosso da MusicBrainz, da Fundação MetaBrainz, do Internet Archive, do Discogs ou do setlist.fm.

  • MusicBrainz — gratuito, sem chave de API. Requer um User-Agent identificável com informações de contato (limite de taxa: 1 req/seg). Os dados são em grande parte CC0; creditar a MusicBrainz no seu aplicativo é uma boa prática. refresh_live_releases_cache também usa isso: ele lista os grupos de lançamentos ao vivo oficiais do King Crimson (type=live) — nenhum serviço ou chave adicional envolvido.
  • Cover Art Archive — um projeto conjunto da MusicBrainz / Internet Archive. As imagens são contribuídas por uploaders individuais; siga a mesma etiqueta de atribuição da MusicBrainz.
  • Discogs — requer um token de acesso pessoal e um User-Agent único (60 req/min autenticado). O uso está sujeito aos termos de serviço da API do Discogs. song_box_sets usa a mesma API do Discogs que get_editions (nenhum serviço ou chave adicional).
  • setlist.fm — requer uma chave de API (solicite em api.setlist.fm). Qualquer exibição de dados do setlist.fm deve incluir um link de atribuição para o setlist de origem — cada performance retornada por este servidor inclui seu url exatamente para esse fim; exiba-o onde quer que você mostre os dados. Os dados do setlist.fm são enviados pelos usuários, portanto, integridade e precisão não são garantidas.

Limitações

  • Os dados do setlist.fm são enviados pelos usuários — alguns shows ou músicas podem estar ausentes ou incorretos, especialmente de turnês mais antigas.
  • Os limites de encarnação são uma interpretação da história da formação do King Crimson, não uma taxonomia oficial.
  • Os créditos dos intérpretes dependem do que a MusicBrainz catalogou para um determinado lançamento; lançamentos mais esparsos geram créditos mais esparsos.
  • song_live_releases só pode corresponder a lançamentos ao vivo cujo título produza uma data de gravação completa (cerca de metade dos ~187 lançamentos ao vivo oficiais do King Crimson); veja Música → lançamentos acima para o que está fora de alcance e por quê.
  • song_box_sets não consegue classificar box sets por encarnação — o Discogs não estrutura datas de gravação por faixa, então ele lista box sets/compilações correspondentes em vez de agrupá-los por era. Algumas das ~38 compilações que ele examina são coleções de vários artistas em que o King Crimson contribuiu com apenas uma faixa; elas podem aparecer como ruído para títulos de músicas muito comuns.

Licença

MIT — veja LICENSE.