关于 MCP MIDI Server
MCP MIDI Server 是一个 FastMCP 服务,可向支持 MIDI 输入的软件或硬件发送 MIDI 消息和定时音符序列,适用于通过 LLM 控制 MIDI 兼容应用。
主要功能
- 01创建虚拟 MIDI 输出端口
- 02发送 Note On 和 Note Off 消息
- 03发送 Control Change 消息
- 04按时间编排 MIDI 事件
- 05连接 MIDI 兼容应用
适用场景
- 01向数字音频工作站发送音符
- 02控制硬件合成器
- 03在虚拟乐器中播放定时音符序列
- 04向灯光控制器发送 MIDI 输入
MCP 相关
该服务向 MCP 客户端提供发送 MIDI 消息和序列的工具。它使用 SSE,可通过 http://localhost:8123/sse 等端点进行配置。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
服务地址
http://localhost:8123/sse一键复制安装命令
Claude CodeTerminal
claude mcp add --transport http midi http://localhost:8123/sseCursor.cursor/mcp.json
{"mcpServers":{"midi":{"type":"http","url":"http://localhost:8123/sse"}}}在 Cursor 中打开VS Code.vscode/mcp.json
{"servers":{"midi":{"type":"http","url":"http://localhost:8123/sse"}}}在 VS Code 中打开Claude Desktopclaude_desktop_config.json
{"mcpServers":{"midi":{"type":"http","url":"http://localhost:8123/sse"}}}Windsurf~/.codeium/windsurf/mcp_config.json
{"mcpServers":{"midi":{"serverUrl":"http://localhost:8123/sse"}}}命令在终端中运行;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
安装
-
克隆代码仓库:
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 兼容应用程序中选择 "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
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。