mcpField
M
MIDI MCP Server

MIDI MCP Server

ローカル
github.com/tubone24メディア・デザイン5728 週間前に更新

MIDI MCP Server について

MIDI MCP Server は、構造化された JSON の楽曲データから AI が MIDI ファイルを生成できるようにする MCP サーバーです。コードネームの入力に対応し、ピアノロールのプレビュー画面を備えています。プログラムで作曲を行うユーザーを想定しています。

主な機能

  1. 01create_midi ツールによる MIDI ファイル生成
  2. 02parse_chord ツールによるコード構成音の取得
  3. 03MIDI 番号、音名、音高配列、コード名による音高指定
  4. 0425 種類以上のコードの種類に対応
  5. 05付点や三連符を含む柔軟な音価の指定
  6. 06内蔵の音楽理論リファレンス 7 件

活用シーン

  1. 01プロンプトから多声部の合唱やメロディの断片を生成
  2. 02編曲前にコードの構成音を確認
  3. 03MCP クライアントの会話内でピアノロールと音声を再生

MCP 対応

このプロジェクトは MCP サーバーであり、create_midi と parse_chord の 2 つのツールを MCP クライアントに公開し、音楽理論の文書を MCP リソースとして提供します。stdio、HTTP、Cloudflare Workers 上のリモートサーバーとして動作します。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MseeP.ai セキュリティ評価バッジ

MseeP で検証済み

MIDI MCP サーバー

AI による MIDI 作曲のための Model Context Protocol(MCP) サーバーです。コード名に対応し、インタラクティブなピアノロールプレビュー UI と複数のデプロイモードを備え、構造化された JSON データから MIDI ファイルを生成します。

デモ

Agent Skills のアプローチをお探しですか? 少ないコンテキストで、より良い曲を作曲できます: tubone24/midi-agent-skill


機能

  • 2 つの MCP ツール:create_midi(インタラクティブプレビュー UI 付き)と parse_chord
  • 豊富な音高入力:MIDI 番号、音名文字列("C4")、音高配列、コード名("Cmaj7")
  • コードライブラリ:メジャー、マイナー、ディミニッシュ、オーギュメント、7th、maj7、m7、sus2、sus4、パワーコードなど、25 種類以上のコードクオリティに対応
  • 柔軟な音価:数値の拍、標準文字列('4'、'8')、付点('d4')、三連符('T8')
  • 音楽理論リソース:MCP リソースとして利用できる、組み込みのリファレンスドキュメント 7 件
  • 3 つのトランスポートモード:stdio、HTTP、または Cloudflare Workers(リモート)
  • MCP App UI:会話内に直接レンダリングされるピアノロールの可視化とオーディオ再生

デプロイ方法

オプション A — リモート(Cloudflare Workers)

事前にデプロイされたリモートサーバーを利用できます:

https://midi-mcp-server.tubone24.workers.dev/mcp

Streamable HTTP に対応する任意の MCP クライアント(例:Claude.ai)に追加します:

{
  "mcpServers": {
    "midi": {
      "type": "http",
      "url": "https://midi-mcp-server.tubone24.workers.dev/mcp"
    }
  }
}
オプション B — ローカル stdio(デスクトップクライアントに推奨)

ローカル stdio サーバーとしてビルドして設定します:

npm install
npm run build
{
  "mcpServers": {
    "musicComposer": {
      "command": "node",
      "args": ["/path/to/midi-mcp-server/build/index.js"]
    }
  }
}
オプション C — ローカル HTTP

ローカルの Streamable HTTP サーバーとして実行します:

node build/index.js --http
# or with a custom port:
node build/index.js --http --port=8080

サーバーは以下を公開します:

  • POST /mcp — MCP Streamable HTTP エンドポイント
  • GET /health — ヘルスチェック({"status":"ok","version":"0.2.0"})

ツール

create_midi

構造化された作曲データから MIDI ファイルを生成します。base64 エンコードされた MIDI を返し、対応する MCP クライアント(MCP App)では、オーディオ再生付きのインタラクティブなピアノロールプレビューをレンダリングします。

MIDI

入力

フィールド型必須説明
titlestring✓作曲のタイトル
compositionobject✓作曲データ(下記のスキーマを参照)

出力(構造化コンテンツ)

フィールド型説明
midiBase64stringbase64 エンコードされた MIDI ファイルデータ
titlestring作曲のタイトル
bpmnumber使用したテンポ
trackCountnumber生成したトラック数

parse_chord

コード名を解析し、その構成音の MIDI 音高と音名を返します。作曲前にボイシングを確認するのに便利です。

入力

フィールド型必須説明
chordstring✓コード名。例:"Cmaj7"、"F#m7"、"G7sus4"
octavenumber—ルート音のオクターブ(デフォルト:4)

出力例

{
  "chord": "Cmaj7",
  "octave": 4,
  "midiNumbers": [60, 64, 67, 71],
  "noteNames": ["C4", "E4", "G4", "B4"]
}

作曲スキーマ

