ytkoka

King Crimson Discography MCP Server

Community ytkoka
Updated

An MCP server that surfaces King Crimson record and live-performance data — including a curated incarnation (line-up era) model that shows how each song belongs to specific eras of the band.

King Crimson Discography MCP Server

日本語版: README.ja.md

An MCP server that surfaces King Crimson record and live-performance data — including a curated incarnation (line-up era) model that shows how each song belongs to specific eras of the band.

What makes this different

Generic MusicBrainz/Discogs MCP servers can already fetch releases, credits, and pressings. This server does that too, but adds two things a band-agnostic discography tool structurally can't have:

  • A cross-source integration layer keyed on MBID. MusicBrainz, Discogs, Cover Art Archive, and setlist.fm are stitched together so one release-group MBID gets you credits, physical editions, artwork, and live history without re-resolving identities per source.

  • A King Crimson incarnation model. King Crimson's line-up turned over almost completely, many times, over five decades — the same song can mean a totally different band depending on the year. This server hand-curates eight line-up eras and cross-references every tracked song's live-performance history against them:

    Song Incarnations it appears in
    "21st Century Schizoid Man" Spread across every era — the band's signature
    "Starless" Only the Larks' Tongues era and the Three-drummer era
    "Elephant Talk" Born in the Discipline era, gone by the Three-drummer era
  • A local, offline-first concert cache. Full concert history (1,200+ shows) is fetched once via refresh_setlist_cache and cached as JSON. Every subsequent song/tour/era query reads the cache — instant, and immune to setlist.fm's intermittent rate-limit failures during analysis.

Tools

Tool Description
search_release(query, artist="King Crimson", limit=10) MusicBrainz album search → MBIDs
get_credits(mbid, release_mbid=None) Per-track performer/production credits, resolved at the recording level, plus a deduplicated album roster
get_editions(mbid, max_versions=25) Physical pressings/reissues via Discogs, preferring the exact MusicBrainz→Discogs relation over fuzzy search
get_artwork(mbid) Cover art via the Cover Art Archive
get_live_history(query="", artist="King Crimson", year=None, limit=20) One-page setlist.fm search by venue/city/year (no cache needed)
refresh_setlist_cache(artist_mbid=<King Crimson>, max_pages=100, max_retries=3, force=False) Fetch and cache an artist's complete concert history from setlist.fm
song_performance_history(song, artist_mbid=<King Crimson>, match="exact") A song's live history from the cache: by_year, by_tour, by_incarnation
get_incarnations() The curated line-up eras — members, instruments, key releases

The incarnation model

Eight line-up eras, split on membership changes:

id Era Years
kc_1969 In the Court era 1969
kc_1970_1972 Transitional era 1970 – Sep 1972
kc_1972_1974 Larks' Tongues era Oct 1972 – 1974
kc_1981_1984 Discipline era 1981 – 1984
kc_1994_1997 Double Trio / THRAK era 1994 – 1996
kc_1997_2003 ProjeKcts / Nuovo Metal era 1997 – 2003
kc_2008 40th Anniversary era 2008
kc_2014_2021 Three-drummer era 2014 – 2021

