Skip to main content
Glama

scoreproof

Convert any score. Prove nothing got lost.

Scoreproof converts music files between MusicXML, MIDI, ABC, MEI and Humdrum, makes sheet music you can print and play (PDF, PNG), repairs the quirks of real notation-app exports (Sibelius, Dorico, Finale, MuseScore, Guitar Pro and others), and checks every conversion note by note, reporting exactly what was kept and what was lost.

MIDI you played into a DAW or from a keyboard comes out as readable notation: Scoreproof finds the beat (even without a click), snaps rhythms to 16ths or triplets, tidies note lengths, splits piano into two hands and spells notes in the right key.

Use it from any AI tool that speaks MCP (Claude, Cursor, VS Code, Gemini CLI, Codex and others), from the command line, or from Python.

Use it from your AI tool

Scoreproof runs locally and works on files on your computer. It needs uv (brew install uv or pip install uv).

Claude Code

/plugin install scoreproof --marketplace asampat3090/scoreproof

or add the server directly: claude mcp add scoreproof -- uvx scoreproof mcp

Claude Desktop, Cursor, Gemini CLI: add this to claude_desktop_config.json, ~/.cursor/mcp.json or ~/.gemini/settings.json:

{
  "mcpServers": {
    "scoreproof": { "command": "uvx", "args": ["scoreproof", "mcp"] }
  }
}

VS Code (.vscode/mcp.json):

{
  "servers": {
    "scoreproof": { "type": "stdio", "command": "uvx", "args": ["scoreproof", "mcp"] }
  }
}

Codex (~/.codex/config.toml):

[mcp_servers.scoreproof]
command = "uvx"
args = ["scoreproof", "mcp"]

Then ask things like:

  • "Turn ~/Music/take-3.mid into sheet music I can print."

  • "Convert ~/Music/song.mid to MusicXML and tell me what got lost."

  • "Transpose my lead sheet to Bb and show me the sheet music."

  • "Split this score into parts for each player."

  • "What changed between draft-1.musicxml and draft-2.musicxml?"

  • "Check this Sibelius export before I send it to the copyist."

Tools

Tool

What it does

convert

Convert a file and verify the result note by note, or make a PDF/PNG

batch_convert

Convert many files or whole folders

inspect

Summary (parts, ranges, key, meter, tempo) plus an ABC excerpt of chosen bars

validate

Find bars that don't add up, notes out of range, and repaired exporter quirks

compare

What changed between two versions, bar by bar, even across formats

transpose

By interval, into a key, or between concert and written pitch

extract

Pull out parts or bars, or make one file per player

render

Sheet music to print or view (PDF, PNG, SVG; Letter or A4) or an audio preview (WAV)

list_formats

Formats and what each one cannot hold

Results are written next to the input under a new name. Scoreproof never overwrites an existing file unless you give that exact output path.

Related MCP server: musescore-mcp

Use it from the command line

uvx scoreproof convert song.musicxml song.mid
uvx scoreproof convert take-3.mid --to pdf          # played MIDI to sheet music
uvx scoreproof inspect song.musicxml --bars 1-8
uvx scoreproof transpose song.musicxml --key "Bb major"
uvx scoreproof extract score.mxl --each-part
uvx scoreproof render song.musicxml --to png --page-size a4
uvx scoreproof --help

Add --json to any command for machine-readable output.

Use it from Python

from scoreproof import convert

result = convert("song.musicxml", "song.mid")
result.confidence        # "exact", "high", "medium" or "low"
result.expected_losses   # what MIDI cannot hold: lyrics, chord symbols, ...
result.fixes             # exporter quirks repaired on the way in

How accurate is it?

On 430 real exports from 11 notation apps (benchmarks/score_corpus/):

music21 alone

scoreproof

Files that load

96.0%

100%

Read faithfully (parts, bars, notes, length)

87.9%

95.6%

MIDI played in a DAW (benchmarks/played_midi/, five pieces performed with human timing):

music21 alone

scoreproof

Notes on the right beat, with a click

64%

99%

Notes on the right beat, no click

6–21%

81–82%

Every conversion re-reads its own output and compares it with the source. When a format cannot hold something (MIDI has no chord symbols or lyrics layout; ABC and MEI exports carry transposing instruments at concert pitch), the report says so instead of failing silently.

Not supported: native Sibelius, Dorico, Finale and MuseScore files. Export MusicXML from the app first.

Development

pip install -e ".[dev]"
pytest --cov=scoreproof        # coverage is kept at 100%
black src tests benchmarks
flake8 src tests benchmarks

The plan and milestones are in docs/plan.md. MIT licensed.

Related MCP Connectors

  • ScoreStarling is an all-in-one AI sheet music assistant. Ask for anything to do with sheet music: transcribe a song from audio, video or a link, read a PDF or photo, add chords, change the key, make it easier, turn it into guitar TAB or jianpu, or arrange it for another instrument. Every change lands on a real score you can hear, fix and download (PDF, MIDI, MusicXML, guitar TAB, jianpu, audio). Hosted remote server with OAuth sign-in. Free accounts get monthly credits and free previews; prices are at scorestarling.com/pricing. Setup: https://scorestarling.com/mcp

    https://mcp.scorestarling.com/mcp
  • ScanSing reads printed sheet music. Give Claude a PDF or a photo of a score and it gets back MusicXML, the format MuseScore, Sibelius, Finale and Dorico open. It is the recogniser inside the ScanSing app for choir singers, offered as a connector. Once a score is recognised, Claude can answer questions about it without recognising it again: - what the key, time signature, tempo and length are, and each part's range, clefs and lyrics; - one voice on its own, for example just the alto line of a choir piece; - the score or a part moved to another key, with notes respelled for the new key signature; - a MIDI file, one track per part, to listen to or rehearse with; - a short-lived download link to open the result in a browser or notation app. It handles PDFs up to 40 pages and PNG, JPEG, HEIC, TIFF and WebP images, can recognise selected pages of a long PDF, and can split a songbook into one MusicXML per piece. A file can be given as a web link or a small image; in Claude Code, a file on your computer is sent through a one-time upload link. Recognition spends pages from your ScanSing plan, so it is the only tool that is not read-only. Everything else works on the stored result and is free. The first connection with a new email comes with 20 free pages; paid plans start at $9 a month for 300 pages. Scores and results are deleted about an hour after recognition and are never used for training.

    https://mcp.scansing.app/mcp
  • Find AI-transcribed sheet music, MIDI and stems for songs. /mcp/public needs no sign-in.

    https://api.groovesheet.net/mcp
  • Read-only music guides, chord transposition, piano chord spelling and guitar-tab pitch mapping.

    https://clefdrills.com/mcp

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Render music notation from a JSON score to inline SVG (Verovio + Bravura), round-trippable MusicXML, and base64 MIDI in one call. Includes pre-flight validation with concrete fix suggestions and a curated music-theory knowledge search. Free, open, no auth, sponsored by Gradus School of Music Composition.
    5
    131 npm
    3
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables Claude AI to convert, edit, and analyze MuseScore files (.mscz, .musicxml, MIDI) through natural language commands, supporting format conversion, transposition, harmony analysis, and more.
    20
    1
    -
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    MCP server for vibe coding with music, enabling format conversion (LilyPond, MusicXML, MIDI, ABC, etc.), audio-to-sheet transcription, and transposition with robust fallback outputs.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables musical analysis of MIDI and musicXML files using music21, providing tools for key detection, harmony, melody, rhythm, form analysis, counterpoint checking, and motif extraction.
    MIT