mxl-agent
A deterministic local MusicXML engine and Claude Code Agent Skill. See
mxl_agent-skill.md for the full product and engineering specification,
ROADMAP.md for current implementation status, CHANGELOG.md for
what's shipped, and COMPATIBILITY.md for what's actually been verified
against which Python/OS/optional-integration versions. Licensed under MIT.
Development
uv sync
uv run mxl-agent --help
uv run mxl-agent doctor --json
uv run python scripts/check.py fast
Release engineering
uv run python scripts/check.py release builds the package twice and confirms the wheel/sdist
come out byte-for-byte identical, then writes a CycloneDX SBOM and a dependency vulnerability
report to dist/ (gitignored). It does not sign or publish anything -- see CHANGELOG.md's
"Known limitations" and ROADMAP.md's Slice 10.6 note for what's intentionally out of scope.
MCP server (optional)
mxl-agent mcp-serve runs an MCP server over stdio, exposing
the session tools (open/status/checkout/revisions) and a read-only session_view tool
to any MCP client. Needs the optional mcp extra (and, for session_view's own rendering, the
optional render extra too):
uv sync --extra mcp --extra render
uv run mxl-agent doctor --json # integrations.mcp.available should be true
Point an MCP client at uv run --directory <this repo> mxl-agent mcp-serve (add
--workspace-root <path> to use a workspace directory other than the default
.mxl-agent/workspaces). This is a separate integration from the Claude Code Agent Skill
(.claude/skills/mxl-agent/) -- the skill's own wrapper never spawns mcp-serve.
In a client that supports the MCP Apps
extension, session_view also renders a read-only, embedded Verovio SVG of the session's current
score inline. This extension is new and still evolving (spec dated 2026-01-26); its client-side
half is implemented by a vendored copy of the official library (see NOTICE) and is not verified
end-to-end by this project's own test suite, since no compatible host is available here -- server-
side registration and the tool's own output are tested, actual in-host rendering is not.
Claude Code plugin
This repository is itself a Claude Code plugin (.claude-plugin/plugin.json): opening it (or
installing it as a plugin) exposes the Agent Skill (.claude/skills/mxl-agent/), registers the
optional MCP server above (.mcp.json, still gated behind the mcp/render extras actually
being installed), and installs one guardrail hook
(hooks/hooks.json -> hooks/block-workspace-mutation.sh): a PreToolUse check on
Edit/Write/MultiEdit that blocks direct hand-edits to files under a session's workspace
directory (.mxl-agent/workspaces/), since that tree is managed exclusively by mxl-agent's own
transactional revision system (CLAUDE.md: "Mutations must be typed, dry-runnable, transactional,
reversible..."). The hook fails open (allows the edit) if it can't parse its input or can't find a
working Python interpreter -- it is a guardrail on top of the transaction system, not the only
protection. Validate the manifest with claude plugin validate . (a pre-existing "CLAUDE.md at
the plugin root isn't loaded as project context" warning is expected and intentional -- that file
is this repo's own development instructions, not plugin-shipped user context).
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mxl_agent-0.1.0.tar.gz.
File metadata
- Download URL: mxl_agent-0.1.0.tar.gz
- Upload date:
- Size: 878.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09b3a7edfa7c251c82afec58a384be17248cf670e9d327965ce5befcb40d9c9d
|
|
| MD5 |
a60dc33261d443a3e4b0f7341d618f13
|
|
| BLAKE2b-256 |
1e6b5b5cab40f2b9c97298e579f8d6ca8e73802f4c8b7f79948f01c276169946
|
Provenance
The following attestation bundles were made for mxl_agent-0.1.0.tar.gz:
Publisher:
release.yml on eyes-uncl0uded/mxl-agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mxl_agent-0.1.0.tar.gz -
Subject digest:
09b3a7edfa7c251c82afec58a384be17248cf670e9d327965ce5befcb40d9c9d - Sigstore transparency entry: 2654930985
- Sigstore integration time:
-
Permalink:
eyes-uncl0uded/mxl-agent@2fd457ea46be57f10be33d9439e41244a4f1435c -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/eyes-uncl0uded
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@2fd457ea46be57f10be33d9439e41244a4f1435c -
Trigger Event:
push
-
Statement type:
File details
Details for the file mxl_agent-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mxl_agent-0.1.0-py3-none-any.whl
- Upload date:
- Size: 423.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd3fd1b15f57dbb3e98a800ceed1a4873a7cb078152b4fc67b2cc1abcb5c9f9b
|
|
| MD5 |
0388abfde061369d97944a6727c7d7f8
|
|
| BLAKE2b-256 |
4123603804f4c637bc52e67cd3ee942b31bdbd103c851c57f457792e3d84b7f3
|
Provenance
The following attestation bundles were made for mxl_agent-0.1.0-py3-none-any.whl:
Publisher:
release.yml on eyes-uncl0uded/mxl-agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mxl_agent-0.1.0-py3-none-any.whl -
Subject digest:
fd3fd1b15f57dbb3e98a800ceed1a4873a7cb078152b4fc67b2cc1abcb5c9f9b - Sigstore transparency entry: 2654931048
- Sigstore integration time:
-
Permalink:
eyes-uncl0uded/mxl-agent@2fd457ea46be57f10be33d9439e41244a4f1435c -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/eyes-uncl0uded
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@2fd457ea46be57f10be33d9439e41244a4f1435c -
Trigger Event:
push
-
Statement type: