npx producer-pal
npx producer-pal is the bridge MCP clients use to reach Ableton Live. Your client spawns it, it speaks MCP over stdio, and it forwards everything to the Producer Pal device over HTTP (http://localhost:3350/mcp by default).
It is not the MCP server — that runs inside the Max for Live device. The bridge exists because most MCP clients launch a command rather than connect to a URL, and because a subprocess can start before Ableton does and reconnect on its own. Needs Node.js 20+.
This page is the flag and environment-variable reference. For setting it up in a particular client, see the installation guides — e.g. Claude Code or other MCP clients.
npx -y producer-pal [flags]Flags
| Flag | Alias | Value | Effect |
|---|---|---|---|
--tools <list> | tool/group names | Keep only these tools in this client | |
--disable-tools <list> | tool/group names | Drop these tools from this client | |
--list-tools | Print the groups and available tools, then exit | ||
--notation <name> | -n | barbeat, midi-json, stark | Set the MIDI notation (default barbeat) |
--format <name> | -f | compact, json | Set the tool response format (default compact) |
--small-model-mode | -s | Turn on small model mode | |
--live-api | -l | Turn on the Direct Live API tool |
Values take either form: --notation stark or --notation=stark.
Four of these are global device settings
--notation, --format, --small-model-mode, and --live-api are pushed to the device on connect, exactly as if you had set them on its Setup tab — so they also change the Chat UI and every other connected client. The bridge re-asserts them, so a device restart doesn't lose them. The two boolean flags only ever turn a setting on; neither can switch off something you enabled on the device.
The toolset flags are the exception — see Choosing tools below.
Choosing tools
--tools keeps only what you list; --disable-tools drops what you list. Both take tool names (read-clip or ppal-read-clip) and group names: core, session, actions, live-set, track, scene, clip, device, advanced, and read-only. Run npx producer-pal --list-tools to print the groups plus the tools the running device currently offers.
Withholding a tool also drops the part of the Producer Pal Skills that teaches it, so you stop paying for the tool's schema and its guidance in every conversation. --tools read-only cuts the skills text by more than half.
Unlike the other flags, this one is per client: the Chat UI and your other MCP clients keep the full toolset. ppal-connect is always kept — it is how the AI connects and receives the skills.
One wrinkle with --tools: it keeps what you list by withholding everything else, and "everything else" is the tool list this copy of npx producer-pal knows — so a tool added in a newer Producer Pal stays enabled until you update. --disable-tools names tools directly, so it can withhold a newer tool even from an older copy; only its group names are limited to the ones above.
{
"command": "npx",
"args": ["-y", "producer-pal", "--tools", "core,clip,track"]
}See Optimizing for what a narrower toolset actually saves.
--list-tools
Prints the group aliases both toolset flags accept, then the tools available right now. The tool list comes from the running device when it can be reached, so it reflects your device's version and whether the Direct Live API is on — it falls back to the bridge's own catalog when Ableton isn't running. Combine it with a toolset flag to see exactly what a session would get:
npx producer-pal --tools clip,track --list-toolsProducer Pal 2.1.0 — tools and groups
Pass any of these to --tools (keep only these) or --disable-tools (drop
these), comma or space separated. Names work bare or ppal- prefixed.
core ppal-connect ppal-context
session ppal-playback ppal-library ppal-select
actions ppal-delete ppal-duplicate
live-set ppal-read-live-set ppal-update-live-set
track ppal-create-track ppal-read-track ppal-update-track
scene ppal-create-scene ppal-read-scene ppal-update-scene
clip ppal-create-clip ppal-read-clip ppal-update-clip
device ppal-create-device ppal-read-device ppal-update-device
advanced ppal-live-api
read-only ppal-connect ppal-library ppal-select ppal-read-live-set ...
ppal-connect is always kept — it is how an MCP client reaches the Skills.
ppal-live-api also needs --live-api or the device's Setup-tab toggle.
Available now (7):
ppal-connect
ppal-create-clip
ppal-create-track
ppal-read-clip
ppal-read-track
ppal-update-clip
ppal-update-trackEnvironment variables
Every setting flag has an environment-variable form, for clients whose MCP config is easier to write with env than with args.
| Variable | Values | Effect |
|---|---|---|
MCP_SERVER_ORIGIN | URL | Where the device is (default http://localhost:3350) |
ALLOW_CONFIGURATION_OVERRIDES | true / false | Gate for every setting variable below |
TOOLS | tool/group names | --tools |
DISABLE_TOOLS | tool/group names | --disable-tools |
NOTATION | barbeat, midi-json, stark | --notation |
FORMAT | compact, json | --format |
JSON_OUTPUT | true / false | Boolean alias for FORMAT; FORMAT wins |
SMALL_MODEL_MODE | true / false | --small-model-mode |
LIVE_API | true / false | --live-api |
ENABLE_LOGGING | true / false | Write a bridge log file |
VERBOSE_LOGGING | true / false | Add debug detail to that log |
The override gate
Every setting variable is ignored unless ALLOW_CONFIGURATION_OVERRIDES is true. MCP_SERVER_ORIGIN and the logging variables are not gated.
The reason is that environment variables are ambient — a shell inherits them, and the Claude Desktop extension always sets them — so an unset toggle would otherwise silently overwrite settings you chose on the device. CLI flags need no gate: passing one is already deliberate.
Unlike the flags, the boolean variables are three-state. SMALL_MODEL_MODE=false actively turns the setting off on the device, where the flag can only turn it on. Leave a variable unset (or blank) to leave the device alone.
An invalid value is logged and ignored rather than fatal — a bridge that npx cached before your device was updated still starts when handed a tool name or notation it doesn't recognize.
Logs
With ENABLE_LOGGING=true the bridge writes bridge-YYYY-MM-DD.log to:
| Platform | Location |
|---|---|
| macOS | ~/Library/Logs/Producer Pal/ |
| Windows | %LOCALAPPDATA%\ProducerPal\Logs\ |
| Linux | ~/.local/share/Producer Pal/logs/ |
Add VERBOSE_LOGGING=true for per-request detail. See Troubleshooting for what to look for.
Other ways in
The bridge is one of four ways to drive Producer Pal:
- HTTP MCP — point an MCP client straight at
http://localhost:3350/mcp, no Node required. Ableton has to be running first, and there's no auto-reconnection. See other MCP clients. - REST API — plain HTTP for scripts, with per-request headers for toolset, notation, and small-model mode.
- Agent Skill — the portable
SKILL.mdfor coding agents, which drives the REST API.