Here is MIDI MCP Remote Server!
https://midi-mcp-server.tubone24.workers.dev
If you configure it on an MCP host that supports MCP Apps such as Claude.ai, you can create music whilst visualising the MIDI creation process.
Another implementation method uses Agent Skills. This approach can compose better songs with less context.
https://github.com/tubone24/midi-agent-skill
MIDI MCP Server is a Model Context Protocol (MCP) server that enables AI models to generate MIDI files from text-based music data. This tool allows for programmatic creation of musical compositions through a standardized interface.
npm install
npm run buildAfter building the project, simply add the server to your MCP client configuration:
"mcpServers": {
"musicComposer": {
"command": "node",
"args": ["/path/to/midi-mcp-server/build/index.js"]
}
}Replace /path/to/ with the actual path to your project directory.
- Generate MIDI files from structured JSON music data
- Support for multiple tracks and instruments
- Customizable tempo, time signature, and note properties
- Save MIDI files to specified locations
The server provides a tool called create_midi that generates MIDI files from structured music data.
title: String - The title of the compositioncomposition: String - A JSON string representing the music dataoutput_path: String - Path where the MIDI file will be saved
The composition should follow this structure:
{
"bpm": number,
"timeSignature": { "numerator": number, "denominator": number },
"tracks": [
{
"name": string,
"instrument": number,
"notes": [
{ "pitch": number, "startTime": number, "duration": number, "velocity": number }
]
}
]
}bpm: Tempo in beats per minutetimeSignature: Time signature (e.g.,{numerator: 4, denominator: 4}for 4/4 time)tracks: Array of instrument tracksname: Track nameinstrument: MIDI program number (0-127)notes: Array of note objectspitch: MIDI note number (0-127)startTime: Start time in beatsduration: Note duration in beatsvelocity: Note velocity/volume (0-127)
const composition = {
"bpm": 120,
"timeSignature": { "numerator": 4, "denominator": 4 },
"tracks": [
{
"name": "Piano",
"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 server implementation
- midi-writer-js: Library for creating MIDI files
For example, the prompt below, which is a request to create a minor scale 8-bar choral piece, can be processed by the server:
8小節の合唱曲を作って。
若干マイナー調で、メロディックな音階を作ってほしい
2.mp4
This MCP server runs locally and communicates via standard input/output (stdio). No network configuration is required as the MCP client will automatically start the server process and establish communication.



