Skip to main content
Glama

DAW MIDI Generator MCP 🎡

An MCP (Model Context Protocol) server that enables Claude AI to generate professional MIDI files for any DAW.

License: MIT Python 3.10+


🎹 What It Does

This MCP server gives Claude the ability to generate complete, production-ready MIDI files:

  • Chord Progressions - Any key, any progression (I-V-vi-IV, ii-V-I, custom)

  • Drum Patterns - House, Techno, Trap with precise General MIDI mapping

  • Bass Lines - Steady, Syncopated, Walking patterns

  • Melodies - Major, Minor, Pentatonic scales

  • Full Arrangements - Chords + Drums + Bass in one command

All files are standard MIDI 1.0 compatible with every DAW.


βœ… Compatible DAWs

  • Logic Pro X

  • Ableton Live

  • FL Studio

  • Cubase

  • Pro Tools

  • Reaper

  • Bitwig Studio

  • Studio One

  • GarageBand

  • Any MIDI-compatible software


πŸ“‹ Requirements

  • macOS (tested on Sequoia 15.7.2+) or Linux

  • Python 3.10+

  • Claude Desktop (download here)

  • Any DAW that supports MIDI import


πŸš€ Installation

Step 1: Clone the Repository

git clone https://github.com/s2d01/daw-midi-generator-mcp.git
cd daw-midi-generator-mcp

Step 2: Install Python Dependencies

pip3 install -r requirements.txt

This installs:

  • mcp - Model Context Protocol library

  • mido - MIDI file generation library

Step 3: Get the Absolute Path

pwd

Copy the output (e.g., /Users/yourname/daw-midi-generator-mcp)

Step 4: Configure Claude Desktop

Open Claude Desktop's configuration file:

macOS:

nano ~/Library/Application\ Support/Claude/claude_desktop_config.json

Linux:

nano ~/.config/Claude/claude_desktop_config.json

Add this configuration (replace YOUR_USERNAME with your actual username):

{
  "mcpServers": {
    "daw-midi": {
      "command": "python3",
      "args": ["/Users/YOUR_USERNAME/daw-midi-generator-mcp/midi_generator_server.py"]
    }
  }
}

⚠️ CRITICAL: Use the absolute path from Step 3. Relative paths don't work.

Save the file:

  • In nano: Ctrl+O, Enter, Ctrl+X

Step 5: Restart Claude Desktop

Completely quit Claude Desktop:

  • macOS: Cmd+Q

  • Linux: Close the application

Wait 3 seconds, then reopen Claude Desktop.

Step 6: Verify Installation

Open Claude Desktop and type:

Create a chord progression in C major

Claude should generate a MIDI file and show you the path.


πŸ“‚ Project Structure

daw-midi-generator-mcp/
β”œβ”€β”€ README.md                    # This file
β”œβ”€β”€ midi_generator_server.py     # MCP server (runs automatically)
β”œβ”€β”€ requirements.txt             # Python dependencies
β”œβ”€β”€ LICENSE                      # MIT License
└── .gitignore                  # Git ignore rules

Output Directory

MIDI files are saved to:

~/Music/DAW/Claude_MIDI/

This directory is created automatically the first time the server runs. You don't need to create it manually.


🎼 How It Works

The Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   You ask       β”‚
β”‚   Claude        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚
         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Claude Desktop        β”‚
β”‚   (MCP Client)          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚ JSON-RPC over stdio
         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   midi_generator_server.py  β”‚
β”‚   (MCP Server - Python)     β”‚
β”‚                             β”‚
β”‚   β€’ Receives tool calls     β”‚
β”‚   β€’ Generates MIDI events   β”‚
β”‚   β€’ Creates .mid files      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚
         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   ~/Music/DAW/          β”‚
β”‚   Claude_MIDI/          β”‚
β”‚   β€’ chords_*.mid        β”‚
β”‚   β€’ drums_*.mid         β”‚
β”‚   β€’ bass_*.mid          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Step-by-Step Example

1. You ask Claude:

Generate a house drum pattern at 128 BPM

2. Claude calls the MCP server:

{
  "method": "tools/call",
  "params": {
    "name": "generate_drum_pattern",
    "arguments": {
      "pattern_type": "house",
      "tempo": 128,
      "bars": 4
    }
  }
}

3. The Python server executes:

