local-only server
The server can only run on the client’s local machine because it depends on local resources.
Integrations
Enables configuration of the MCP server through environment variables stored in a .env file, allowing users to specify settings like the server port.
Provides installation instructions that utilize Git for cloning the repository to set up the MCP MIDI server.
Creates a virtual MIDI output port that can send MIDI Note On/Off messages and Control Change (CC) messages with precise timing to any software that supports MIDI input, such as digital audio workstations (DAWs), hardware synthesizers, and other MIDI-compatible applications.
MCP MIDI Server
A FastMCP Server which allows an LLM to send MIDI sequences into any software that supports MIDI input.
Features
- Creates a virtual MIDI output port
- Sends MIDI Note On/Off messages
- Sends Control Change (CC) messages
- Sequences MIDI events with precise timing
- Can be used as a MIDI input device in any application that supports MIDI
Requirements
- Python 3.7+
- rtmidi
- fastmcp
- python-dotenv
- asyncio
Installation
- Clone the repository:Copy
- Create a virtual env, activate it and install dependencies:Copy
- Create a
.env
file with your configuration:Copy
Usage
Run the server:
The server creates a virtual MIDI port named "MCP MIDI Out" that can be used as a MIDI input device in other applications. This means you can:
- Connect digital audio workstations (DAWs) like Ableton Live, Logic Pro, or FL Studio to receive MIDI from this server
- Use the server to control hardware synthesizers through your computer's MIDI interface
- Connect to any other software that accepts MIDI input (virtual instruments, lighting controllers, etc.)
Simply select "MCP MIDI Out" as a MIDI input device in your preferred MIDI-compatible application.
MCP Config
The server uses Server-Sent Events (SSE), this is how to config it in Cursor:
API Methods
Send Note On
Sends a MIDI Note On message.
Parameters:
note
: MIDI note number (0-127)velocity
: Note velocity (0-127, default 127)channel
: MIDI channel (0-15, default 0)
Send Note Off
Sends a MIDI Note Off message.
Parameters:
note
: MIDI note number (0-127)velocity
: Note off velocity (0-127, default 64)channel
: MIDI channel (0-15, default 0)
Send Control Change
Sends a MIDI Control Change (CC) message.
Parameters:
controller
: CC controller number (0-127)value
: CC value (0-127)channel
: MIDI channel (0-15, default 0)
Send MIDI Sequence
Sends a sequence of MIDI Note On/Off messages with specified durations.
Parameters:
events
: A list of event dictionaries. Each dictionary must contain:note
: MIDI note number (0-127)velocity
: Note velocity (0-127, default 127)channel
: MIDI channel (0-15, default 0)duration
: Time in seconds to hold the note before sending Note Offstart_time
: Time in seconds when to start the note, relative to sequence start (default 0)
Example
Using the API to play a C major chord:
License
MIT
This server cannot be installed
A FastMCP server that creates a virtual MIDI output port, allowing LLMs to generate and send MIDI data to any software that accepts MIDI input.