Ableton Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Ableton Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Intelligent, LLM-controlled music production in Ableton Live via Claude.
An MCP (Model Context Protocol) server with 49 tools that enable Claude to observe, control, and automate Ableton Live mixing workflows with natural language commands.
User: "Make the drums brighter and punchier"
Claude: ✅ Observes session → finds drums → applies EQ + compression
Result: Professional-sounding drums automatically adjusted# Download from https://github.com/ideoforms/AbletonOSC
# Extract to: C:\Users\<Username>\AppData\Roaming\Ableton\Live 11.3.20\Preferences\User Remote Scripts\
# In Ableton: Preferences → Link/MIDI → Control Surfaces → Select AbletonOSC# Clone/download this repo
cd ableton-mcp
# Install with uv (recommended)
uv sync
uv run ableton-mcp
# Or with pip
pip install -r requirements.txt
python -m ableton_mcpIn Claude Code or Claude Desktop, add:
claude mcp add --transport stdio ableton -- uvx ableton-mcp"Make the drums brighter"
→ Claude uses: get_track_info() + set_device_parameter_by_name()
"Balance the mix"
→ Claude uses: balance_mix()
"Add punch to drums"
→ Claude uses: compress_for_punch(track, "moderate")"Create a 4-minute song with intro, verses, chorus, and outro"
→ Claude uses: scaffold_song(["Intro", "Verse", "Chorus", "Bridge", "Outro"])
"Create a balanced mix with warm bass and bright vocals"
→ Claude uses: balance_mix() + quick_eq_preset(bass, "warm") + quick_eq_preset(vocals, "bright")
"What's in my session?"
→ Claude uses: list_tracks() + get_session_overview()Phase 0 – Foundation (26 tools)
Phase 1 – Observation (9 tools) ✨
list_tracks() — See all tracksget_track_info() — Get track propertiesget_devices() — List devices on trackget_session_overview() — Full session snapshotPhase 2 – Intelligent Control (1 + mappings) ✨
set_device_parameter_by_name() — Control by name, not indexPhase 3 – Metering (6 tools)
get_track_meter(), analyze_loudness(), spectrum_analysis()Phase 4 – Batch Workflows (7 tools) ✨
balance_mix() — Auto-balance volumesquick_eq_preset() — Apply EQ presets (bright, warm, dark, presence, clarity)compress_for_punch() — Smart compression (gentle, moderate, aggressive)scaffold_song() — Create song structuregain_stage_session() — Optimize loudnesscreate_mixing_template() — Standard mixing layoutsuggest_next_action() — Workflow recommendationsParameter control by name works for:
| Device | Parameters |
|---|---|
| EQ Eight | Brightness, Warmth, Presence, Clarity, Low Shelf Gain, High Shelf Gain, etc. |
| Compressor | Threshold, Ratio, Attack, Release, Makeup Gain, Knee, Look Ahead |
| Reverb | Decay, Size, Mix, Damp, Width |
| Delay | Time, Feedback, Mix |
| Saturator | Drive, Tone, Gain, Mode, Soft Knee |
| Vocoder, AutoFilter, Overdrive, Operator, Wavetable, Sampler | Various parameters |
All responses are structured JSON:
Create .env:
ABLETON_IP=127.0.0.1
ABLETON_SEND_PORT=11000
ABLETON_RECV_PORT=11001
OSC_TIMEOUT_SECONDS=2.0
DEBUG=false✅ Ruff linting: PASS ✅ Type hints: 100% ✅ Pydantic models: All validated ✅ Error handling: JSON responses ✅ Architecture: Bidirectional OSC
See detailed guides:
Add device mappings in src/ableton_mcp/core/device_mappings.py Create new tool modules in src/ableton_mcp/tools/
✅ Production-ready — 49 tools, 80-90% mixing automation, tested code
Questions? Check FINAL_SUMMARY.md or the examples above.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.