Boundaries are dates, not just years — 1972 in particular splits into the Islands-era "Earthbound" spring tour (Transitional) and the Wetton-era autumn tour (Larks' Tongues), since the band's membership genuinely changed mid-year.

Line-up eras are a matter of fan interpretation, and this is one reasonable cut, not the only one. The full definition lives in KING_CRIMSON_INCARNATIONS in src/king_crimson_mcp/server.py — edit it (members, key releases, date boundaries) to match your own view; the aggregation logic doesn't need to change.

Install from PyPI

The easiest way to run the server — no clone, no venv:

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

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

Secrets (MCP_CONTACT, DISCOGS_TOKEN, SETLISTFM_API_KEY) go either in a .env file in the directory you run the command from, or directly in the Claude Desktop config's env block (see below) — either is read. .env is loaded from the current working directory, since an installed package has no project directory of its own to keep one in.

Setup from source (development)

# 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

.env variables:

  • MCP_CONTACT — required by MusicBrainz policy; identifies your app to their API via the User-Agent header.
  • DISCOGS_TOKEN — needed for get_editions (Discogs personal access token).
  • SETLISTFM_API_KEY — needed for get_live_history, refresh_setlist_cache, and song_performance_history.
  • KC_CACHE_DIR — optional; overrides where the setlist cache is written (see below).

Running

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

Run refresh_setlist_cache once first — it fetches King Crimson's full concert history (~1,200 shows, ~40 seconds) and caches it locally under $XDG_CACHE_HOME/king-crimson-mcp (or ~/.cache/king-crimson-mcp; override with KC_CACHE_DIR). After that, song_performance_history reads from the cache and returns instantly.

Register with Claude Desktop

Using the published package:

{
  "mcpServers": {
    "king-crimson": {
      "command": "uvx",
      "args": ["king-crimson-mcp"],
      "env": {
        "MCP_CONTACT": "[email protected]",
        "DISCOGS_TOKEN": "...",
        "SETLISTFM_API_KEY": "..."
      }
    }
  }
}

Or, running from a local clone instead (after uv pip install -e ., which installs the same king-crimson-mcp console script into the venv):

{
  "mcpServers": {
    "king-crimson": {
      "command": "/absolute/path/to/.venv/bin/king-crimson-mcp",
      "env": { "MCP_CONTACT": "[email protected]" }
    }
  }
}

Secrets can live in .env (in the directory the command is run from) instead of the env block — either is read.

Data sources & attribution

This project is an unofficial client with no affiliation with or endorsement from MusicBrainz, the MetaBrainz Foundation, the Internet Archive, Discogs, or setlist.fm.

  • MusicBrainz — free, no API key. Requires an identifying User-Agent with contact info (rate limit: 1 req/sec). Data is largely CC0; crediting MusicBrainz in your app is good practice.
  • Cover Art Archive — a joint MusicBrainz / Internet Archive project. Images are contributed by individual uploaders; follow the same attribution etiquette as MusicBrainz.
  • Discogs — requires a personal access token and a unique User-Agent (60 req/min authenticated). Use is subject to the Discogs API terms of service.
  • setlist.fm — requires an API key (apply at api.setlist.fm). Any display of setlist.fm data must include an attribution link to the source setlist — every performance returned by this server includes its url for exactly that purpose; surface it wherever you show the data. setlist.fm data is user-submitted, so completeness and accuracy are not guaranteed.

Limitations

  • setlist.fm data is user-submitted — some shows or songs may be missing or incorrect, especially from older tours.
  • The incarnation boundaries are one interpretation of King Crimson's line-up history, not an official taxonomy.
  • Performer credits depend on what MusicBrainz has cataloged for a given release; sparser releases yield sparser credits.

License

MIT — see LICENSE.

MCP Server · Populars

MCP Server · New

    DROOdotFOO

    Raxol

    Write one app, render it to a terminal, a browser, or as agent tools. The terminal for your Gundam.

    Community DROOdotFOO
    morluto

    REA: Reverse Engineer Anything

    Reverse engineer anything with agents, from app behavior down to native binaries.

    Community morluto
    nedlir

    MCPwner

    Model Context Protocol server for autonomous vulnerability discovery

    Community nedlir
    codegraph-ai

    CodeGraph

    CodeGraph builds a semantic graph of your codebase — functions, classes, imports, call chains — and exposes it through 42 MCP tools, 38 languages, a VS Code extension, and a persistent memory layer. AI agents get structured code understanding instead of grepping through files.

    Community codegraph-ai
    getArbor-dev

    Arbor

    Graph-native code intelligence that replaces embedding-based RAG with deterministic program understanding.

    Community getArbor-dev