mcpField
M
MusicXML Renderer

MusicXML Renderer

ローカル
github.com/raulkiviメディア・デザイン12 日前に更新

MusicXML Renderer について

MusicXML Rendererは、楽譜を複数ページのPDF、または単ページのPNGやSVGに変換するMCPサーバーです。Verovioで浄書し、外部ツールやGUIを使わずに描画します。

主な機能

  1. 01楽譜全体を複数ページのPDFに変換
  2. 02単ページをPNGまたはSVGに変換
  3. 03指定した小節範囲を描画
  4. 04ファイルパスまたはインラインのMusicXMLに対応
  5. 05機能と稼働状態を確認

活用シーン

  1. 01印刷用の楽譜PDFを作成
  2. 02楽譜ページをPNGまたはSVGで出力
  3. 03確認用に指定小節だけを描画

MCP 対応

MCPサーバーとして、PDF・画像描画、機能一覧、ヘルスチェックのツールをクライアントに公開します。クライアントはMusicXMLをパスまたはインラインで渡し、出力形式とパスを指定できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"raulkivi-render": {
"command": "uvx",
"args": [
"render-mcp"
]
}
}
}
起動コマンドuvx render-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypirender-mcp0.2.2

ツール

4

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
musicxmlstringはい文字列形式の MusicXML ドキュメント
output_pathstringいいえPDF ファイルの書き込み先パス(省略時は自動生成)

詳細

render-mcp

MusicXML 楽譜を PDF または PNG 画像にレンダリングする MCP サーバーです。

機能

MusicXML ドキュメントを受け取り、印刷に適した PDF または画面表示に適した PNG 画像を生成します。レイアウトと浄書には Verovio を使用するため、外部ツールや GUI は不要です。

ツール

ツール説明
render_to_pdf楽譜全体を複数ページの PDF ファイルにレンダリングします
render_to_image1 ページを PNG または SVG にレンダリングします
list_capabilitiesサーバーのメタデータ(バックエンドのバージョン、対応形式、利用可能なレンダラー)を返します
health_checkすべてのランタイム依存関係が利用可能で、サーバーが楽譜をレンダリングできる状態かどうかを確認します

インストール

簡単なインストール:./install.sh を実行してワンコマンドでセットアップするか、技術に詳しくない方向けの手順については SETUP.md をご覧ください。すぐに使えるクライアント設定(Claude Desktop、Cursor、Windsurf、Continue、 Zed)は examples/ にあります。うまく動作しない場合は、TROUBLESHOOTING.md をご確認ください。

手動セットアップ:

cd render-mcp
uv sync

PNG 出力には libcairo が必要です。

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

実行

uv run render-mcp

環境変数は不要です。

使用例

// 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 の範囲:72~600。デフォルト:150。ページ番号は 1 から始まります。

measures: [start, end](省略可能。両方のツールに対応)を指定すると、印刷された小節のうち指定範囲のみをレンダリングします。弱起の小節は 0 です。 切り出した楽譜では、start 時点で有効な調号、拍子記号、音部記号が維持されます。measures の範囲が逆転している、または範囲外の場合は INVALID_PARAMETER エラーとなり、hint に楽譜の最初と最後の小節番号が示されます。

楽譜は musicxml_path(.musicxml、.xml、.mxl)で指定するか、musicxml としてインラインで指定してください。両方を指定することはできません。 パスは SHEET_MUSIC_OUTPUT_ROOT(デフォルト:作業ディレクトリ)、クライアントのルートのいずれか、または SHEET_MUSIC_INPUT_ROOTS に記載されたフォルダー内にある必要があります。output_path は SHEET_MUSIC_OUTPUT_ROOT 内にある必要があります。describe_score はレンダリングを行わずに、楽譜のパート(ID は P1 …)、調号、拍子記号、テンポ、長さを返します。

テスト

# All tests including integration (Verovio runs in-process, no external tool needed)
VIRTUAL_ENV= .venv/bin/pytest tests/ -v

依存関係

  • verovio — MusicXML を SVG に浄書します(純粋な Python でプロセス内実行)
  • cairosvg — SVG を PNG/PDF に変換します
  • pypdf — 複数ページの PDF を組み立てます
  • Pillow — 画像ユーティリティ
  • mcp — MCP プロトコル

システム要件

  • Python 3.11+
  • libcairo2 共有ライブラリ(cairosvg 経由での PNG/PDF 出力に必要)

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。