analyze_chord
Parse a chord symbol into its root, quality, intervals, extensions, and harmonic function. When a key is provided, returns the Roman numeral, scale degree, and whether the chord is diatonic.
Music theory that is computed rather than guessed — chord analysis, voicings, reharmonisation and voice leading.
LABSCO SUMMARY
Models hallucinate music theory in a way that sounds plausible and is not — wrong notes, invented Roman numerals, voicings that lead nowhere. This computes over pitch-class sets instead, so the same question returns the same correct answer, and the voice-leading score is a number rather than a claim.
A deterministic music theory engine behind a hosted API. It parses a chord symbol into root, quality, intervals and harmonic function, spells the notes enharmonically correctly, generates instrument-ready voicings with a voice-leading score, and reharmonises a progression using named jazz techniques.
Two ways in. Hosted: add https://mcp.thiri.ai/mcp as a custom connector and paste your sk_live_ key — no install. Local: the npm package @bluesprincemedia/thiri-mcp over stdio with THIRI_API_KEY in the environment. Free keys come from build.thiri.ai/developers. The conductor and composition binaries are desktop-only and run alongside the main server; rendering happens server-side, so no local Csound install is needed.
One command plus a key — claude mcp add thiri --env THIRI_API_KEY=<YOUR_THIRI_API_KEY> -- npx -y @bluesprincemedia/thiri-mcp
USE CASES
Spelled note names, frequencies and MIDI numbers, with the harmonic reading alongside them.
Give the key and get the numeral, the scale degree and whether the chord is borrowed.
Pass the previous voicing and get a scored transition rather than an isolated chord shape.
Name the technique, or ask for every technique that applies, each with an explanation of what changed.
A natural-language prompt becomes tempo, groove, four instrument lanes, a lead sheet and MIDI.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
analyze_chordParse a chord symbol into its root, quality, intervals, extensions, and harmonic function. When a key is provided, returns the Roman numeral, scale degree, and whether the chord is diatonic.
conduct_bandArrange a 4-piece band from a natural-language prompt. Returns conductor tempo/groove, 4 lanes of note events, lead sheet, and base64 MIDI. Browser/client synthesizes audio via Csound; use thiri-conductor-mcp locally to render WAV.
generate_voicingGenerate instrument-ready voicings for a chord in a specified style. Pass previousNotes (or a previousVoicing object) from an earlier result to get a voiceLeadingScore for the transition. Styles: rootless, bill_evans, shell, triad, pad, guide-tones, guide-tone-1, guide-tone-2, both-guide-tones, drop-2, drop-3.
reharmonizeReharmonize a chord progression using jazz techniques. Returns one alternative per applicable technique, each with the new progression, the changes, and a plain-English explanation. With technique 'auto' (default) it returns every technique that applies. Techniques: tritone_sub, ii_v_insertion, modal_interchange, diminished_passing, secondary_dominant, chain_of_dominants, coltrane_changes, backdoor. (modal_interchange and backdoor require a key.)
resolve_chordResolve a chord symbol to spelled note names, frequencies in Hz, MIDI numbers, and recommended improvisation scales.
BEFORE YOU INSTALL
5 tools when we connected. The package also ships thiri-conductor-mcp and thiri-composition-mcp, separate servers with their own tools. The hosted connector exposes the same 5.
CONTEXT COST
Rated by the size of the 5 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
claude mcp add thiri --env THIRI_API_KEY=<YOUR_THIRI_API_KEY> -- npx -y @bluesprincemedia/thiri-mcphttps://mcp.thiri.ai/mcpAdd this hosted endpoint to your MCP client using the credentials listed under Requirements.
Settings → Connectors → Add custom connector → URL https://mcp.thiri.ai/mcp → paste your sk_live_ key on the consent page
{
"mcpServers": {
"thiri": {
"command": "npx",
"args": [
"-y",
"@bluesprincemedia/thiri-mcp"
],
"env": {
"THIRI_API_KEY": "<YOUR_THIRI_API_KEY>"
}
}
}
}{
"mcpServers": {
"thiri": {
"command": "npx",
"args": [
"-y",
"@bluesprincemedia/thiri-mcp"
],
"env": {
"THIRI_API_KEY": "<YOUR_THIRI_API_KEY>"
}
},
"thiri-conductor": {
"command": "npx",
"args": [
"-y",
"-p",
"@bluesprincemedia/thiri-mcp",
"thiri-conductor-mcp"
],
"env": {
"THIRI_API_KEY": "<YOUR_THIRI_API_KEY>"
}
},
"thiri-composition": {
"command": "npx",
"args": [
"-y",
"-p",
"@bluesprincemedia/thiri-mcp",
"thiri-composition-mcp"
]
}
}
}