
MusicXML to ABC
io.github.raulkiviPublished by GitHub account raulkiviv0.2.2Updated Oct 24, 2026
Converts between MusicXML and ABC notation, so LLMs can read and edit scores
Overview
Local MCP server that converts sheet music between MusicXML and ABC notation so an assistant can read, summarize and edit scores.
- What you can do
- Convert MusicXML text or file paths to ABC notation, optionally limited to one part and a bar range
- Convert ABC notation back to MusicXML, inline or written to a file for large scores
- Validate ABC strings and report parse errors or warnings
- Summarize a score cheaply: parts, key, time, tempo, ranges and measures
- Report server metadata and run a round-trip health check
- When to use it
- Useful when you want an assistant to edit choral or similar scores: convert MusicXML to compact ABC, let the model edit the text, then convert back to MusicXML. Also handy for inspecting a score's parts and structure before working on it.
- Requirements
- Runs locally over stdio as a PyPI package (musicxml-abc-mcp) launched with uvx; Python 3.11 or newer. No environment variables are required, though optional ones set the output root, extra input folders and inline size limit. Desktop client only.
Installation
In SourceWeft
- Open MusicXML to ABC in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
musicxml-abc-mcp
MCP server that converts between MusicXML and ABC notation.
What it does
Bridges MusicXML (the standard but verbose XML format) and ABC notation (a compact, human-readable text format). The primary use case is enabling LLM-assisted score editing: MusicXML → ABC → Claude edits → ABC → MusicXML.
ABC is ideal for LLM editing because it is concise enough to fit in a context window and expressive enough to represent most choral music.
Tools
Installation
Note: use --extra dev (not --group dev) to install pytest.
For a guided setup (installs uv if needed, then syncs dependencies), run ./install.sh —
see SETUP.md for step-by-step instructions. Ready-made client configs (Claude
Desktop, Cursor, Windsurf, Continue, Zed) are in examples/. If something doesn't
work, check TROUBLESHOOTING.md.
Running
No environment variables required. Optional: SHEET_MUSIC_OUTPUT_ROOT (where large scores are
written and paths are read; default the working directory), SHEET_MUSIC_INPUT_ROOTS (extra
folders to read scores from) and SHEET_MUSIC_INLINE_MAX_BYTES (default 8192). See
Score References.
Usage examples
Scores can be passed as text (musicxml) or as a file path (musicxml_path: .musicxml, .xml
or .mxl inside the allowed folders). abc_to_musicxml returns small scores as text and writes
large ones to <output root>/scores/, returning musicxml_path plus a short score_summary;
pass "return": "inline" to always get the text.
ABC notation basics
This server uses ABC standard v2.1:
C(uppercase) = C4 (middle C)c(lowercase) = C5 (one octave above middle C)- Apostrophe raises an octave:
c'= C6 - Comma lowers an octave:
C,= C3
Round-trips preserve notes within ±2%. Dynamics and complex articulations are not preserved.
Testing
Dependencies
- music21 — score parsing; ABC output uses a custom serializer (music21 9.x has no ABC writer)
- mcp — MCP protocol
System requirements
- Python 3.11+
- No system libraries required
Source: musicxml-abc-mcp/README.md at commit 5fcea5d
Tools
0Version history
2- v0.2.2LatestOct 12, 2026
- v0.2.1Sep 26, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts