mcpField
M
MIDI MCP Server

MIDI MCP Server

本地服务
github.com/tubone24媒体与设计5728 周前更新

关于 MIDI MCP Server

MIDI MCP Server 是一个 MCP 服务,让 AI 模型根据结构化的 JSON 乐曲数据生成 MIDI 文件。它支持和弦名称输入,并提供钢琴卷帘预览界面,适合需要以程序方式创作音乐的用户。

主要功能

  1. 01create_midi 工具生成 MIDI 文件
  2. 02parse_chord 工具解析和弦音高
  3. 03支持 MIDI 编号、音名、音高数组和和弦名
  4. 0425 种以上和弦类型
  5. 05灵活的时值表示,包括附点和三连音
  6. 067 份内置乐理参考资源

适用场景

  1. 01根据提示词生成多声部合唱或旋律片段
  2. 02查看和弦的构成音后再编排乐曲
  3. 03通过 MCP 客户端在对话中预览钢琴卷帘和播放音频

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露 create_midi 和 parse_chord 两个工具,并以 MCP 资源的形式提供乐理参考文档。支持 stdio、HTTP 以及 Cloudflare Workers 远程部署方式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MseeP.ai 安全评估徽章

已通过 MseeP 验证

MIDI MCP 服务

一个用于 AI 驱动的 MIDI 创作的 Model Context Protocol (MCP) 服务。通过结构化 JSON 数据生成 MIDI 文件,支持和弦名称、交互式钢琴卷帘预览界面和多种部署模式。

演示

想了解 Agent Skills 方案? 它能用更少的上下文创作出更好的歌曲: tubone24/midi-agent-skill


功能

  • 两种 MCP 工具:create_midi(带交互式预览界面)和 parse_chord
  • 丰富的音高输入:MIDI 数字、音符名称字符串("C4")、音高数组或和弦名称("Cmaj7")
  • 和弦库:25 种以上的和弦类型——大调、小调、减和弦、增和弦、七和弦、大七和弦、小七和弦、挂二和弦、挂四和弦、强力和弦等
  • 灵活的时值:数字节拍、标准字符串('4'、'8')、附点('d4')、三连音('T8')
  • 乐理资源:7 篇内置参考文档,可作为 MCP 资源访问
  • 三种传输模式:stdio、HTTP 或 Cloudflare Workers(远程)
  • MCP App 界面:在对话中直接呈现钢琴卷帘可视化和音频播放

部署选项

选项 A — 远程(Cloudflare Workers)

现已提供预部署的远程服务:

https://midi-mcp-server.tubone24.workers.dev/mcp

将其添加到任何支持 Streamable HTTP 的 MCP 客户端(例如 Claude.ai):

{
  "mcpServers": {
    "midi": {
      "type": "http",
      "url": "https://midi-mcp-server.tubone24.workers.dev/mcp"
    }
  }
}
选项 B — 本地 stdio(推荐用于桌面客户端)

构建并配置为本地 stdio 服务:

npm install
npm run build
{
  "mcpServers": {
    "musicComposer": {
      "command": "node",
      "args": ["/path/to/midi-mcp-server/build/index.js"]
    }
  }
}
选项 C — 本地 HTTP

作为本地 Streamable HTTP 服务运行:

node build/index.js --http
# or with a custom port:
node build/index.js --http --port=8080

服务提供:

  • POST /mcp — MCP Streamable HTTP 端点
  • GET /health — 健康检查({"status":"ok","version":"0.2.0"})

工具

create_midi

根据结构化创作数据生成 MIDI 文件。返回 Base64 编码的 MIDI,并在支持的 MCP 客户端(MCP App)中呈现交互式钢琴卷帘预览和音频播放。

MIDI

输入

字段类型必填描述
titlestring✓创作标题
compositionobject✓创作数据(参见下方架构)

输出(结构化内容)

字段类型描述
midiBase64stringBase64 编码的 MIDI 文件数据
titlestring创作标题
bpmnumber使用的速度
trackCountnumber生成的音轨数量

parse_chord

解析和弦名称并返回其组成的 MIDI 音高和音符名称。可用于在创作前了解和弦转位。

输入

字段类型必填描述
chordstring✓和弦名称,例如 "Cmaj7"、"F#m7"、"G7sus4"
octavenumber—根音八度(默认值:4)

输出示例

{
  "chord": "Cmaj7",
  "octave": 4,
  "midiNumbers": [60, 64, 67, 71],
  "noteNames": ["C4", "E4", "G4", "B4"]
}

创作架构