def create_drum_pattern_midi(pattern_type="house", tempo=128, bars=4):
    # Create MIDI file
    mid = MidiFile()
    track = MidiTrack()
    
    # Add tempo and time signature
    track.append(MetaMessage('set_tempo', tempo=...))
    
    # Generate drum events
    # Kick (MIDI 36) on beats 1, 2, 3, 4
    # Snare (MIDI 38) on beats 2, 4
    # Hi-hat (MIDI 42) on eighth notes
    
    # Save to ~/Music/DAW/Claude_MIDI/drums_house_20241130_154523.mid
    return filepath

4. Claude responds:

πŸ₯ Drum pattern created!

πŸ“ File: /Users/yourname/Music/DAW/Claude_MIDI/drums_house_20241130_154523.mid
🎢 Style: house
⏱️ Tempo: 128 BPM
πŸ“ Bars: 4

πŸ’‘ Import into your DAW and assign to a drum kit!

5. You import the file into your DAW

When Does the Server Run?

The server runs automatically in the background:

  • Starts: When you open Claude Desktop

  • Runs: While Claude Desktop is open

  • Stops: When you quit Claude Desktop

You never run it manually. Claude Desktop handles everything.

The Five Tools

The server exposes 5 tools to Claude:

Tool Name

What It Does

Parameters

generate_chord_progression

Creates chord MIDI files

key, progression, tempo, bars

generate_drum_pattern

Creates drum patterns

pattern_type (house/techno/trap), tempo, bars

generate_bass_line

Creates bass lines

key, pattern (steady/syncopated/walking), tempo, bars

generate_melody

Creates melodies

scale (major/minor/pentatonic), key, tempo, bars

create_full_arrangement

Creates all 3 above

key, genre, tempo, bars


πŸ’¬ Usage Examples

Chord Progressions

Create a chord progression in D minor
Generate a I-V-vi-IV progression in G major at 140 BPM
Make me 8 bars of C - F - Am - G chords
Create a jazz progression in Bb major

Output: Single MIDI file with chord voicings

Drum Patterns

Generate a house pattern at 128 BPM
Create 16 bars of techno drums at 135 BPM
Make me a trap beat
Generate a 4-bar house groove

Styles:

  • house - Four-on-floor kick, snare on 2-4, hi-hats on eighths

  • techno - Driving kick pattern, tight hi-hats, occasional open hats

  • trap - Syncopated kicks, 16th note hi-hats, hard snares

Bass Lines

Create a steady bass in A minor
Generate a syncopated bass in C at 125 BPM
Make me 8 bars of walking bass in F
Create a bass line in E minor

Patterns:

  • steady - Root notes on every beat (4/4 time)

  • syncopated - Off-beat grooves with rests

  • walking - Jazz-style ascending/descending patterns

Melodies

Generate a pentatonic melody in A minor
Create a melody in C major scale
Make me a lead line in E minor
Generate an 8-bar melody

Scales:

  • major - Happy, bright melodies

  • minor - Sad, dark melodies

  • pentatonic - Simple, catchy melodies (great for leads)

Full Arrangements

Create a complete house arrangement in C major at 128 BPM
Generate a techno base in A minor at 135 BPM
Make me 16 bars of trap in G major at 140 BPM
Create a full track arrangement

Output: 3 MIDI files (chords + drums + bass)


πŸ“₯ Importing into Your DAW

Logic Pro X / GarageBand

  1. File β†’ Import β†’ MIDI File

  2. Navigate to ~/Music/DAW/Claude_MIDI/

  3. Select one or more MIDI files

  4. Click Open

Or drag & drop files directly into the timeline.

Ableton Live

  1. Drag MIDI files from Finder into Session or Arrangement View

  2. Ableton automatically creates a new track

  3. Assign an instrument

FL Studio

  1. File β†’ Import β†’ MIDI file

  2. Navigate to ~/Music/DAW/Claude_MIDI/

  3. Select file and import

Cubase / Pro Tools / Reaper / Bitwig

Drag & drop MIDI files into the timeline.


πŸ”§ Technical Details

MIDI Specification

  • Format: MIDI 1.0 standard

  • Timing: 480 PPQ (pulses per quarter note)

  • Drums: General MIDI Channel 10 mapping

    • Kick: MIDI 36

    • Snare: MIDI 38

    • Closed Hi-hat: MIDI 42

    • Open Hi-hat: MIDI 46

  • Velocity: Dynamic (50-100)

  • Time Signature: 4/4 (currently)

Python Architecture

Main Components:

# MIDI Utilities
note_to_midi()        # Convert "C4" β†’ MIDI 60
get_chord_notes()     # Generate chord voicings

