X

MIDI Output

Information

# 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 1. Clone the repository: \`\`\` git clone cd mcp-server-midi \`\`\` 2. Create a virtual env, activate it and install dependencies: \`\`\` python -m venv .venv source .venv/bin/activate pip install -r requirements.txt \`\`\` 3. Create a \`.env\` file with your configuration: \`\`\` PORT=8123 \`\`\` ## Usage Run the server: \`\`\` python mcp_midi_server.py \`\`\` 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: \`\`\` \{ "mcpServers": \{ "midi": \{ "url": "http://localhost:8123/sse" \} \} \} \`\`\` ## 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 Off - \`start_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: \`\`\`python events = [ \{"note": 60, "velocity": 100, "duration": 1.0, "start_time": 0.0\}, # C4 \{"note": 64, "velocity": 100, "duration": 1.0, "start_time": 0.0\}, # E4 \{"note": 67, "velocity": 100, "duration": 1.0, "start_time": 0.0\}, # G4 ] # Send to the MCP MIDI Server API \`\`\` ## License MIT

Prompts

Reviews

Tags

Write Your Review

Detailed Ratings

ALL
Correctness
Helpfulness
Interesting
Upload Pictures and Videos

Name
Size
Type
Download
Last Modified
  • Community

Add Discussion

Upload Pictures and Videos