返回市场
MCP服务器-音序器

MCP服务器-音序器

作者:sandst111 星标更新:2025-04-16

项目介绍

MCP MIDI 服务器

这是一个FastMCP服务器,允许大型语言模型(LLM)向支持MIDI输入的任何软件发送MIDI序列。

特性

  • 创建一个虚拟的MIDI输出端口
  • 发送MIDI音符开/关消息
  • 发送控制变化(CC)消息
  • 按精确时间顺序排列MIDI事件
  • 可作为任何支持MIDI的应用程序中的MIDI输入设备使用

要求

  • Python 3.7+
  • rtmidi
  • fastmcp
  • python-dotenv
  • asyncio

安装

  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输入设备。这意味着你可以:

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

只需在你喜欢的MIDI兼容应用中选择"MCP MIDI Out"作为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
]
# 发送到MCP MIDI服务器API

许可证

MIT