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 |
Installation
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)
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 render_mcp-0.1.2.tar.gz.
File metadata
- Download URL: render_mcp-0.1.2.tar.gz
- Upload date:
- Size: 79.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 |
8f52253ce2cb922322cf38eaf1cd9ad17817f3831fd220b50137c3d5171ec35f
|
|
| MD5 |
bb9e5114a50f5e3cc7f7932f40348afb
|
|
| BLAKE2b-256 |
e81cd0b5a92831c4a16b912e1a082eaf914783056b142fb79ff9c0176e8fd0ce
|
Provenance
The following attestation bundles were made for render_mcp-0.1.2.tar.gz:
Publisher:
publish.yml on raulkivi/music-assistant
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
render_mcp-0.1.2.tar.gz -
Subject digest:
8f52253ce2cb922322cf38eaf1cd9ad17817f3831fd220b50137c3d5171ec35f - Sigstore transparency entry: 2481863382
- Sigstore integration time:
-
Permalink:
raulkivi/music-assistant@7ff9527a4037d29c77405611f71c19f607945c70 -
Branch / Tag:
refs/tags/render-mcp/v0.1.2 - Owner: https://github.com/raulkivi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7ff9527a4037d29c77405611f71c19f607945c70 -
Trigger Event:
push
-
Statement type:
File details
Details for the file render_mcp-0.1.2-py3-none-any.whl.
File metadata
- Download URL: render_mcp-0.1.2-py3-none-any.whl
- Upload date:
- Size: 9.9 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 |
4ab7c0c95a44ef5294e36eaed142a3efc86fe0eccf2a1bfad46df555b5a86273
|
|
| MD5 |
0c22983c727c45ce666f8ab9b8da84e1
|
|
| BLAKE2b-256 |
e9396dc5811627c5bc64922314089e30a128591b0dc8b46ee253cb7b3d9f67ee
|
Provenance
The following attestation bundles were made for render_mcp-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on raulkivi/music-assistant
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
render_mcp-0.1.2-py3-none-any.whl -
Subject digest:
4ab7c0c95a44ef5294e36eaed142a3efc86fe0eccf2a1bfad46df555b5a86273 - Sigstore transparency entry: 2481863441
- Sigstore integration time:
-
Permalink:
raulkivi/music-assistant@7ff9527a4037d29c77405611f71c19f607945c70 -
Branch / Tag:
refs/tags/render-mcp/v0.1.2 - Owner: https://github.com/raulkivi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7ff9527a4037d29c77405611f71c19f607945c70 -
Trigger Event:
push
-
Statement type: