Docs

Music Tutor is a remote MCP server with ten read-only tools. Each returns structured facts for the model plus an interactive card (MCP Apps) that engraves and plays notation.

Endpointhttps://musictutor.app/mcp
TransportStreamable HTTP (POST JSON-RPC; SSE responses)
AuthNone
Side effectsNone — all tools carry readOnlyHint: true
Card UIui://music-mcp/notation.html, hosts supporting MCP Apps render it; others get the text + structured result

Connect

Claude

Settings → Connectors → Add custom connector → name Music Tutor, URL above, no OAuth.

ChatGPT

Settings → Apps & Connectors → Advanced → Developer mode → Create → URL above, No authentication.

Claude Code

claude mcp add --transport http music-tutor https://musictutor.app/mcp

MCP Inspector / any client

npx @modelcontextprotocol/inspector https://musictutor.app/mcp

Tools

sightreading_exercise

A short passage of real, public-domain piano music graded 1–10. The card engraves it, plays it with note highlighting and links to the same passage for practising with an instrument.

levelinteger 1–10, default 1. 1–2 are one hand; higher levels use both hands
handrh · lh · both — ignored where the level has no such passages
querycomposer or title filter, e.g. "Bach", "Ode to Joy" (≤ 80 chars)
focusone skill: ledger-lines · accidentals · many-sharps · many-flats · dotted-rhythm · triplets · syncopation · sixteenths · chords · position-shift · scale-run
seedinteger; reuse to get the same passage again

The card's Play along on panel shows the melody on a keyboard or a guitar fretboard.

Returns title, composer, bars, key, meter, level, seed, hand, grading facts and the passage as MusicXML. No match (e.g. a living composer) → an error result, never invented music.

{"level": 5, "query": "Bach"}

find_music

Real notation from the classical corpus, two ways. A named piece — "show me the Moonlight Sonata", "the main theme of Clair de lune" — returns its iconic opening bars, engraved and playable. Browse by composer, era or form returns 3–5 famous openings as a carousel (one per composer for era/form lists). Public-domain works only.

querya specific piece: composer, title, key, opus — free text, e.g. "chopin nocturne c# minor", "moonlight sonata" (2–120 chars)
composerbrowse: e.g. "Chopin"
erabrowse: baroque · classical · romantic · modern
formbrowse: e.g. "mazurka", "nocturne", "fugue"
countbrowse: 3–5
pagebrowse: 1 = the next few
transposean instrument ("clarinet", "trumpet", "alto sax", "tenor sax", "bari sax", "F horn": written for it, played back at concert pitch), an interval ("-M2", "+m3") or a target key ("Eb")

Returns the resolved work, bar range, key, meter, notation facts, the MusicXML, and candidates (other works that matched) so the assistant can confirm it picked the right piece; browse returns an items[] list. No match or a copyrighted match → an error result, never invented music.

{"query": "chopin nocturne c# minor"}
{"era": "romantic", "count": 4}

show_notation

Engrave music the assistant writes — a scale, chord, progression, melody, rhythm or excerpt — as a playable staff.

scoreABC (preferred, single- or two-voice), MusicXML or MEI. 8–60 000 chars
bassoptional second ABC tune for the left hand; alternative to two-voice ABC in score. Adds a braced grand staff
captionone line shown under the notation (≤ 140 chars)
transposean instrument ("clarinet", "trumpet", "alto sax", "tenor sax", "bari sax", "F horn": written for it, played back at concert pitch), an interval ("-M2", "+m3") or a target key ("Eb")

Returns note/measure/staff/duration facts and any engraving warnings so the model can correct its notation.

{"score": "X:1
M:4/4
L:1/4
K:C
"Dm7"[F4A4c4e4] | "G7"[F4A4B4d4] | "Cmaj7"[E4G4B4d4] |]",
 "bass":  "X:1
M:4/4
L:1/4
K:C clef=bass
D,4 | G,,4 | C,4 |]",
 "caption": "ii–V–I in C"}

show_chord_or_scale

The notes of a chord or scale, spelled correctly (Cb major = Cb Eb Gb, Bbdim7 = Bb Db Fb Abb), on a staff and a piano keyboard, with playback. Chords also get a guitar chord box.

