# ableton-mind [![ableton-mind MCP server](https://glama.ai/mcp/servers/Pantani/ableton-mind/badges/score.svg)](https://glama.ai/mcp/servers/Pantani/ableton-mind) Definitive MCP (Model Context Protocol) server for **Ableton Live**. Exposes the full **Live Object Model** to LLMs (Claude, Cursor, etc.) with an embedded native device knowledge base, declarative music recipes, an integrated verify loop, and reactive listeners. > Status: **alpha / v0.1.1 published** β€” core smoke passed against Ableton Live 12.4.1 on macOS and package validation is green. npm, GitHub Release `.mcpb`, and the MCP Registry are live. Glama has a listing, but its hosted release/deploy must be published separately from the Glama admin build flow; Smithery metadata is present and may lag indexing. API unstable. Don't use in production yet. > > Phase 8 status: slice 1 delivers read-only Max for Live/plug-in introspection and Link/remote status discovery. Deeper M4L control, VST3 sidecars, remote DAW integration and mobile companion work remain pending. πŸ“š **Full documentation:** [pantani.github.io/ableton-mind/](https://pantani.github.io/ableton-mind/) ## Architecture (3 layers) ``` Claude/Cursor ──MCP/stdio──▢ ableton-mind (TS, Node 20+) ──TCP NDJSON JSON-RPC──▢ Remote Script (Python, inside Live) ``` - **`src/`** β€” TypeScript MCP server. Tools, resources, prompts, TCP client, recipe runner, knowledge loader. - **`live/AbletonMind/`** β€” Python Remote Script. TCP server on port `9876`, dispatches JSON-RPC to LiveAPI. - **`recipes/`**, **`src/knowledge/`** β€” embedded JSON (drum kits, basslines, racks, device schemas). Full spec in [`PLAN.md`](PLAN.md). Frozen contracts in [`_workspace/contracts/`](_workspace/contracts/). ## Highlights vs. existing MCP/OSC servers | Capability | ahujasid/ableton-mcp | AbletonOSC + MCP wrapper | **ableton-mind** | |---|---|---|---| | MCP tools | 22 | ~30 | **36** | | LOM coverage | ~10% | ~95% | **~100%** | | Knowledge base | none | none | **55 devices, scales, drum kits** | | Recipes | none | none | **14 across 7 categories** | | Verify loop | no | no | **yes, integrated (`session_snapshot/diff`)** | | Render preview | no | no | yes (snapshot now, bounce planned) | | Reactive listeners β†’ MCP notifications | no | partial (OSC) | **yes (7 events live)** | | Transactions (undo unitary) | no | no | **yes** | | Automation envelopes | no | partial | **complete (linear / hold)** | | Push 1/2/3 control | no | no | **yes (pad/button/mode LEDs)** | | Docker | no | no | yes | | `.mcpb` 1-click | no | no | yes | | Doctor CLI | no | no | yes | ## Requirements - Node 20+ - Ableton Live 12 (priority; Live 11 supported) - macOS (primary), Windows (Phase 1 final) ## Setup (source install) ```bash npm install npm run typecheck npm run lint npm run test npm run build ``` ## Install Remote Script (Python bridge) Dev mode (symlink): ```bash node scripts/install-remote-script.mjs # creates symlink node scripts/install-remote-script.mjs --check # status only node scripts/install-remote-script.mjs --copy # full copy (CI / snapshot) ``` Manual: - **macOS:** copy `live/AbletonMind/` to `~/Music/Ableton/User Library/Remote Scripts/AbletonMind/` - **Windows:** copy to `~/Documents/Ableton/User Library/Remote Scripts/AbletonMind/` Then **Live β†’ Preferences β†’ Link/Tempo/MIDI β†’ Control Surface β†’ AbletonMind**. Smoke test: [`docs/smoke-test.md`](docs/smoke-test.md). ## Run the MCP server ```bash npm run build node dist/index.js ``` Env vars: | Var | Default | | |---|---|---| | `ABLETON_MIND_HOST` | `127.0.0.1` | Python bridge host | | `ABLETON_MIND_PORT` | `9876` | Bridge TCP port | | `ABLETON_MIND_TIMEOUT_MS` | `5000` | Per-request timeout | | `ABLETON_MIND_MAX_FRAME_BYTES` | `1048576` | Max incoming JSON-RPC frame | | `ABLETON_MIND_MAX_PENDING_REQUESTS` | `128` | Max in-flight JSON-RPC calls | | `ABLETON_MIND_LOG_LEVEL` | `info` | `debug` \| `info` \| `warn` \| `error` | ## Local copilot Run a local LLM against a curated subset of the same Ableton tools: ```bash ollama pull qwen2.5:3b # optional; the UI can pull too node dist/index.js chat # opens http://127.0.0.1:4142 node dist/index.js ask "What is in this set?" ``` The default tier is read-only (`safe`). Use `--write` for simple changes or `--creative` for recipes/browser load. | Var | Default | | |---|---|---| | `ABLETON_MIND_LLM_BASE_URL` | `http://127.0.0.1:11434/v1` | OpenAI-compatible endpoint | | `ABLETON_MIND_LLM_MODEL` | `qwen2.5:3b` | Local model id | | `ABLETON_MIND_LLM_TIER` | `safe` | `safe` \| `standard` \| `creative` | | `ABLETON_MIND_CHAT_PORT` | `4142` | Browser UI port | See [Local copilot](docs/guide/local-copilot.md). ## Doctor CLI ```bash npx ableton-mind-doctor ``` Checks Node version, Remote Script install, bridge port, knowledge base integrity, recipes. ## Distribution - **npm:** `npm install -g ableton-mind`. - **Claude Code plugin marketplace:** `claude plugin marketplace add Pantani/ableton-mind`, then `claude plugin install ableton-mind@ableton-mind`. - **Claude Desktop one-click:** download `ableton-mind-0.1.1.mcpb` from the [v0.1.1 GitHub Release](https://github.com/Pantani/ableton-mind/releases/tag/v0.1.1). - **MCP Registry:** `io.github.Pantani/ableton-mind` is active in the official registry. - **Glama:** listed at [glama.ai/mcp/servers/Pantani/ableton-mind](https://glama.ai/mcp/servers/Pantani/ableton-mind); hosted release is separate from the GitHub Release and still requires the Glama admin deploy + Make Release flow. - **Source:** `npm ci && npm run build && npm run install:remote-script`. - **Docker:** `docker build -t ableton-mind . && docker run --rm -i --network host ableton-mind`. - **Smithery:** [`smithery.yaml`](smithery.yaml) is ready for listing/indexing. ## Roadmap See [`PLAN.md Β§12`](PLAN.md) and [`_workspace/PROGRESS.md`](_workspace/PROGRESS.md). | Phase | Status | |---|---| | 0 β€” Spike | βœ… real smoke pass | | 1 β€” ahujasid parity | βœ… 22/22 | | 2 β€” Listeners | βœ… 7 events | | 3 β€” Knowledge | βœ… 55 devices | | 4 β€” Automation envelopes | βœ… | | 5 β€” Preview/verify | βœ… snapshot+diff (bounce planned) | | 6 β€” Push | βœ… pad/button/mode LEDs | | 7 β€” Distribution | βœ… DXT/Docker/Smithery/CI/release ready | | 8 β€” Long tail | πŸ”΅ slice 1 delivered: read-only M4L/plug-in introspection + Link/remote status discovery; deeper M4L/VST3/remote DAW/mobile work pending | ## License [MIT](LICENSE).