{
  "bpm": 120,                              // tempo (also accepted: "tempo")
  "timeSignature": { "numerator": 4, "denominator": 4 },  // optional, default 4/4
  "tracks": [
    {
      "name": "Piano",                     // optional
      "instrument": 0,                     // GM program number 0–127 (optional)
      "notes": [
        {
          "pitch": 60,                     // MIDI number, note name "C4", or array [60, 64, 67]
          "chord": "Cmaj7",                // OR use chord name (overrides pitch)
          "beat": 1,                       // beat position (1-based); OR use startTime
          "startTime": 0,                  // tick offset (alias: "time")
          "duration": "4",                 // see Duration Reference below
          "velocity": 100,                 // 0–127 (optional, default 100)
          "channel": 0                     // MIDI channel 0–15 (optional)
        }
      ]
    }
  ]
}
音高输入格式
格式示例描述
MIDI 数字60标准 MIDI 音符编号(0–127)
音符名称"C4"字母 + 可选变音记号 + 八度
音高数组[60, 64, 67]同时演奏的多个音高
和弦字段chord: "Cmaj7"自动展开和弦名称

支持的变音记号:#(升号)、b(降号)。示例:"F#5"、"Bb3"。

时值参考
值描述
'1'全音符
'2'二分音符
'4'四分音符
'8'八分音符
'16'十六分音符
'32'三十二分音符
'd1' 'd2' 'd4' 'd8' 'd16'附点变体
'dd4'复附点四分音符
'T4' 'T8' …三连音变体
4(数字)基于拍数:1=四分音符,2=二分音符,4=全音符,0.5=八分音符
支持的和弦性质
性质示例描述
(无) / majC,Cmaj大调
m / minDm小调
dimBdim减和弦
augEaug增和弦
7G7属七和弦
maj7 / M7Cmaj7大七和弦
m7 / min7Am7小七和弦
dim7Bdim7减七和弦
m7b5Bm7b5半减和弦
aug7Eaug7增七和弦
6 / m6C6,Am6六和弦
9 / maj9 / m9G9九和弦变体
add9Cadd9加九和弦
11 / 13C11延伸和弦
sus2 / sus4Gsus4挂留和弦
7sus4 / 7sus2G7sus4七和弦挂留和弦
power / 5G5强力和弦

MCP 资源

该服务以 MCP 资源的形式提供 7 份音乐理论参考文档:

URI描述
music-theory://harmony音程、和弦类型、自然调和弦、终止式、声部进行
music-theory://chord-progressions按情绪/流派分类的常见和弦进行、替代和弦、转调
music-theory://counterpoint对位法各类规则、协和/不协和、进行类型
music-theory://modes-scales自然调式、小调音阶变体、五声音阶/布鲁斯音阶、流派指南
music-theory://orchestration乐器音域、GM 音色编号、织体类型
music-theory://rhythm-patterns拍号、MIDI 时值参考、流派律动
music-theory://voice-leading禁止平行进行、声部配置策略、非和弦音

支持读取资源的 MCP 客户端可以将这些内容作为上下文传递给 AI,从而实现兼顾乐理的创作。


创作示例

const composition = {
  bpm: 120,
  timeSignature: { numerator: 4, denominator: 4 },
  tracks: [
    {
      name: "Piano",
      instrument: 0,
      notes: [
        { chord: "Cmaj7", beat: 1, duration: "2", velocity: 90 },
        { chord: "Am7",   beat: 3, duration: "2", velocity: 90 },
        { chord: "Fmaj7", beat: 5, duration: "2", velocity: 90 },
        { chord: "G7",    beat: 7, duration: "2", velocity: 90 }
      ]
    },
    {
      name: "Melody",
      instrument: 0,
      notes: [
        { pitch: "E4", beat: 1, duration: "4", velocity: 100 },
        { pitch: "G4", beat: 2, duration: "4", velocity: 100 },
        { pitch: "A4", beat: 3, duration: "2", velocity: 110 }
      ]
    }
  ]
};

演示

以下提示词会生成一段 8 小节的旋律小调合唱曲:

Create an 8-bar choral piece in a slightly minor, melodic scale.

https://github.com/user-attachments/assets/e20ebef0-fdbf-4e72-910d-41b94183f9d9

旋律小调合唱曲.mid


构建与开发

npm install

# Full build (UI + server)
npm run build

# Build steps individually
npm run build:ui     # Vite — builds the MCP App preview HTML
npm run build:server # tsc — compiles TypeScript server

# Deploy to Cloudflare Workers
npm run deploy

# Run tests
npm test
npm run test:coverage

依赖项

软件包用途
@modelcontextprotocol/sdkMCP 服务实现(stdio 和 HTTP 传输)
@modelcontextprotocol/ext-appsMCP Apps 扩展——在对话中提供交互式 UI
midi-writer-jsMIDI 文件生成
@tonejs/midiMIDI 解析(预览 UI)
soundfont-player预览 UI 中的音频播放
zod输入模式验证

评论

支持 Markdown

第一次接触 MCP?

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

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