DAW MIDI Generator MCP

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.

Category
访问服务器

README

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!

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选