MIDI MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MIDI MCP ServerCreate a MIDI file with a C major chord progression"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MIDI MCP Server
A Model Context Protocol (MCP) server for AI-driven MIDI composition. Generate MIDI files from structured JSON data, with chord name support, an interactive piano-roll preview UI, and multiple deployment modes.

Looking for the Agent Skills approach? It composes better songs with less context: tubone24/midi-agent-skill
Features
Two MCP tools:
create_midi(with interactive preview UI) andparse_chordRich pitch input: MIDI numbers, note name strings (
"C4"), pitch arrays, or chord names ("Cmaj7")Chord library: 25+ chord qualities — major, minor, dim, aug, 7th, maj7, m7, sus2, sus4, power, and more
Flexible durations: numeric beats, standard strings (
'4','8'), dotted ('d4'), triplet ('T8')Music theory resources: 7 built-in reference documents accessible as MCP resources
Three transport modes: stdio, HTTP, or Cloudflare Workers (remote)
MCP App UI: Piano-roll visualization and audio playback rendered directly in the conversation
Related MCP server: CHUK Music MCP Server
Deployment Options
Option A — Remote (Cloudflare Workers)
A pre-deployed remote server is available:
https://midi-mcp-server.tubone24.workers.dev/mcpAdd it to any MCP client that supports Streamable HTTP (e.g., Claude.ai):
{
"mcpServers": {
"midi": {
"type": "http",
"url": "https://midi-mcp-server.tubone24.workers.dev/mcp"
}
}
}Option B — Local stdio (recommended for desktop clients)
Build and configure as a local stdio server:
npm install
npm run build{
"mcpServers": {
"musicComposer": {
"command": "node",
"args": ["/path/to/midi-mcp-server/build/index.js"]
}
}
}Option C — Local HTTP
Run as a local Streamable HTTP server:
node build/index.js --http
# or with a custom port:
node build/index.js --http --port=8080The server exposes:
POST /mcp— MCP Streamable HTTP endpointGET /health— Health check ({"status":"ok","version":"0.2.0"})
Tools
create_midi
Generate a MIDI file from structured composition data. Returns base64-encoded MIDI and renders an interactive piano-roll preview with audio playback in supported MCP clients (MCP App).

Input
Field | Type | Required | Description |
|
| ✓ | Title of the composition |
|
| ✓ | Composition data (see schema below) |
Output (structured content)
Field | Type | Description |
|
| Base64-encoded MIDI file data |
|
| Composition title |
|
| Tempo used |
|
| Number of tracks generated |
parse_chord
Parse a chord name and return its component MIDI pitches and note names. Useful for understanding voicings before composing.
Input
Field | Type | Required | Description |
|
| ✓ | Chord name, e.g. |
|
| — | Root octave (default: |
Output example
{
"chord": "Cmaj7",
"octave": 4,
"midiNumbers": [60, 64, 67, 71],
"noteNames": ["C4", "E4", "G4", "B4"]
}Composition Schema
{
"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)
}
]
}
]
}Pitch Input Formats
Format | Example | Description |
MIDI number |
| Standard MIDI note number (0–127) |
Note name |
| Letter + optional accidental + octave |
Pitch array |
| Multiple pitches played simultaneously |
Chord field |
| Chord name expanded automatically |
Supported accidentals: # (sharp), b (flat). Examples: "F#5", "Bb3".
Duration Reference
Value | Description |
| Whole note |
| Half note |
| Quarter note |
| Eighth note |
| Sixteenth note |
| Thirty-second note |
| Dotted variants |
| Double-dotted quarter |
| Triplet variants |
| Beat-based: |
Supported Chord Qualities
Quality | Example | Description |
(none) / |
| Major |
|
| Minor |
|
| Diminished |
|
| Augmented |
|
| Dominant 7th |
|
| Major 7th |
|
| Minor 7th |
|
| Diminished 7th |
|
| Half-diminished |
|
| Augmented 7th |
|
| 6th |
|
| 9th variants |
|
| Add 9th |
|
| Extended |
|
| Suspended |
|
| 7th suspended |
|
| Power chord |
MCP Resources
The server exposes 7 music theory reference documents as MCP resources:
URI | Description |
| Intervals, chord types, diatonic chords, cadences, voice leading |
| Common progressions by mood/genre, substitutions, modulation |
| Species counterpoint rules, consonance/dissonance, motion types |
| Diatonic modes, minor scale variants, pentatonic/blues, genre guide |
| Instrument ranges, GM program numbers, texture types |
| Time signatures, MIDI duration reference, genre grooves |
| Forbidden parallels, voicing strategies, non-chord tones |
MCP clients that support resource reading can pass these to the AI as context, enabling theory-aware composition.
Example Composition
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 }
]
}
]
};Demo
The prompt below generates an 8-bar melodic minor choral piece:
Create an 8-bar choral piece in a slightly minor, melodic scale.https://github.com/user-attachments/assets/e20ebef0-fdbf-4e72-910d-41b94183f9d9
Build & Development
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:coverageDependencies
Package | Purpose |
| MCP server implementation (stdio & HTTP transports) |
| MCP Apps extension — interactive UI in conversation |
| MIDI file generation |
| MIDI parsing (preview UI) |
| Audio playback in preview UI |
| Input schema validation |
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables LLMs to compose and play multi-track MIDI music through natural language prompts. Supports outputting to software or hardware synthesizers for enhanced audio quality.Last updated26524MIT
- Alicense-qualityDmaintenanceEnables AI-assisted music composition through copyable pattern templates, style constraints, and arrangement tools that compile to MIDI files. Provides 30+ tools for managing musical structures, layers, patterns, and styles with deterministic compilation from YAML arrangements.Last updated1MIT
- Alicense-qualityBmaintenanceIntegrates AI-powered music generation with professional production tools, enabling autonomous music creation workflows from MIDI input to live streaming.Last updated2MIT
- Alicense-qualityBmaintenanceEnables LLMs to compose music by describing musical intent using high-level operations like notes, chords, dynamics, and tempo, then renders the composition into standard MIDI files.Last updated7MIT
Related MCP Connectors
Create and track AI music videos and audio-reactive visuals from songs.
Build, validate, and deploy multi-agent AI solutions from any AI environment.
Deterministic music theory for agents: analyze, voice, reharmonize, conduct — computed, not guessed
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tubone24/midi-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server