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úsica Encarnaçõ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_cachee 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
| Ferramenta | Descriçã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:
| id | Era | Anos |
|---|---|---|
kc_1969 | Era In the Court | 1969 |
kc_1970_1972 | Era Transicional | 1970 – Set 1972 |
kc_1972_1974 | Era Larks' Tongues | Out 1972 – 1974 |
kc_1981_1984 | Era Discipline | 1981 – 1984 |
kc_1994_1997 | Era Double Trio / THRAK | 1994 – 1996 |
kc_1997_2003 | Era ProjeKcts / Nuovo Metal | 1997 – 2003 |
kc_2008 | Era 40º Aniversário | 2008 |
kc_2014_2021 | Era dos três bateristas | 2014 – 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:
refresh_setlist_cache— cada show e o que foi tocado (já coberto acima).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.
uvnã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 parauvxno campocommand. - Um aviso aparece se você executar manualmente em um terminal.
Executar
uvx king-crimson-mcpdiretamente 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 blocoenvda 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 paraget_editions(token de acesso pessoal do Discogs).SETLISTFM_API_KEY— necessária paraget_live_history,refresh_setlist_cacheesong_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_cachetambé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_setsusa a mesma API do Discogs queget_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
urlexatamente 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_releasessó 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_setsnã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.