MCP MIDI Server について
MCP MIDI Serverは、MIDI入力に対応するソフトウェアやハードウェアへ、MIDIメッセージや時間指定のノートシーケンスを送るFastMCPサーバーです。LLMからMIDI対応アプリを操作する用途を想定しています。
主な機能
- 01仮想MIDI出力ポートの作成
- 02Note On/Note Offメッセージの送信
- 03Control Changeメッセージの送信
- 04タイミング指定付きMIDIイベントの再生
- 05MIDI対応アプリへの接続
活用シーン
- 01DAWへノートを送信
- 02ハードウェアシンセサイザーの制御
- 03バーチャル楽器で時間指定シーケンスを再生
- 04照明コントローラーへMIDI入力を送信
MCP 対応
MCPクライアントに、MIDIメッセージとシーケンスを送信するツールを公開します。SSEを使用し、http://localhost:8123/sse のようなエンドポイントで設定できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
http://localhost:8123/sseclaude mcp add --transport http midi http://localhost:8123/sse{"mcpServers":{"midi":{"type":"http","url":"http://localhost:8123/sse"}}}Cursor で開く{"servers":{"midi":{"type":"http","url":"http://localhost:8123/sse"}}}VS Code で開く{"mcpServers":{"midi":{"type":"http","url":"http://localhost:8123/sse"}}}{"mcpServers":{"midi":{"serverUrl":"http://localhost:8123/sse"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
MCP MIDI サーバー
LLM が MIDI 入力に対応した任意のソフトウェアに MIDI シーケンスを送信できる FastMCP サーバーです。
機能
- 仮想 MIDI 出力ポートを作成します
- MIDI ノートオン/オフメッセージを送信します
- コントロールチェンジ(CC)メッセージを送信します
- 正確なタイミングで MIDI イベントをシーケンスします
- MIDI 入力に対応した任意のアプリケーションで MIDI 入力デバイスとして使用できます
必要条件
- Python 3.7+
- rtmidi
- fastmcp
- python-dotenv
- asyncio
インストール
-
リポジトリをクローンします:
git clone <repository-url> cd mcp-server-midi -
仮想環境を作成して有効化し、依存関係をインストールします:
python -m venv .venv source .venv/bin/activate pip install -r requirements.txt -
設定を記述した
.envファイルを作成します:PORT=8123
使用方法
サーバーを実行します:
python mcp_midi_server.py
サーバーは「MCP MIDI Out」という名前の仮想 MIDI ポートを作成します。このポートは、他のアプリケーションで MIDI 入力デバイスとして使用できます。つまり、次のことができます:
- Ableton Live、Logic Pro、FL Studio などのデジタルオーディオワークステーション(DAW)を接続し、このサーバーから MIDI を受信する
- サーバーを使って、コンピューターの MIDI インターフェース経由でハードウェアシンセサイザーを制御する
- MIDI 入力を受け付けるその他のソフトウェア(仮想楽器、照明コントローラーなど)に接続する
使用する MIDI 対応アプリケーションで、MIDI 入力デバイスとして「MCP MIDI Out」を選択してください。
MCP 設定
このサーバーは Server-Sent Events(SSE)を使用します。Cursor での設定方法は次のとおりです:
{
"mcpServers": {
"midi": {
"url": "http://localhost:8123/sse"
}
}
}
API メソッド
ノートオンの送信
MIDI ノートオンメッセージを送信します。
パラメーター:
note:MIDI ノート番号(0-127)velocity:ノートベロシティ(0-127、デフォルトは127)channel:MIDI チャンネル(0-15、デフォルトは0)
ノートオフの送信
MIDI ノートオフメッセージを送信します。
パラメーター:
note:MIDI ノート番号(0-127)velocity:ノートオフベロシティ(0-127、デフォルトは64)channel:MIDI チャンネル(0-15、デフォルトは0)
コントロールチェンジの送信
MIDI コントロールチェンジ(CC)メッセージを送信します。
パラメーター:
controller:CC コントローラー番号(0-127)value:CC 値(0-127)channel:MIDI チャンネル(0-15、デフォルトは0)
MIDI シーケンスの送信
指定した長さで MIDI ノートオン/オフメッセージのシーケンスを送信します。
パラメーター:
events:イベント辞書のリストです。各辞書には以下の内容を含める必要があります:note:MIDI ノート番号(0-127)velocity:ノートベロシティ(0-127、デフォルトは127)channel:MIDI チャンネル(0-15、デフォルトは0)duration:ノートオフを送信するまでノートを保持する時間(秒)start_time:シーケンス開始からの相対時間で指定した、ノートを開始する時刻(秒、デフォルトは0)
例
API を使って C メジャーコードを演奏します:
events = [
{"note": 60, "velocity": 100, "duration": 1.0, "start_time": 0.0}, # C4
{"note": 64, "velocity": 100, "duration": 1.0, "start_time": 0.0}, # E4
{"note": 67, "velocity": 100, "duration": 1.0, "start_time": 0.0}, # G4
]
# Send to the MCP MIDI Server API
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。