mcpField
M
MCP MIDI Server

MCP MIDI Server

远程服务
github.com/sandst1媒体与设计1780 周前更新
代码仓库

关于 MCP MIDI Server

MCP MIDI Server 是一个 FastMCP 服务,可向支持 MIDI 输入的软件或硬件发送 MIDI 消息和定时音符序列,适用于通过 LLM 控制 MIDI 兼容应用。

主要功能

  1. 01创建虚拟 MIDI 输出端口
  2. 02发送 Note On 和 Note Off 消息
  3. 03发送 Control Change 消息
  4. 04按时间编排 MIDI 事件
  5. 05连接 MIDI 兼容应用

适用场景

  1. 01向数字音频工作站发送音符
  2. 02控制硬件合成器
  3. 03在虚拟乐器中播放定时音符序列
  4. 04向灯光控制器发送 MIDI 输入

MCP 相关

该服务向 MCP 客户端提供发送 MIDI 消息和序列的工具。它使用 SSE,可通过 http://localhost:8123/sse 等端点进行配置。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址http://localhost:8123/sse
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

MCP MIDI 服务

一个 FastMCP 服务,允许大模型向任何支持 MIDI 输入的软件发送 MIDI 序列。

功能

  • 创建虚拟 MIDI 输出端口
  • 发送 MIDI Note On/Off 消息
  • 发送 Control Change(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 等数字音频工作站(DAW)连接到此服务以接收 MIDI
  • 使用此服务通过计算机的 MIDI 接口控制硬件合成器
  • 连接到任何其他接受 MIDI 输入的软件(虚拟乐器、灯光控制器等)

只需在你偏好的 MIDI 兼容应用程序中选择 "MCP MIDI Out" 作为 MIDI 输入设备即可。

MCP 配置

该服务使用 Server-Sent Events(SSE),以下是在 Cursor 中配置的方法:

{
  "mcpServers": {
      "midi": {
          "url": "http://localhost:8123/sse"
      }
   }
}

API 方法

发送 Note On

发送 MIDI Note On 消息。

参数:

  • note:MIDI 音符编号(0-127)
  • velocity:音符力度(0-127,默认值为 127)
  • channel:MIDI 通道(0-15,默认值为 0)
发送 Note Off

发送 MIDI Note Off 消息。

参数:

  • note:MIDI 音符编号(0-127)
  • velocity:Note Off 力度(0-127,默认值为 64)
  • channel:MIDI 通道(0-15,默认值为 0)
发送 Control Change

发送 MIDI Control Change(CC)消息。

参数:

  • controller:CC 控制器编号(0-127)
  • value:CC 值(0-127)
  • channel:MIDI 通道(0-15,默认值为 0)
发送 MIDI 序列

发送具有指定时长的一系列 MIDI Note On/Off 消息。

参数:

  • events:事件字典列表。每个字典必须包含:
    • note:MIDI 音符编号(0-127)
    • velocity:音符力度(0-127,默认值为 127)
    • channel:MIDI 通道(0-15,默认值为 0)
    • duration:发送 Note Off 前保持音符的时间,单位为秒
    • 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。