Deterministic music theory for agents: analyze, voice, reharmonize, conduct — computed, not guessed
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Parse a chord into root, quality, intervals, and (with a key) roman numeral + function. Numerals use the jazz convention by default (Cmaj7 in Am = ♭IIIΔ7); both jazz and classical numerals are always returned in `numerals`, and other valid readings in `alternatives`. Pass `scale` to read a minor key as harmonic or melodic minor.
Scale to read the key in. Default: major, or natural minor with the harmonic-minor V for minor keys.
Which numeral convention fills `numeral`. Default: jazz.
Parse a chord into root, quality, intervals, and (with a key) roman numeral + function. Numerals use the jazz convention by default (Cmaj7 in Am = ♭IIIΔ7); both jazz and classical numerals are always returned in `numerals`, and other valid readings in `alternatives`. Pass `scale` to read a minor key as harmonic or melodic minor.
| Argument | Type | Description |
|---|---|---|
| key | string | |
| chord* | string | |
| scale | string | Scale to read the key in. Default: major, or natural minor with the harmonic-minor V for minor keys. |
| convention | string | Which numeral convention fills `numeral`. Default: jazz. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"chord"
],
"properties": {
"key": {
"type": "string"
},
"chord": {
"type": "string"
},
"scale": {
"enum": [
"major",
"natural_minor",
"harmonic_minor",
"melodic_minor"
],
"type": "string",
"description": "Scale to read the key in. Default: major, or natural minor with the harmonic-minor V for minor keys."
},
"convention": {
"enum": [
"jazz",
"classical"
],
"type": "string",
"description": "Which numeral convention fills `numeral`. Default: jazz."
}
}
}Instrument-ready voicing in a style; pass previousNotes for a voice-leading score.
| Argument | Type | Description |
|---|---|---|
| chord* | string | |
| style | string | |
| octave | number | |
| keyContext | string | |
| previousNotes | array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"chord"
],
"properties": {
"chord": {
"type": "string"
},
"style": {
"type": "string"
},
"octave": {
"type": "number"
},
"keyContext": {
"type": "string"
},
"previousNotes": {
"type": "array",
"items": {
"type": "string"
}
}
}
}Reharmonize a progression. Techniques: tritone_sub, ii_v_insertion, modal_interchange, diminished_passing, secondary_dominant, chain_of_dominants, coltrane_changes, backdoor (or auto).
| Argument | Type | Description |
|---|---|---|
| key | string | |
| technique | string | |
| progression* | array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"progression"
],
"properties": {
"key": {
"type": "string"
},
"technique": {
"type": "string"
},
"progression": {
"type": "array",
"items": {
"type": "string"
}
}
}
}Resolve a chord to spelled notes, frequencies, MIDI, and recommended scales.
| Argument | Type | Description |
|---|---|---|
| chord* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"chord"
],
"properties": {
"chord": {
"type": "string"
}
}
}