midi-composer-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MIDI_COMPOSER_OUTPUT_DIR | No | Override the default output directory for MIDI files (default is ./midi_output) | ./midi_output |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_scalesA | List every scale type in the database with intervals, degree labels and aliases. Use a scale type's name (or any alias) with get_scale, match_scales, diatonic_chords and degrees_to_chords. |
| list_chordsA | List every chord type in the database with intervals, degree labels, symbol suffixes and aliases. Use a chord type's name or symbol suffix with get_chord, and root+suffix symbols (e.g. 'Am', 'G7', 'F#m7b5') anywhere a chord symbol is accepted. |
| get_scaleA | Describe a scale type; with a root note, generate its notes. Without |
| get_chordA | Describe a chord type; with a root note, generate its notes. Without |
| match_scalesA | Find scales that contain all of the given notes (octaves are ignored).
|
| match_chordsA | Find chords that match the given notes (octaves are ignored). 'exact' matches use exactly the input pitch classes; when the first input
note is not the chord root the inversion is reported with slash notation
(e.g. 'E G C' -> C/E, first inversion). 'partial' matches are chords that
contain all input notes plus the listed |
| diatonic_chordsA | List the chord built on each degree of a scale (triads, or sevenths). E.g. diatonic_chords('C', 'major') -> I=C, ii=Dm, iii=Em, IV=F, V=G, vi=Am, vii°=Bdim. Seven-note scales also get roman numerals, degree names and harmonic functions (tonic/subdominant/dominant) — the raw material for designing a progression yourself; then resolve it with degrees_to_chords. A root with an octave (e.g. 'C4') yields concrete pitches with MIDI numbers. |
| degrees_to_chordsA | Resolve a chord-degree sequence you chose into concrete chords of a scale.
|
| random_notesA | Pick The pool is any notes array — typically from get_scale or get_chord, e.g.
random notes from A minor pentatonic. Octaves in the pool are kept.
Reproducible via |
| random_rhythmA | Roll a random rhythm pattern of Returns a pattern string like 'O...Oo..' where O = strong beat, o = weak
beat, . = pause. |
| notes_to_midiA | Write a note sequence (scale, arpeggio or melody) to a MIDI file. Plays the notes in order, one per |
| chords_to_midiA | Write a chord sequence to a MIDI file (block chords, or arpeggiated).
|
| song_to_midiA | Write a melody plus chord accompaniment into one two-track MIDI file. Track 1 plays |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
Each tool has a clearly distinct purpose: chord/scale retrieval, matching, progression building, and MIDI writing. No two tools overlap in functionality.
All tool names follow either a verb_noun pattern (get_chord, list_scales) or a noun_to_noun pattern (chords_to_midi), with consistent snake_case throughout.
13 tools cover a broad range of music composition tasks without being overwhelming. Each tool serves a specific need, fitting well within the optimal 3-15 range.
The set covers music theory retrieval (scales, chords), progression building, random generation, and MIDI output (notes, chords, combined tracks). No obvious gaps for its stated purpose.