MusicXML to ABC について
MusicXML to ABCは、MusicXML楽譜と簡潔なABC記譜法を相互変換するMCPサーバーです。LLMで楽譜を読み取ったり編集したりするユーザー向けに、パート選択、検証、楽譜の概要取得も提供します。
主な機能
- 01MusicXML楽譜をABC記譜法に変換
- 02ABC記譜法をMusicXMLに変換
- 03パートと印刷小節範囲の選択
- 04ABCテキストを検証して問題を報告
- 05パートと音楽メタデータの要約
- 06楽譜テキストまたは許可パスのファイルを受付
活用シーン
- 01LLMによる楽譜編集の準備
- 02編集済みABCのMusicXMLへの再変換
- 03指定パートや小節範囲の抽出
- 04ABC記譜法の解析エラーの確認
MCP 対応
変換、ABC検証、楽譜説明、機能情報、ヘルスチェックのツールをMCPクライアントに提供します。楽譜はテキスト、または許可されたフォルダー内のファイルパスで渡せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| part_id | string | いいえ | このパートのみをエクスポートします(例:'Soprano')。省略すると、すべてのパートが含まれます。 |
| musicxml | string | はい | 文字列形式の MusicXML ドキュメント |
詳細
musicxml-abc-mcp
MusicXML と ABC 記譜法を相互変換する MCP サーバーです。
機能
MusicXML(標準的ですが冗長な XML 形式)と ABC 記譜法(簡潔で人間が読みやすいテキスト形式)の橋渡しをします。主な用途は、LLM を活用した楽譜編集です。MusicXML → ABC → Claude による編集 → ABC → MusicXML の順に変換します。
ABC は、コンテキストウィンドウに収まるほど簡潔で、ほとんどの合唱曲を表現できるほど豊かなため、LLM による編集に最適です。
ツール
| ツール | 説明 |
|---|---|
musicxml_to_abc | MusicXML(musicxml テキストまたは musicxml_path)を ABC 記譜法に変換します。オプションで、単一のパートと印刷上の小節範囲(measures)に絞り込めます |
abc_to_musicxml | ABC 記譜法を MusicXML に変換します。大きな楽譜はファイルに書き出されます(return: auto / path / inline) |
validate_abc | ABC 文字列を解析し、エラーまたは警告を返します |
list_capabilities | サーバーのメタデータ(バックエンドのバージョン、ABC 標準)を返します |
health_check | MusicXML → ABC → MusicXML のラウンドトリップテストを実行し、ステータスを報告します |
describe_score | 楽譜の概要(パート(ID は P1…)、調、拍子、テンポ、音域、小節)を効率的に返します |
インストール
cd musicxml-abc-mcp
uv sync --extra dev
注:pytest のインストールには --group dev ではなく --extra dev を使用してください。
uv が必要な場合はインストールし、依存関係を同期するセットアップガイドを利用するには、./install.sh を実行してください。
手順については SETUP.md を参照してください。すぐに使えるクライアント設定(Claude
Desktop、Cursor、Windsurf、Continue、Zed)は examples/ にあります。正常に動作しない場合は、
TROUBLESHOOTING.md を確認してください。
実行
uv run musicxml-abc-mcp
環境変数は不要です。オプションの環境変数は SHEET_MUSIC_OUTPUT_ROOT(大きな楽譜の書き出し先とパスの読み取り元。デフォルトは作業ディレクトリ)、SHEET_MUSIC_INPUT_ROOTS(楽譜を読み込む追加フォルダー)、SHEET_MUSIC_INLINE_MAX_BYTES(デフォルトは 8192)です。楽譜の参照 を参照してください。
使用例
楽譜はテキスト(musicxml)またはファイルパス(musicxml_path。許可されたフォルダー内の .musicxml、.xml、.mxl)で渡せます。abc_to_musicxml は、小さな楽譜はテキストで返し、大きな楽譜は <output root>/scores/ に書き出して、musicxml_path と短い score_summary を返します。テキストを常に取得するには、"return": "inline" を渡してください。
// Convert full score to ABC
{
"tool": "musicxml_to_abc",
"arguments": {"musicxml": "<score-partwise>...</score-partwise>"}
}
// → {"abc": "X:1\nT:...\n...", "parts_included": ["P1", "P2", "P3", "P4"], "warnings": []}
// Extract just the Soprano part
{
"tool": "musicxml_to_abc",
"arguments": {"musicxml": "<score-partwise>...</score-partwise>", "part": "Soprano"}
}
// `part` takes a part ID ("P1"), name ("soprano", any case) or voice ("S"); an unknown part
// returns the valid choices. `part_id` is a deprecated alias for one minor release.
// Just bars 17–24 of the Alto part
{
"tool": "musicxml_to_abc",
"arguments": {"musicxml_path": "scores/anthem.musicxml", "part": "Alto", "measures": [17, 24]}
}
// `measures` are the printed bar numbers, inclusive (a pickup bar is 0). The ABC headers (K:, M:,
// Q:) are the key, time and tempo in force at bar 17. A range outside the score returns
// INVALID_PARAMETER with a hint such as "This score has measures 1–32."
// Convert edited ABC back to MusicXML
{
"tool": "abc_to_musicxml",
"arguments": {"abc": "X:1\nT:My Song\n..."}
}
// → {"musicxml": "<?xml version=\"1.0\"?>...", "warnings": []}
// Validate ABC before converting
{
"tool": "validate_abc",
"arguments": {"abc": "X:1\nT:My Song\n..."}
}
ABC 記譜法の基本
このサーバーは ABC 標準 v2.1 を使用します。
C(大文字)= C4(中央ハ)c(小文字)= C5(中央ハより 1 オクターブ上)- アポストロフィで 1 オクターブ上がります:
c'= C6 - コンマで 1 オクターブ下がります:
C,= C3
ラウンドトリップでは、±2% 以内で音符が保持されます。強弱記号と複雑なアーティキュレーションは保持されません。
テスト
# All tests including integration (round-trip SATB conversion)
VIRTUAL_ENV= .venv/bin/pytest tests/ -v
依存関係
システム要件
- Python 3.11+
- システムライブラリは不要
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。