ableton-and-max-mcp
Provides tools for interacting with Max for Live devices in Ableton Live, enabling AI agents to control Max patches, parameters, and send messages.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ableton-and-max-mcpCreate a MIDI track and generate a chord progression in C major"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Ableton Live + Max for Live MCP Server
Production-grade, zero-latency MCP (Model Context Protocol) server for controlling Ableton Live and Max for Live directly from Claude AI.
Overview
This project gives Claude AI complete programmatic control over Ableton Live and Max for Live through the Model Context Protocol (MCP). Generate music patterns, manage tracks, edit MIDI, control synthesizers, and interact with Max patches—all directly from Claude conversations.
Why this matters:
No GUI clicking — describe what you want, Claude does it
Reproducible workflows — save and version your music configurations
Real-time collaboration — Claude can analyze and modify your project live
Pattern generation — AI-powered MIDI generation (arpeggio, chord, scales, etc.)
Related MCP server: Ableton MCP
Performance
Metric | Value |
Startup Time | ~50ms (Bun) |
OSC Latency | 1-2ms per command |
Memory Usage | <20MB |
Compiled Size | 1,245 lines JavaScript |
Throughput | 100+ commands/sec |
Quick Start
Prerequisites
# Install Bun (3x faster than Node.js)
curl -fsSL https://bun.sh/install | bash
# Ableton Live 11+ with AbletonOSC Remote Script
# Download: https://github.com/Fd2014/AbletonOSCInstallation
git clone https://github.com/TropinAlexey/ableton-and-max-mcp.git
cd ableton-and-max-mcp
bun install
bun startConfigure Claude Code
Edit ~/.config/Claude/claude_desktop_config.json:
{
"mcpServers": {
"ableton": {
"command": "bun",
"args": ["run", "/path/to/ableton-and-max-mcp/src/index.js"]
}
}
}Restart Claude Code → 42 new tools available!
Architecture
┌─────────────────────────────────────────────────────────┐
│ Claude AI │
│ (MCP Client / Conversation Interface) │
└─────────────────────────────────────────────────────────┘
↓
MCP Protocol (JSON-RPC 2.0)
↓
┌─────────────────────────────────────────────────────────┐
│ Ableton MCP Server (Bun Runtime) │
│ - Tool Registration (42 MCP tools) │
│ - Request Routing (O(1) Map lookup) │
│ - OSC Client Layer (Low-latency UDP) │
└─────────────────────────────────────────────────────────┘
↓
OSC Protocol (UDP)
Port 11000-11001
↓
┌─────────────────────────────────────────────────────────┐
│ Ableton Live + Max for Live │
│ - AbletonOSC Remote Script (MIDI Control Surface) │
│ - Live Object Model (LOM) Access │
│ - Max for Live Integration │
└─────────────────────────────────────────────────────────┘Available Tools (42 Total)
🎵 Transport Control (7 tools)
Tool | Description |
| Get playback state, position, BPM, recording status |
| Start playback |
| Stop playback |
| Enable recording mode |
| Set BPM (20-300) |
| Jump to bar position |
| Set time signature (requires M4L device) |
🎼 Track Management (13 tools)
Tool | Description |
| List all tracks with properties |
| Create new MIDI track |
| Create new audio track |
| Delete track by index |
| Rename track |
| Set volume (0.0-1.0) |
| Set pan (-1.0 to 1.0) |
| Mute track |
| Unmute track |
| Enable solo |
| Disable solo |
| Arm for recording |
| Disarm recording |
📎 Clip Control (8 tools)
Tool | Description |
| List clips in track |
| Create new MIDI clip |
| Delete clip |
| Start playing clip |
| Stop clip |
| Rename clip |
| Set clip length in bars |
| Duplicate clip to another scene |
🎹 MIDI Notes + Pattern Generation (5 tools)
Tool | Description |
| Get all notes from clip |
| Replace all notes |
| Add single note (pitch, time, duration, velocity) |
| Clear all notes |
| Generate patterns: |
Pattern Examples:
notes_generate_pattern(
trackIndex: 0,
pattern: "arpeggio_up",
root: 60, // C4
scale: "major",
length: 2 // 2 bars
)Generates 16 ascending notes from C major scale.
⚙️ Device/FX Control (5 tools)
Tool | Description |
| List all devices on track |
| Get device parameters |
| Set parameter value (0.0-1.0) |
| Turn on device |
| Turn off device |
🎛️ Max for Live (4 tools)
Tool | Description |
| List all M4L devices |
| Send message to Max patch |
| Get M4L parameter value |
| Set M4L parameter value |
Usage Examples
In Claude Conversations
Claude: "Create a new MIDI track called 'Bass'"
→ Uses: tracks_create_midi
User: "Generate a C major arpeggio over 4 bars"
→ Uses: notes_generate_pattern (arpeggio_up, C, major, 4 bars)
User: "Set the tempo to 140 BPM and play"
→ Uses: transport_set_tempo, transport_play
User: "Create a chord progression with Em, Am, C, G"
→ Uses: clips_create, notes_generate_pattern (chord) × 4Via Command Line
# Test without Ableton (Mock OSC Server)
npm run test:all
# Detailed OSC logging
DEBUG=1 bun start
# Watch mode (auto-reload)
bun run --watch src/index.jsProject Structure
src/
├── index.js # MCP server entry point (99 lines)
├── osc-client.js # OSC protocol layer (247 lines)
├── types.js # JSDoc type definitions
└── tools/ # MCP tool implementations
├── transport.js # Transport control
├── tracks.js # Track management
├── clips.js # Clip operations
├── notes.js # MIDI editing + pattern generation
├── devices.js # Device/FX control
└── max.js # Max for Live integration
Total: 1,245 lines of production JavaScriptPerformance Optimizations
OSC Parser
Direct byte reading (zero allocations)
Type inference (int/float detection)
UTF-8 validation on string boundaries
Buffer reuse (pre-allocated)
Tool Dispatch
// Before: O(n) string prefix checks
if (toolName.startsWith('transport_')) { ... }
// After: O(1) Map lookup
const executor = toolExecutors.get(toolName);Memory
No garbage collection pauses in hot path
Minimal object creation in request loop
~18MB RSS at runtime
Troubleshooting
"Ableton not connected"
# Check ports are available
lsof -i :11000
lsof -i :11001
# Run with debug logging
DEBUG=1 bun start
# Verify AbletonOSC is installed:
~/Music/Ableton\ Library/Remote\ Scripts/AbletonOSC/Solutions:
✓ Check Ableton Live is running
✓ Verify AbletonOSC Remote Script is enabled in Preferences
✓ Check ports 11000-11001 aren't blocked by firewall
✓ Restart Ableton if script doesn't load
High Latency
Most latency (2-5ms) comes from Ableton/hardware, not software:
OSC codec: <0.1ms
Network stack: ~1ms
Ableton processing: 2-5ms (hardware-bound)
Development
Local Testing (No Ableton Required)
# Run all tests with Mock OSC Server
npm run test:all
# Test output shows:
# ✅ Transport tests (play, stop, tempo, jump)
# ✅ Tracks tests (volume, pan, mute, solo, arm)
# ✅ Clips tests (create, fire, delete)
# ✅ Notes tests (patterns, scales)
# ✅ Devices tests (parameters, enable/disable)
# ✅ Max tests (messaging, parameters)Building
# Production build (already JS, no compilation needed)
bun run src/index.js
# Or use npm (cross-platform)
npm startLimitations & Future Work
Current Limitations
Track creation (without Max for Live device helper)
Time signature control (requires M4L device)
Full clip duplication with MIDI data preservation
Device discovery across all plugin types
Planned Features
🚧 Real-time state streaming (WebSocket)
🚧 Additional pattern generators (groove, random, probabilistic)
🚧 Performance metrics dashboard
🚧 Multi-device synchronization
🚧 Snapshot save/load system
Installation of AbletonOSC
Extract to:
~/Music/Ableton Library/Remote Scripts/Restart Ableton Live
In Preferences → Link/Tempo/MIDI → Control Surface → select AbletonOSC
Contributing
Contributions welcome! Areas for improvement:
Additional pattern generators
Performance benchmarks
Integration tests
Documentation improvements
License
MIT © Alexey Tropin
Links
Claude Code Guide: https://github.com/anthropics/claude-code
MCP Specification: https://modelcontextprotocol.io/
Ableton Live API: https://github.com/gluon/AbletonOSC
Max for Live: https://www.ableton.com/en/live/max-for-live/
Support
For issues, feature requests, or questions:
Check troubleshooting section
Enable DEBUG logging:
DEBUG=1 bun startOpen an issue with logs and reproduction steps
Made with ❤️ for musicians and AI enthusiasts
This project bridges the gap between traditional DAW workflows and AI-driven creative tools, enabling a new paradigm of human-AI music creation.
This server cannot be installed
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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/TropinAlexey/ableton-and-max-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server