使用说明

项目简介

本项目是一个基于 Model Context Protocol (MCP) 的服务器实现,专注于 MIDI (Musical Instrument Digital Interface) 功能。它允许大型语言模型 (LLM) 通过标准化的 MCP 协议,向任何支持 MIDI 输入的软件或硬件设备发送 MIDI 指令。这使得 LLM 能够控制音乐软件(如 DAW 数字音频工作站)、硬件合成器或其他 MIDI 兼容设备,从而实现音乐创作、表演控制等应用场景。

主要功能点

  • 虚拟 MIDI 输出端口: 创建一个名为 "MCP MIDI Out" 的虚拟 MIDI 端口,可在操作系统中被识别为 MIDI 输入设备。
  • MIDI 指令发送: 支持发送 MIDI Note On/Off (音符开关)、Control Change (CC,控制变化) 等常用 MIDI 指令。
  • MIDI 序列控制: 支持按照预设的时间序列发送一系列 MIDI 事件,实现节奏和旋律的精确控制。
  • 实时控制能力: LLM 可以通过调用服务器提供的工具,实时发送 MIDI 指令,与音乐软件或硬件进行互动。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/sandst1/mcp-server-midi
    cd mcp-server-midi
  2. 创建并激活虚拟环境 (推荐):

    python -m venv .venv
    source .venv/bin/activate  # 或 .venv\Scripts\activate (Windows)
  3. 安装依赖:

    pip install -r requirements.txt
  4. 配置环境变量:

    • 创建一个 '.env' 文件在项目根目录下。
    • 在 '.env' 文件中设置服务器端口号,例如:
      PORT=8000
      你可以根据需要修改端口号。

服务器配置

MCP 客户端需要以下配置信息来连接到 MCP MIDI Server。请将以下 JSON 配置添加到你的 MCP 客户端配置中:

{
  "serverName": "MCP MIDI Server",
  "command": "python",
  "args": ["mcp_midi_server.py"],
  "transport": "sse",
  "settings": {
    "port": 8000  // 确保与 .env 文件中配置的 PORT 一致
  }
}

配置参数说明:

  • 'serverName': 服务器名称,用于在 MCP 客户端中标识和显示。
  • 'command': 启动服务器的命令,这里使用 'python' 解释器。
  • 'args': 启动命令的参数,指定服务器脚本文件为 'mcp_midi_server.py'。
  • 'transport': MCP 客户端与服务器通信的传输协议,这里使用 'sse' (Server-Sent Events)。
  • 'settings.port': 服务器监听的端口号,需要与 '.env' 文件或实际运行环境中的端口号保持一致。 如果 '.env' 文件中 'PORT' 设置为其他值,这里也需要相应修改。

注意: MCP 客户端需要能够执行 'python mcp_midi_server.py' 命令来启动服务器。请确保你的 MCP 客户端运行环境中已安装 Python 和项目依赖。

基本使用方法

  1. 启动 MCP MIDI Server: 在项目根目录下,运行命令 'python mcp_midi_server.py' 启动服务器。服务器将会在指定的端口 (默认为 8000) 监听来自 MCP 客户端的请求,并创建一个名为 "MCP MIDI Out" 的虚拟 MIDI 端口。

  2. 配置 MIDI 软件: 打开任何支持 MIDI 输入的音乐软件 (例如 Ableton Live, Logic Pro, FL Studio 等) 或硬件设备,在其 MIDI 输入设置中选择 "MCP MIDI Out" 作为 MIDI 输入设备。

  3. 通过 MCP 客户端控制: 使用 MCP 客户端连接到 MCP MIDI Server。客户端可以通过调用服务器提供的 "工具 (Tools)",例如 'send_note_on', 'send_note_off', 'send_control_change', 'send_midi_sequence' 等,向 "MCP MIDI Out" 端口发送 MIDI 指令,从而控制连接的音乐软件或硬件设备。

    例如,在 MCP 客户端中调用 'send_note_on' 工具并传入音符、力度、通道等参数,即可在音乐软件中听到相应的音符。调用 'send_midi_sequence' 可以播放预设的 MIDI 序列。

API 方法 (Tools) 概览

  • 'send_note_on(note, velocity=127, channel=0)': 发送 Note On 音符开启指令。
  • 'send_note_off(note, velocity=64, channel=0)': 发送 Note Off 音符关闭指令。
  • 'send_control_change(controller, value, channel=0)': 发送 MIDI 控制变化 (CC) 指令。
  • 'send_midi_sequence(events)': 发送 MIDI 音符序列,支持指定每个音符的音高、力度、持续时间和起始时间。

信息

分类

桌面与硬件