MIDI服务器

MCP MIDI Server是一个允许LLM向支持MIDI输入的软件发送MIDI序列的快速服务器。

  • by sandst1
  • Python
  • 本地部署
  • 17 星标
  • 更新于
在 GitHub 查看 sandst1/mcp-server-midi

使用说明

MCP MIDI服务器

FastMCP服务器,允许LLM将MIDI序列发送到任何支持MIDI输入的软件中。

特性

  • 创建虚拟MIDI输出端口
  • 发送MIDI音符开/关消息
  • 发送控制更改(CC)消息
  • 用精确的定时对MIDI事件进行排序
  • 可以在任何支持MIDI的应用程序中用作MIDI输入设备

需求

  • Python 3.7+
  • 特米迪
  • fastmcp
  • python dotenv
  • 异步IO

安装

  1. 克隆存储库:

    git clone <repository-url>
    cd mcp-server-midi
    
  2. 创建一个虚拟环境,激活它并安装依赖项:

    python -m venv .venv
    source .venv/bin/activate
    
    pip install -r requirements.txt
    
  3. 创建一个 .env 使用您的配置文件:

    PORT=8123
    

用法

运行服务器:

python mcp_midi_server.py

服务器创建了一个名为“MCP MIDI Out”的虚拟MIDI端口,可以在其他应用程序中用作MIDI输入设备。这意味着您可以:

  • 连接数字音频工作站(DAW),如Ableton Live、Logic Pro或FL Studio,以从该服务器接收MIDI
  • 使用服务器通过计算机的MIDI接口控制硬件合成器
  • 连接到任何其他接受MIDI输入的软件(虚拟乐器、照明控制器等)

只需在首选的MIDI兼容应用程序中选择“MCP MIDI输出”作为MIDI输入设备。

MCP配置

服务器使用服务器发送事件(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

许可证

麻省理工学院