mcpField
M
MusicXML to ABC

MusicXML to ABC

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

MusicXML to ABC について

MusicXML to ABCは、MusicXML楽譜と簡潔なABC記譜法を相互変換するMCPサーバーです。LLMで楽譜を読み取ったり編集したりするユーザー向けに、パート選択、検証、楽譜の概要取得も提供します。

主な機能

  1. 01MusicXML楽譜をABC記譜法に変換
  2. 02ABC記譜法をMusicXMLに変換
  3. 03パートと印刷小節範囲の選択
  4. 04ABCテキストを検証して問題を報告
  5. 05パートと音楽メタデータの要約
  6. 06楽譜テキストまたは許可パスのファイルを受付

活用シーン

  1. 01LLMによる楽譜編集の準備
  2. 02編集済みABCのMusicXMLへの再変換
  3. 03指定パートや小節範囲の抽出
  4. 04ABC記譜法の解析エラーの確認

MCP 対応

変換、ABC検証、楽譜説明、機能情報、ヘルスチェックのツールをMCPクライアントに提供します。楽譜はテキスト、または許可されたフォルダー内のファイルパスで渡せます。

設定

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

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

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

パッケージ
pypimusicxml-abc-mcp0.2.2

ツール

5

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

パラメーター型必須説明
part_idstringいいえこのパートのみをエクスポートします(例:'Soprano')。省略すると、すべてのパートが含まれます。
musicxmlstringはい文字列形式の MusicXML ドキュメント

詳細

musicxml-abc-mcp

MusicXML と ABC 記譜法を相互変換する MCP サーバーです。

機能

MusicXML(標準的ですが冗長な XML 形式)と ABC 記譜法(簡潔で人間が読みやすいテキスト形式)の橋渡しをします。主な用途は、LLM を活用した楽譜編集です。MusicXML → ABC → Claude による編集 → ABC → MusicXML の順に変換します。

ABC は、コンテキストウィンドウに収まるほど簡潔で、ほとんどの合唱曲を表現できるほど豊かなため、LLM による編集に最適です。

ツール

ツール説明
musicxml_to_abcMusicXML(musicxml テキストまたは musicxml_path)を ABC 記譜法に変換します。オプションで、単一のパートと印刷上の小節範囲(measures)に絞り込めます
abc_to_musicxmlABC 記譜法を MusicXML に変換します。大きな楽譜はファイルに書き出されます(return: auto / path / inline)
validate_abcABC 文字列を解析し、エラーまたは警告を返します
list_capabilitiesサーバーのメタデータ(バックエンドのバージョン、ABC 標準)を返します
health_checkMusicXML → 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

依存関係

  • music21 — 楽譜の解析。ABC 出力にはカスタムシリアライザーを使用します(music21 9.x には ABC ライターがありません)
  • mcp — MCP プロトコル

システム要件

  • Python 3.11+
  • システムライブラリは不要

コメント

MCP は初めてですか?

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

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