README
🚀 MIDI MCP 服务器
MIDI MCP 服务器是一款基于模型上下文协议(MCP)的强大服务器工具,它能够借助标准化接口,让人工智能模型从文本化的音乐数据生成 MIDI 文件,实现音乐作品的程序化创作。

🚀 快速开始
安装
执行以下命令完成安装和构建:
npm install
npm run build
使用说明(与 MCP 客户端配合,例如 Cline)
在构建项目后,只需将服务器添加到您的 MCP 客户端配置中:
"mcpServers": {
"musicComposer": {
"command": "node",
"args": ["/path/to/midi-mcp-server/build/index.js"]
}
}
请将 /path/to/ 替换为您实际的项目路径。
✨ 主要特性
- 从结构化的 JSON 音乐数据生成 MIDI 文件
- 支持多轨道和多种乐器
- 可自定义的速度、节拍签名和音符属性
- 将 MIDI 文件保存到指定位置
📦 安装指南
npm install
npm run build
💻 使用示例
基础用法
服务器提供了一个名为 create_midi 的工具,用于从结构化的音乐数据生成 MIDI 文件。以下是输入参数说明:
title: 字符串 - 作品标题composition: 字符串 - 表示音乐数据的 JSON 字符串output_path: 字符串 - MIDI 文件保存路径
音乐数据应遵循以下结构:
{
"bpm": 数字,
"timeSignature": { "numerator": 数字, "denominator": 数字 },
"tracks": [
{
"name": 字符串,
"instrument": 数字,
"notes": [
{ "pitch": 数字, "startTime": 数字, "duration": 数字, "velocity": 数字 }
]
}
]
}
属性说明
bpm: 每分钟节拍数timeSignature: 节拍签名(例如,{numerator: 4, denominator: 4}表示 4/4 节拍)tracks: 乐器轨道数组name: 轨道名称instrument: MIDI 程序编号(0 - 127)notes: 音符对象数组pitch: MIDI 音高编号(0 - 127)startTime: 开始时间(节拍为单位)duration: 音符时值(节拍为单位)velocity: 音符力度/音量(0 - 127)
高级用法
以下是一个具体的音乐数据示例:
const composition = {
"bpm": 120,
"timeSignature": { "numerator": 4, "denominator": 4 },
"tracks": [
{
"name": "钢琴",
"instrument": 0,
"notes": [
{ "pitch": 60, "startTime": 0, "duration": 1, "velocity": 100 },
{ "pitch": 64, "startTime": 1, "duration": 1, "velocity": 100 },
{ "pitch": 67, "startTime": 2, "duration": 1, "velocity": 100 }
]
}
]
};
📚 详细文档
依赖项
- @modelcontextprotocol/sdk: MCP 服务器实现
- midi - writer - js: 创建 MIDI 文件的库
示例演示
例如,以下提示请求生成一个 8 小节的小调合唱乐曲:
8小節の合唱曲を作って。
若干マイナー調で、メロディックな音階を作ってほしい
⚠️ 重要提示
此 MCP 服务器在本地运行,通过标准输入输出(stdio)进行通信。无需网络配置,因为 MCP 客户端会自动启动服务器进程并建立连接。
Scan to join WeChat group