kindchord · scale
rootA–G with an optional #, b, x or bb
typechord quality ("m7", "dim7", "major") or scale name ("harmonic minor", "dorian")

Returns the notes, degree formula, the piano key each note is played on, and MIDI.

{"kind": "chord", "root": "F#", "type": "m7"}

show_lead_sheet

A song's melody with chord symbols and words (up to 48 bars), plus a diagram for every chord it uses — piano or guitar, the learner's choice. Chords play under the melody and light as they sound. Carols, hymns and folk songs in the public domain.

querythe song, e.g. "silent night", "greensleeves"
transposean instrument ("clarinet", "trumpet", "alto sax", "tenor sax", "bari sax", "F horn": written for it, played back at concert pitch), an interval ("-M2", "+m3") or a target key ("Eb")
{"query": "silent night"}

find_harmony_example

Real passages containing a harmony concept — Neapolitan sixth, augmented sixths, secondary dominants, deceptive cadence, cadential 6-4 and more (37 concepts). The card engraves each passage, colours and labels the target chord and plays it; up to 6 examples as a carousel.

concepte.g. "N6", "German sixth", "V/V", "deceptive cadence"
composeronly examples by this composer
excludeexample ids already shown, for "another one"

Returns examples[] with work, bars, key, Roman numeral and the chord's spelling. Examples from noncommercial corpora (DCML, CC BY-NC-SA) carry their attribution.

{"concept": "Neapolitan sixth", "composer": "Chopin"}

show_passage

More of a piece the learner has already met: the bars around a harmony example, what comes after an opening, or the whole piece (up to 64 bars).

work_idfrom a previous result
start_bar, end_barbar range
wholefrom the start, up to 64 bars
highlight_bara bar to mark, e.g. a harmony example's target
sourcedataset the bar numbers come from, e.g. "dcml"
transposean instrument ("clarinet", "trumpet", "alto sax", "tenor sax", "bari sax", "F horn": written for it, played back at concert pitch), an interval ("-M2", "+m3") or a target key ("Eb")

guess_the_composer

A listening game: the card plays a famous opening with no notation or title, and the learner picks from four composers. Each answer reveals the portrait, dates, a fun fact and the notation.

rounds3–5
difficultyeasy · hard (same style period)
dailytoday's shared puzzle: 5 rounds, hard, with a shareable score line
{"daily": true}

ear_training_quiz

A graded listening quiz the model designs: hear an interval, chord, inversion or scale and pick the answer. The server spells every question (a tritone from C is C→F♯), balances the deck and rates its difficulty.

familyinterval · chord_quality · inversion · scale
optionsthe 2–12 contrasts to drill, e.g. ["P4","P5","TT"]
playe.g. melodic_up, harmonic, block, broken, up_down
presetintervals-1…5, chords-1…3, inversions-1/2, scales-1/2, modes-1; fields given alongside override it
register, roots, weights, questions, seedoptional

Returns the spec, a difficulty summary and the answer key to the model (not shown to the learner). When the learner finishes, the card sends per-question results (with replays and latency), a confusion count such as "P5→m3": 2 and a suggested next spec with its reason.

{"family": "interval", "options": ["P4", "P5", "TT"], "play": "harmonic", "questions": 8}

suggest_next_pieces

Pieces to learn next from Music Tutor's editorial learning path (levels 1–10, public domain): later pieces at the learner's level and one level up, each with its opening to play and what it introduces. Levels are the path's editorial judgment, not an exam grade.

aftera piece the learner can play, e.g. "fur elise"
level1–10, when there is no piece to start from
composer, eranarrow the suggestions
count3–5, default 4
excludework_ids already suggested

Returns items[] with work, level, step (same level / next level) and a teaches line. A piece not on the path returns an error asking for the learner's level.

{"after": "fur elise"}

Content and licensing

Music comes from public-domain works only: published before 1930, composer dead 70+ years, or traditional. Harmony examples come from open research corpora and show their source and licence. Engraving uses Verovio. See Privacy, Terms, Support.

Version and icons are reported in serverInfo on initialize; run tools/list for the authoritative schemas.