Skip to main content

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

Tool Description
musicxml_to_abc Convert MusicXML to ABC notation; optionally filter to a single part
abc_to_musicxml Convert ABC notation back to MusicXML
validate_abc Parse an ABC string and return errors or warnings
list_capabilities Return server metadata: backend version, ABC standard
health_check Run a MusicXML → ABC → MusicXML round-trip smoke test and report status

Installation

cd musicxml-abc-mcp
uv sync --extra dev

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

uv run musicxml-abc-mcp

No environment variables required.

Usage examples

All tools take and return strings directly (no file paths) — the MCP client is responsible for reading/writing files if needed.

// Convert full score to ABC
{
  "tool": "musicxml_to_abc",
  "arguments": {"musicxml": "<score-partwise>...</score-partwise>"}
}
// → {"abc": "X:1\nT:...\n...", "parts_included": ["Soprano", "Alto", "Tenor", "Bass"], "warnings": []}

// Extract just the Soprano part
{
  "tool": "musicxml_to_abc",
  "arguments": {"musicxml": "<score-partwise>...</score-partwise>", "part_id": "Soprano"}
}

// Convert edited ABC back to MusicXML
{
  "tool": "abc_to_musicxml",
  "arguments": {"abc": "X:1\nT:My Song\n..."}
}
// → {"musicxml": "<?xml version=\"1.0\"?>...", "warnings": []}

// Validate ABC before converting
{
  "tool": "validate_abc",
  "arguments": {"abc": "X:1\nT:My Song\n..."}
}

ABC notation basics

This server uses ABC standard v2.1:

  • c (lowercase) = C4 (middle C)
  • C (uppercase) = C3 (one octave below middle C)
  • Apostrophe raises an octave: c' = C5
  • Comma lowers an octave: C, = C2

Round-trips preserve notes within ±2%. Dynamics and complex articulations are not preserved.

Testing

# All tests including integration (round-trip SATB conversion)
VIRTUAL_ENV= .venv/bin/pytest tests/ -v

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

Metadata

Release files for musicxml-abc-mcp 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for musicxml-abc-mcp 0.2.0
File Size Uploaded
musicxml_abc_mcp-0.2.0.tar.gz 139.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for musicxml-abc-mcp 0.2.0
File Interpreter ABI Platform
musicxml_abc_mcp-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 151.9 kB

Release files / musicxml_abc_mcp-0.2.0.tar.gz

Download URL musicxml_abc_mcp-0.2.0.tar.gz
Size 139.9 kB
Tags Source
SHA-256 checksum
How to use checksums
d8d86d8e3b76ccb8c130f4520697106cb46ac0aa2983876ceec4f08601059ef4
BLAKE2b-256 checksum
How to use checksums
9c71fb7b61a7b6a087c260fd5e560d8fc9726d7ad3e224d4420675a95af88c1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.

Transparency log

Release files / musicxml_abc_mcp-0.2.0-py3-none-any.whl

Download URL musicxml_abc_mcp-0.2.0-py3-none-any.whl
Size 12.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
79dec16f78db14adbe763669e36cee548a670ca548361840798029fe9bf6f10d
BLAKE2b-256 checksum
How to use checksums
dc22ecc2db35f0ac47e158497737bc6ad84f99a34d8c42fea08c934d4a9340ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.1

2 release files

This release

0.2.0 This release

2 release files

0.1.2

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page