DAW MIDI Generator MCP
Enables Claude AI to generate professional, production-ready MIDI files (chord progressions, drum patterns, bass lines, melodies, and full arrangements) compatible with any DAW including Logic Pro, Ableton Live, FL Studio, and more.
README
DAW MIDI Generator MCP 🎵
An MCP (Model Context Protocol) server that enables Claude AI to generate professional MIDI files for any DAW.
🎹 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 librarymido- 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
- File → Import → MIDI File
- Navigate to
~/Music/DAW/Claude_MIDI/ - Select one or more MIDI files
- Click Open
Or drag & drop files directly into the timeline.
Ableton Live
- Drag MIDI files from Finder into Session or Arrangement View
- Ableton automatically creates a new track
- Assign an instrument
FL Studio
- File → Import → MIDI file
- Navigate to
~/Music/DAW/Claude_MIDI/ - 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 manipulationmcp- Model Context Protocol server implementationasyncio- 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:
- 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/... ❌
- Check the logs:
tail -f ~/Library/Logs/Claude/mcp*.log
Look for:
[daw-midi] [info] Server started and connected successfully
- 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
- Create a new generator function
- Register it in
@app.list_tools() - 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.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - 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
- GitHub: @s2d01
- Website: s2d01.github.io
🙏 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!
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。