{
  "bpm": 120,                              // tempo (also accepted: "tempo")
  "timeSignature": { "numerator": 4, "denominator": 4 },  // optional, default 4/4
  "tracks": [
    {
      "name": "Piano",                     // optional
      "instrument": 0,                     // GM program number 0–127 (optional)
      "notes": [
        {
          "pitch": 60,                     // MIDI number, note name "C4", or array [60, 64, 67]
          "chord": "Cmaj7",                // OR use chord name (overrides pitch)
          "beat": 1,                       // beat position (1-based); OR use startTime
          "startTime": 0,                  // tick offset (alias: "time")
          "duration": "4",                 // see Duration Reference below
          "velocity": 100,                 // 0–127 (optional, default 100)
          "channel": 0                     // MIDI channel 0–15 (optional)
        }
      ]
    }
  ]
}
音高の入力形式
形式例説明
MIDI 番号60標準 MIDI 音符番号(0–127)
音名"C4"音名の文字 + 任意の変化記号 + オクターブ
音高配列[60, 64, 67]同時に演奏する複数の音高
コードフィールドchord: "Cmaj7"コード名を自動的に展開

対応する変化記号:#(シャープ)、b(フラット)。例:"F#5"、"Bb3"。

音価のリファレンス
値説明
'1'全音符
'2'2分音符
'4'4分音符
'8'8分音符
'16'16分音符
'32'32分音符
'd1' 'd2' 'd4' 'd8' 'd16'付点音符
'dd4'付点4分音符(複付点)
'T4' 'T8' …3連符
4(数値)拍に基づく指定:1=4分音符、2=2分音符、4=全音符、0.5=8分音符
対応するコードクオリティ
クオリティ例説明
(なし) / majC、Cmajメジャー
m / minDmマイナー
dimBdimディミニッシュ
augEaugオーギュメント
7G7ドミナント7th
maj7 / M7Cmaj7メジャー7th
m7 / min7Am7マイナー7th
dim7Bdim7ディミニッシュ7th
m7b5Bm7b5ハーフディミニッシュ
aug7Eaug7オーギュメント7th
6 / m6C6、Am66th
9 / maj9 / m9G99th系
add9Cadd99thを追加
11 / 13C11拡張コード
sus2 / sus4Gsus4サスペンデッド
7sus4 / 7sus2G7sus47thサスペンデッド
power / 5G5パワーコード

MCP リソース

サーバーは、音楽理論のリファレンス文書7件をMCPリソースとして公開します。

URI説明
music-theory://harmony音程、コードの種類、ダイアトニックコード、カデンツ、声部連結
music-theory://chord-progressionsムード/ジャンル別の一般的なコード進行、代理コード、転調
music-theory://counterpoint定旋律対位法の規則、協和/不協和、進行の種類
music-theory://modes-scalesダイアトニックモード、マイナースケールのバリエーション、ペンタトニック/ブルース、ジャンルガイド
music-theory://orchestration楽器の音域、GMプログラム番号、テクスチャの種類
music-theory://rhythm-patterns拍子記号、MIDI音価のリファレンス、ジャンル別グルーヴ
music-theory://voice-leading禁則となる平行進行、ボイシングの戦略、非和声音

リソースの読み込みに対応したMCPクライアントは、これらをコンテキストとしてAIに渡し、音楽理論に基づいた作曲を可能にします。


作曲例

const composition = {
  bpm: 120,
  timeSignature: { numerator: 4, denominator: 4 },
  tracks: [
    {
      name: "Piano",
      instrument: 0,
      notes: [
        { chord: "Cmaj7", beat: 1, duration: "2", velocity: 90 },
        { chord: "Am7",   beat: 3, duration: "2", velocity: 90 },
        { chord: "Fmaj7", beat: 5, duration: "2", velocity: 90 },
        { chord: "G7",    beat: 7, duration: "2", velocity: 90 }
      ]
    },
    {
      name: "Melody",
      instrument: 0,
      notes: [
        { pitch: "E4", beat: 1, duration: "4", velocity: 100 },
        { pitch: "G4", beat: 2, duration: "4", velocity: 100 },
        { pitch: "A4", beat: 3, duration: "2", velocity: 110 }
      ]
    }
  ]
};

デモ

以下のプロンプトで、8小節の旋律的短調の合唱曲を生成します。

Create an 8-bar choral piece in a slightly minor, melodic scale.

https://github.com/user-attachments/assets/e20ebef0-fdbf-4e72-910d-41b94183f9d9

旋律的短調の合唱.mid


ビルドと開発

npm install

# Full build (UI + server)
npm run build

# Build steps individually
npm run build:ui     # Vite — builds the MCP App preview HTML
npm run build:server # tsc — compiles TypeScript server

# Deploy to Cloudflare Workers
npm run deploy

# Run tests
npm test
npm run test:coverage

依存関係

パッケージ用途
@modelcontextprotocol/sdkMCP サーバーの実装(stdioおよびHTTPトランスポート)
@modelcontextprotocol/ext-appsMCP Apps拡張機能 — 会話内でのインタラクティブなUI
midi-writer-jsMIDIファイルの生成
@tonejs/midiMIDIの解析(プレビューUI)
soundfont-playerプレビューUIでのオーディオ再生
zod入力スキーマの検証

コメント

MCP は初めてですか?

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

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