PlayByKey Music Theory MCP server
com.playbykey/theory-mcp·v1.6.0·1 starsChords, scales, progressions, transposition, and MIDI tools for music theory AI agents.
1 stars76 downloads/wk
Reviews
Write oneNobody has reviewed PlayByKey Music Theory yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
PlayByKey Music Theory tools (32)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
build_note_mapReturns structured per-note data for a scale: note name, scale degree (1-based), and semitone offset from root.
get_available_inversionsReturns the valid inversion numbers for a chord type, based on its note count.
get_bebop_scale_notesReturns the eight notes of a bebop scale variant for a root - a diatonic scale plus one chromatic passing tone.
get_chord_by_degreeReturns the diatonic chord at a specific scale degree (1-7) for a key/mode.
get_chord_inversionReorders a chord's notes so the given inversion's chord tone is lowest.
get_chord_notesReturns the notes of a chord given a root and chord type.
get_circle_of_fifthsReturns all 12 chromatic notes in ascending-fifths order starting from C.
get_diatonic_chordsReturns the 7 diatonic triads for a key/mode, one per scale degree, in degree order.
get_enharmonic_labelsReturns combined sharp/flat display labels for a list of sharp-spelled notes, e.g. ["C#", "D"] -> ["Db/C#", "D"]. Natural notes are unaffected. Input must already be sharp-spelled - use get_sharps first if you have flat-spelled notes.
get_flatsRespells a list of sharp-spelled notes as flats, e.g. ["C#", "D"] -> ["Db", "D"]. Natural notes are unaffected. Input must already be sharp-spelled (as returned by get_scale_notes, get_mode_notes, etc.) - use get_sharps first if you have flat-spelled notes.
get_harmonic_minor_mode_notesReturns the seven notes of a harmonic minor mode for a root.
get_key_signatureReturns the sharp or flat count for a given key, treated as a major-key tonic (minor-key signatures are not exposed by this tool).
get_melodic_minor_mode_notesReturns the seven notes of a melodic minor mode for a root.
get_melodic_minor_notesReturns the seven notes of the ascending melodic minor scale for a root.
get_modal_rootReturns the root note of a mode within a given parent (Ionian/major) key.
get_mode_infoReturns display metadata for a mode: name, scale degree, and characteristic description.
get_mode_notesReturns the 7 notes of a diatonic mode for a given root note.
get_parent_scale_modesReturns all 7 modal rotations of the parent key for a given root and mode.
get_progression_in_keyRenders a named catalog progression as chords in a given key, in order.
get_relative_majorReturns the relative major root for a minor key.
get_relative_minorReturns the relative minor root for a major key.
get_roman_numeralReturns the roman numeral for a scale degree in a mode - case and suffix reflect diatonic triad quality.
get_scale_degreeReturns the 1-based scale degree of a note within a root + scale type, or null if the note is not in the scale.
get_scale_notesReturns the notes of a scale by type. Covers all ScaleType values: major, blues, pentatonic-major, pentatonic-minor, harmonic-minor, melodic-minor, chromatic.
get_semitone_distanceReturns the ascending semitone distance between two notes (0-11).
get_sharpsRespells a list of notes to canonical sharp spelling, e.g. ["Db", "C#", "D"] -> ["C#", "C#", "D"]. Most tools accept flat-spelled input directly, but get_flats and get_enharmonic_labels require sharp-spelled input - use this to normalize flat-spelled notes before calling those two.
is_note_in_scaleReturns true if the given note is present in the specified root + scale type, false otherwise.
midi_to_noteReturns the note and octave for a given MIDI note number - the inverse of note_to_midi.
note_to_frequencyReturns the frequency in Hz for a note at a given octave, equal temperament, A4 = 440Hz.
note_to_midiReturns the MIDI note number for a note at a given octave, using scientific pitch notation (C4 = middle C = MIDI 60).
resolve_intervalReturns the from-note and to-note for a named interval within a root context.
transposeTransposes a set of notes from one key to another by the semitone distance between the two roots.
Public scan report
scanner v0.1.9 · 2026-09-24 · same rubric, same numbers if you re-run it
- Code scan3 source files scanned20/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 10 days ago15/15
- Maintainer identitynamespace and repository owner differ; GitHub account older than a year6/10
Findings (1)
- mediumeval / new Function used
exec.evaldist/index.js: …ode, sch); const makeValidate = new Function(`${names_1.default.self}`, `${names_1.de…
How PlayByKey Music Theory compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 82/100
- higher than 63% of 48,255 servers
- Tools
- 32
- the typical server has 7
- Tools that change things
- 0%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 1
- more than 65% of 28,688 servers
- Downloads a week
- 76
- more than 56% of 12,191 servers with a package
What its tools let an agent do: 32 read
Install PlayByKey Music Theory in Claude Code, Cursor or VS Code
Runs npx -y @playbykey/theory-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add theory-mcp -- npx -y @playbykey/theory-mcp
What the publisher says
From the PlayByKey Music Theory repository's README, as published. We do not edit it. Read it on GitHub
Developer Tools
Packages for PlayByKey - see the table below for what's here.
- npm: npmjs.com/package/@playbykey/theory
- Documentation: theory-engine.docs.playbykey.com - interactive playgrounds
- Changelog: GitHub Releases
Install
npm install @playbykey/theory
pnpm add @playbykey/theory
yarn add @playbykey/theory
bun add @playbykey/theoryQuickstart and API examples: packages/theory/README.md
Why @playbykey/theory
- Foundation music theory engine: music theory as code. Modes, keys, intervals, and scale relationships resolved deterministically; one source of truth every app, notation tool, or AI agent can build on.
- Zero dependencies: no transitive baggage; safe for agents, edge runtimes, and tight bundles
- Strictly typed: every function's types exported alongside it, no any
- Agent-ready: copy-paste LLM context prompt and interactive docs
- Sharps-only notation: one canonical spelling per note (C#, not Db) keeps the Note type safe and unambiguous. Flats are fully supported for both input (parseNote/parseNoteToken accept Db, Eb, Gb, Ab, Bb) and output (getFlats/getEnharmonicLabels), without extending Note itself.
Packages
License
MIT for the repository tooling and @playbykey/theory. See LICENSE. Individual packages may declare their own license in their package.json.
Nothing above is checked by us. What we check is on the safety report.
PlayByKey Music Theory: common questions
- Is PlayByKey Music Theory MCP server safe?
- Mostly: it is graded B (82/100). Read the PlayByKey Music Theory safety report
- How do I install PlayByKey Music Theory?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does PlayByKey Music Theory need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is PlayByKey Music Theory maintained?
- The last commit was 51 days ago (2026-09-14). The latest release is v1.6.0.
- How does PlayByKey Music Theory compare with other MCP servers?
- safety score 82/100 (higher than 63% of 48,255 servers); tools 32 (the typical server has 7); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.