Deterministic MCP tools for chord analysis, note resolution, voicing, reharmonization, and band conducting.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
This server is confirmed live β we successfully called its tools/list endpoint directly (see the verified badge above). We haven't yet sandbox-tested the stdio install command below specifically, which is a separate, ongoing check.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Thiri MCP.
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.
resolve_chordResolve a chord symbol to spelled note names, frequencies in Hz, MIDI numbers, and recommended improvisation scales.
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.)
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.
Give your AI real music theory. THIRI is the deterministic music theory MCP server + API for AI builders β it lets Claude, Cursor, or any MCP agent analyze chords, run roman-numeral analysis, generate voicings, and reharmonize progressions with answers that are computed, not guessed.
LLMs hallucinate music theory: wrong notes, fake roman numerals, voicings that don't voice-lead. THIRI is a deterministic engine (pitch-class-set theory over β€/12) behind a hosted API β so C7sus4 keeps its suspension, Caug spells C E G#, and "Coltrane changes on Dm7 G7 Cmaj7" returns Cmaj7 Ab7 Abmaj7 E7, every time.
Downstream of Suno / Udio or any generator? Wrap the output and get a correct chord chart your agent can trust. And unlike tonal.js or music21, THIRI is hosted and agent-native (no install, any language) β and it reharmonizes and voice-leads, not just looks chords up.
β If this is useful, star the repo β it helps other musicians and agent builders find it.
π₯ Join the First 55 AI Music Builders: Want elevated rate limits (300 req/min), direct founder support, and early access to upcoming tools? Join our developer community on Skool β Blues People AI.
https://mcp.thiri.ai/mcp β paste your sk_live_ keyThat's it β no install, no config file. Builders: full install options (Claude Code, Desktop config, raw HTTP) are below.
"Analyze Dm7b5 in C." β
iiΓΈ7, half-diminished, borrowed predominant, + scale options "What notes are in C7sus4?" βC F G Bb(the suspension survives) "Give me a rootless Cmaj7 voicing, then voice-lead into Dm7." β voicings + a voice-leading score "Reharmonize Dm7 G7 Cmaj7 with Coltrane changes." βCmaj7 Ab7 Abmaj7 E7
| Tool | What it does |
|---|---|
analyze_chord | Chord β root, quality, intervals, roman numeral & harmonic function (secondary dominants, modal-interchange labels) |
resolve_chord | Chord β spelled notes (enharmonically correct), frequencies, MIDI, scale recommendations |
generate_voicing | Instrument-ready voicings (rootless/bill_evans, shell, triad, pad, guide-tones, drop-2/3); pass previousNotes for a voice-leading score; colorPreferences for explicit tensions |
reharmonize | Progression reharmonization β 8 techniques: tritone_sub, ii_v_insertion, modal_interchange, diminished_passing, secondary_dominant, chain_of_dominants, coltrane_changes, backdoor (or auto) |
conduct_band | Natural-language band conduct β lanes + MIDI (hosted MCP v0.3+) |
Runs on the v2 grid engine β correct sus chords, real triads, enharmonic spelling, all altered dominants β with request timeouts, quota reporting, and structured errors.
For hear-it agent loops (conduct β server-side render β WAV through your speakers), add a second local server alongside hosted theory tools:
| Bin | Tools |
|---|---|
thiri-conductor-mcp | conduct_band, render_audio (server-side Csound via POST /v2/render), play_audio, search_corpus |
thiri-composition-mcp | Composition IR tools + play_composition (fluidsynth preview) |
Rendering runs server-side as of v0.5.0 β no Csound install needed. Proof: npm run test:conductor Β· live docs: build.thiri.ai/lab/conductor-mcp Β· agent recipes.
End-to-end persona for local vibe composition β skill, CLI, and Band dashboard panel:
| Entry | Command / path |
|---|---|
| Cursor skill | Copy THIRI/lab/skills/thiri-conductor-agent/SKILL.md β ~/.cursor/skills/thiri-conductor-agent/SKILL.md |
| CLI | cd thiri-mcp && npm run conductor:vibe -- "gospel ballad in F minor" |
| Dashboard | npm run dev:studio β localhost:5173/band β Vibe Conduct panel |
| Lab proof | build.thiri.ai/lab/conductor-agent |
Dual MCP config above + mapConductResultToStudioModules after each conduct_band. Last CLI render writes ~/.thiri/conductor-last.json (local only, not committed).
Paste in order after dual MCP config above:
Full prompts: build.thiri.ai/lab/agent-recipes
| Surface | Audio render |
|---|---|
mcp.thiri.ai / hosted connector | No β theory + conduct_band lanes only |
Local thiri-conductor-mcp | Yes β WAV rendered server-side (POST /v2/render), played locally; no Csound install needed |
Get a free key at build.thiri.ai/developers, then pick a path:
Claude Desktop / web / mobile β hosted (one-click custom connector, nothing to install):
Settings β Connectors β Add custom connector β URL https://mcp.thiri.ai/mcp β paste your sk_live_ key on the consent page. Same 5 tools, same key, same quota β no config file, no npx.
Claude Code (one line):
Claude Desktop (claude_desktop_config.json):
The same engine is a plain REST API:
Five endpoints: /v2/analyze, /v2/resolve, /v2/voicing, /v2/reharmonize, /v2/conduct. See openapi.yaml.
| Variable | Default | Description |
|---|---|---|
THIRI_API_KEY | (none) | Bearer token (sk_live_β¦) β get one at build.thiri.ai/developers |
THIRI_API_URL | https://chords.thiri.ai | API base (override only for local dev) |
PolyForm Noncommercial 1.0.0 β Β© 2026 Blues Prince Media. Free for personal,
research, and noncommercial use; commercial use requires a license
(dennison@bluesprincemedia.com). See LICENSE. Versions published at or
before v0.5.0 remain under the MIT/PolyForm dual license they shipped with.
As of v0.5.0 the composition engine and Csound renderer run server-side behind the hosted API (
POST /v2/compose,POST /v2/render); their source no longer ships in this package.
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/bluesprince-thiri-mcp)<a href="https://allmcps.com/mcp/bluesprince-thiri-mcp"><img src="https://allmcps.com/api/badge/bluesprince-thiri-mcp?style=directory" alt="Thiri MCP on AllMCPs" /></a>