MusicXML Renderer

io.github.raulkiviPublished by GitHub account raulkiviv0.2.2Updated Oct 24, 2026

Renders MusicXML scores to PDF, PNG or SVG

The publisher's own server: render.ai Presentations

VerifiedSTDIODesktop onlyFiles & StorageMedia & Design

Overview

AI-generated overview

Local MCP server that renders MusicXML scores into print-ready PDFs or page images (PNG/SVG) using Verovio, with no external engraving tools.

What you can do
  • Render a full MusicXML score to a multi-page PDF file
  • Render a single page to PNG or SVG at a chosen DPI
  • Limit rendering to a range of printed measures
  • Inspect a score's parts, key, time, tempo and length without rendering
  • Report backend version, supported formats and runtime readiness
When to use it
Useful when an assistant needs to turn MusicXML or compressed .mxl scores into PDFs or images for printing, previewing or sharing, including excerpts of selected bars. It suits desktop setups where scores live in local folders.
Requirements
Runs locally over stdio, typically via uvx from the PyPI package render-mcp. Needs Python 3.11+ and the libcairo2 shared library for PNG/PDF output. No environment variables or accounts are required, though optional variables such as SHEET_MUSIC_OUTPUT_ROOT and SHEET_MUSIC_INPUT_ROOTS control which folders may be read and written. Desktop only.
Before you install
It writes files: output_path must lie inside the configured output root, and input paths are restricted to allowed roots. Point those roots at specific score folders rather than broad directories so the assistant cannot read or overwrite unrelated files.

Installation

In SourceWeft

  1. Open MusicXML Renderer in the dashboard and add it to a workspace.
  2. 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

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

ToolDescription
render_to_pdfRender the full score to a multi-page PDF file
render_to_imageRender a single page to PNG or SVG
list_capabilitiesReturn server metadata: backend version, supported formats, available renderers
health_checkCheck 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:

bash
cd render-mcpuv sync

libcairo is required for PNG output:

bash
# Ubuntu / Debian (usually pre-installed on desktop systems)sudo apt install libcairo2

Running

bash
uv run render-mcp

No environment variables required.

Usage examples

json
// 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  }}
// Render only bars 17–24 (printed measure numbers, inclusive) to PDF{  "tool": "render_to_pdf",  "arguments": {    "musicxml_path": "/path/to/score.mxl",    "measures": [17, 24]  }}

DPI range: 72–600. Default: 150. Page numbers are 1-indexed.

measures: [start, end] (optional, both tools) renders only those printed bars; a pickup bar is 0. The cut score keeps the key, time and clef in force at start. A reversed or out-of-range measures is an INVALID_PARAMETER error whose hint names the score's first and last bars.

Give the score as musicxml_path (.musicxml, .xml or .mxl) or inline as musicxml, not both. A path must lie inside SHEET_MUSIC_OUTPUT_ROOT (default: the working directory), one of the client's roots, or a folder listed in SHEET_MUSIC_INPUT_ROOTS; output_path must lie inside SHEET_MUSIC_OUTPUT_ROOT. describe_score returns a score's parts (IDs P1 …), key, time, tempo and length without rendering it.

Testing

bash
# 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+
  • libcairo2 shared library (for PNG/PDF output via cairosvg)

Source: render-mcp/README.md at commit 5fcea5d

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

2
  1. v0.2.2LatestOct 17, 2026
  2. 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

Other Render integrations