render-mcp
MCP server that renders MusicXML scores to PDF or PNG images.
What it does
Takes a MusicXML document and produces print-ready PDFs or screen-ready PNG images. Uses Verovio for layout and engraving — no external tools or GUI required.
Tools
| Tool | Description |
|---|---|
render_to_pdf |
Render the full score to a multi-page PDF file |
render_to_image |
Render a single page to PNG or SVG |
list_capabilities |
Return server metadata: backend version, supported formats, available renderers |
health_check |
Check whether all runtime dependencies are available and the server is ready to render scores |
Installation
Quick install: run ./install.sh for one-command setup, or see SETUP.md for a
non-technical walkthrough. Ready-made client configs (Claude Desktop, Cursor, Windsurf, Continue,
Zed) are in examples/. If something isn't working, check TROUBLESHOOTING.md.
Manual setup:
cd render-mcp
uv sync
libcairo is required for PNG output:
# Ubuntu / Debian (usually pre-installed on desktop systems)
sudo apt install libcairo2
Running
uv run render-mcp
No environment variables required.
Usage examples
// Render full score to PDF
{
"tool": "render_to_pdf",
"arguments": {
"musicxml_path": "/path/to/score.mxl",
"output_path": "/tmp/score.pdf"
}
}
// Render page 1 to PNG at 150 DPI
{
"tool": "render_to_image",
"arguments": {
"musicxml_path": "/path/to/score.mxl",
"output_path": "/tmp/page1.png",
"page": 1,
"dpi": 150
}
}
DPI range: 72–600. Default: 150. Page numbers are 1-indexed.
Testing
# All tests including integration (Verovio runs in-process, no external tool needed)
VIRTUAL_ENV= .venv/bin/pytest tests/ -v
Dependencies
- verovio — MusicXML engraving to SVG (pure Python, in-process)
- cairosvg — SVG to PNG/PDF conversion
- pypdf — multi-page PDF assembly
- Pillow — image utilities
- mcp — MCP protocol
System requirements
- Python 3.11+
libcairo2shared library (for PNG/PDF output via cairosvg)
Metadata
Release files for render-mcp 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| render_mcp-0.2.1.tar.gz | 80.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| render_mcp-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 90.6 kB
Release files / render_mcp-0.2.1.tar.gz
| Download URL | render_mcp-0.2.1.tar.gz |
|---|---|
| Size | 80.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a1624eff5d618565ea33556375e961dddf724cc6c52e3801c75796991d6f53ad
|
|
BLAKE2b-256 checksum How to use checksums |
ab8210f1c062f367652297b2ef6a677edb7199dda583bd9b57d4fa78437b04c7
|
| 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 logRelease files / render_mcp-0.2.1-py3-none-any.whl
| Download URL | render_mcp-0.2.1-py3-none-any.whl |
|---|---|
| Size | 10.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dceba65d9dc5d74f8b22aca5e8a2e8d683579d7457f86c3224530f9bebd770de
|
|
BLAKE2b-256 checksum How to use checksums |
a5acfe4c37c516a58494b765230c096c25c87fa67e200f25d8fd7a81baa429c2
|
| 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