npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@bluesprincemedia/thiri-mcp

v0.2.3

Published

Deterministic music theory MCP server + REST API for AI builders — analyze chords, roman-numeral analysis, voicings, and reharmonization, computed not guessed.

Downloads

642

Readme

🎷 THIRI Chord Intelligence — MCP Server

npm license MCP

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

Tools

| 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) |

Runs on the v2 grid engine — correct sus chords, real triads, enharmonic spelling, all altered dominants — with request timeouts, quota reporting, and structured errors.

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-mcp

Claude 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. See openapi.yaml.

Environment variables

| 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) |

Development

npm install && npm run build && npm start

License

MIT — © 2026 Blues Prince Media. The client is open; the engine is a hosted service.