# MIDI Generators
create_chord_progression_midi()  # Chords
create_drum_pattern_midi()       # Drums
create_bass_line_midi()          # Bass
create_melody_midi()             # Melodies

# MCP Protocol Handlers
@app.list_tools()     # Exposes tools to Claude
@app.call_tool()      # Executes tool calls

Key Libraries:

  • mido - MIDI file creation and manipulation

  • mcp - Model Context Protocol server implementation

  • asyncio - Asynchronous I/O for MCP communication


πŸ› Troubleshooting

Server Won't Start

Error: ModuleNotFoundError: No module named 'mcp'

Solution:

pip3 install --upgrade mcp mido

Claude Doesn't See the Server

Problem: Claude says "I don't have access to that tool"

Solutions:

  1. Check the config path is absolute:

cat ~/Library/Application\ Support/Claude/claude_desktop_config.json

Should show: /Users/yourname/daw-midi-generator-mcp/midi_generator_server.py

Not: ~/daw-midi-generator-mcp/... ❌

  1. Check the logs:

tail -f ~/Library/Logs/Claude/mcp*.log

Look for:

[daw-midi] [info] Server started and connected successfully
  1. Completely restart Claude Desktop:

  • Cmd+Q (not just close window)

  • Wait 5 seconds

  • Reopen

Test the Server Manually

cd ~/daw-midi-generator-mcp
python3 midi_generator_server.py

Should output:

🎡 DAW MIDI Generator - MCP Server started!
πŸ“ MIDI files will be saved to: /Users/yourname/Music/DAW/Claude_MIDI

Press Ctrl+C to stop.

MIDI Files Are Empty or Don't Play

Check:

  • βœ… Assigned an instrument to the track

  • βœ… Track volume is not zero

  • βœ… Track is not muted

  • βœ… Using the correct MIDI channel (drums = channel 10)

Output Directory Not Created

The directory ~/Music/DAW/Claude_MIDI/ is created automatically by this line:

MIDI_OUTPUT_DIR.mkdir(parents=True, exist_ok=True)

If it doesn't exist:

  • The server hasn't run yet

  • Check file permissions on ~/Music/


πŸ› οΈ Customization

Change Output Directory

Edit midi_generator_server.py:

# Line ~25
MIDI_OUTPUT_DIR = Path.home() / "Music" / "YOUR_FOLDER" / "MIDI"

Add New Drum Patterns

Edit the patterns dict in create_drum_pattern_midi():

patterns = {
    "house": [...],
    "techno": [...],
    "trap": [...],
    "your_style": [...]  # Add here
}

Add New Scales

Edit the scales dict in create_melody_midi():

scales = {
    "major": [0, 2, 4, 5, 7, 9, 11, 12],
    "minor": [0, 2, 3, 5, 7, 8, 10, 12],
    "pentatonic": [0, 2, 4, 7, 9, 12],
    "blues": [0, 3, 5, 6, 7, 10, 12],  # Add here
}

Add New Tools

  1. Create a new generator function

  2. Register it in @app.list_tools()

  3. Handle it in @app.call_tool()

After any changes: Restart Claude Desktop


πŸ—ΊοΈ Roadmap

  • Support for alternate time signatures (3/4, 6/8, 7/8)

  • More drum patterns (breakbeat, dnb, funk)

  • Advanced chord voicings (9th, 11th, 13th)

  • Arpeggiators

  • Swing/groove quantization

  • MusicXML export

  • Integration with AI music generation models


🀝 Contributing

Pull requests are welcome! For major changes, please open an issue first.

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/AmazingFeature)

  3. Commit your changes (git commit -m 'Add AmazingFeature')

  4. Push to the branch (git push origin feature/AmazingFeature)

  5. Open a Pull Request

Ideas for contributions:

  • More drum patterns

  • Additional scales and modes

  • Chord voicing variations

  • Time signature support

  • Humanization/randomization

  • MIDI effects (swing, velocity curves)


πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ‘€ Author

S2D01


πŸ™ Acknowledgments

  • Built with Anthropic's Claude and Model Context Protocol

  • MIDI handling powered by mido

  • Inspired by the need for AI-assisted music production


⭐ Support

If you find this project useful:

  • ⭐ Star this repository

  • πŸ› Report bugs in Issues

  • πŸ’‘ Suggest features in Issues

  • πŸ”§ Contribute code via Pull Requests


🎡 Happy music making!

-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/s2d01/daw-midi-generator-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server