THIRI Chord Intelligence — Music Theory MCP Server
The THIRI Chord Intelligence server is a deterministic music theory engine providing the following capabilities:
Analyze chords (
analyze_chord): Parse any chord symbol (e.g.Dm7b5,G7#11) into its root, quality, intervals, and extensions. When a key is provided, returns the Roman numeral, scale degree, harmonic function (e.g. secondary dominants, modal interchange), and whether the chord is diatonic.Resolve chords to notes (
resolve_chord): Convert a chord symbol into enharmonically correct spelled note names, frequencies in Hz, MIDI numbers, and recommended improvisation scales.Generate instrument-ready voicings (
generate_voicing): Produce voicings in multiple styles — rootless, shell, triad, pad, guide-tones, drop-2, drop-3, Bill Evans, and more. Supports explicit tension/color preferences (b9, #11, b13, etc.), octave and density control, and voice-leading scoring by passing in the previous voicing.Reharmonize progressions (
reharmonize): Apply jazz reharmonization techniques including tritone substitution, ii-V insertion, modal interchange, diminished passing chords, secondary dominants, chain of dominants, Coltrane changes, and backdoor dominants — or useautoto get every applicable technique at once, each with an explanation.Conduct a band (
conduct_band): Generate musical lanes and MIDI data from natural-language band direction descriptions, suitable for further audio rendering.
Provides correct chord charts and music theory analysis for outputs from Suno or similar generative music platforms, enabling reliable chord labeling and reharmonization.
🎷 THIRI Chord Intelligence — MCP Server
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.
What you can ask
"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
Related MCP server: Music MCP
Tools
Tool | What it does |
| Chord → root, quality, intervals, roman numeral & harmonic function (secondary dominants, modal-interchange labels) |
| Chord → spelled notes (enharmonically correct), frequencies, MIDI, scale recommendations |
| Instrument-ready voicings (rootless/bill_evans, shell, triad, pad, guide-tones, drop-2/3); pass |
| Progression reharmonization — 8 techniques: |
| 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.
Local Csound MCP (Desktop only)
For hear-it agent loops (conduct → Csound score → WAV), add a second local server alongside hosted theory tools:
{
"mcpServers": {
"thiri": {
"command": "npx",
"args": ["-y", "@bluesprincemedia/thiri-mcp"],
"env": { "THIRI_API_KEY": "sk_live_your_key" }
},
"thiri-conductor": {
"command": "npx",
"args": ["-y", "@bluesprincemedia/thiri-mcp", "thiri-conductor-mcp"],
"env": { "THIRI_API_KEY": "sk_live_your_key" }
},
"thiri-composition": {
"command": "npx",
"args": ["-y", "@bluesprincemedia/thiri-mcp", "thiri-composition-mcp"]
}
}
}Bin | Tools |
|
|
| Composition IR tools + |
Requires Csound CLI on PATH for WAV render. Proof: npm run test:conductor · live docs: build.thiri.ai/lab/conductor-mcp · agent recipes.
Conductor Agent (vibe compose)
End-to-end persona for local vibe composition — skill, CLI, and Band dashboard panel:
Entry | Command / path |
Cursor skill | Copy |
CLI |
|
Dashboard |
|
Lab proof |
Dual MCP config above + mapConductResultToStudioModules after each conduct_band. Last CLI render writes ~/.thiri/conductor-last.json (local only, not committed).
Flagship agent recipe (analyze → conduct → render → critique)
Paste in order after dual MCP config above:
Analyze — "Analyze Dm7 G7 Cmaj7 in key C with analyze_chord; summarize roman numerals and tension."
Conduct — "conduct_band: warm Rhodes pad, walking bass, brush drums, 8 bars medium swing in C."
Render — "build_csound_score from lanes, then render_csound_wav at tempo 120."
Critique — "play_audio; critique voice-leading and register balance; suggest one revision."
Full prompts: build.thiri.ai/lab/agent-recipes
Hosted vs local boundary
Surface | Csound WAV |
| No — theory + |
Local | Yes — requires Csound CLI on your machine |
Install
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 4 tools, same key, same quota — no config file, no npx.
Claude Code (one line):
claude mcp add thiri --env THIRI_API_KEY=sk_live_your_key -- npx -y @bluesprincemedia/thiri-mcpClaude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"thiri": {
"command": "npx",
"args": ["-y", "@bluesprincemedia/thiri-mcp"],
"env": { "THIRI_API_KEY": "sk_live_your_key" }
}
}
}Prefer raw HTTP? (no MCP needed)
The same engine is a plain REST API:
curl -X POST https://chords.thiri.ai/v2/analyze \
-H "Authorization: Bearer YOUR_KEY" -H "content-type: application/json" \
-d '{"chord":"Dm7b5","key":"C"}'Four endpoints: /v2/analyze, /v2/resolve, /v2/voicing, /v2/reharmonize, /v2/conduct. See openapi.yaml.
Environment variables
Variable | Default | Description |
| (none) | Bearer token ( |
|
| API base (override only for local dev) |
Development
npm install && npm run build && npm startLicense
MIT — © 2026 Blues Prince Media. The client is open; the engine is a hosted service.
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/BluesPrince/thiri-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server