logic-mcp
Enables control of Logic Pro, Apple's digital audio workstation, including transport, track, mixer, EQ, and plugin operations.
Emulates a Mackie Control surface over a CoreMIDI virtual port, sending and receiving MIDI messages to operate Logic Pro and verify commands via LED, fader, and LCD feedback.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
logic-mcp
An MCP server that lets Claude Code operate Logic Pro. It emulates the Mackie Control (MCU) protocol, which Logic officially supports, over a CoreMIDI virtual port, and verifies every command against the LED, fader and LCD feedback that Logic sends back to the surface. It does not click on the screen or use accessibility APIs. Only MIDI goes back and forth.
What it can do
Transport: play, stop, record, cycle, rewind, fast-forward
Tracks: select, mute, solo, record-arm
Mixer: volume (dB, -∞ to +6.0), pan (-64 to 63), 8-strip bank navigation
Channel EQ: read and write frequency, gain, Q, slope and on/off for all 8 bands
Insert plugins: list, insert, remove and bypass for slots 1-8, read and write parameters, scan the insert menu
Sends: read, write and remove destination (bus), level (dB), position (Pre/Post/Post Pan) and mute for sends 1-8
How it works: the server opens a virtual MIDI port named "LogicMCP", and Logic installs it automatically as a Mackie Control. The server sends button, V-Pot and fader messages, and reconstructs state from the LCD (2×56 characters), LEDs and fader positions that Logic sends back. Every tool result is tagged with one of verified (confirmed by feedback), skipped (already in that state, nothing sent), unverified (sent but could not be confirmed) or timeout (no response). It never claims success on a guess.
Related MCP server: logic-pro-mcp
Requirements
macOS, Logic Pro 11 or 12 (measured on 12.0.1)
Python 3.12 (python-rtmidi ships macOS wheels up to 3.12; 3.13 and later need a source build with the Xcode Command Line Tools), uv
An MCP client (Claude Code, Claude Desktop, etc.)
Installation (macOS, Logic Pro 11/12)
A. Claude Code
claude mcp add logic -- uvx --python 3.12 --from git+https://github.com/Imtylerrrrrr/logic-mcp logic-mcpOptional (Claude Code only): copy the skill that covers the order of operations and the pitfalls of the EQ, plugin and send commands.
git clone https://github.com/Imtylerrrrrr/logic-mcp.git && cp -R logic-mcp/skills/logic-plugins ~/.claude/skills/B. Claude Desktop
Add this to ~/Library/Application Support/Claude/claude_desktop_config.json. Use the absolute path from which uvx for command (apps launched from Finder have a short PATH).
{"mcpServers": {"logic": {"command": "/Users/<user>/.local/bin/uvx",
"args": ["--python", "3.12", "--from", "git+https://github.com/Imtylerrrrrr/logic-mcp", "logic-mcp"]}}}(<user> is your macOS user name.)
C. Development
Clone and install dependencies:
git clone https://github.com/Imtylerrrrrr/logic-mcp.git && cd logic-mcp && uv syncAdd a
.mcp.jsonto your Claude Code project (change the path in.mcp.json.exampleto where you cloned the repo)
Common
When you open a project in Logic, the "LogicMCP" port is installed automatically as a Mackie Control. Call logic_session configure once the first time (track number display, value display mode, Beats clock).
Quick start
Just talk to Claude Code in natural language. If you installed the skill from installation A, Claude first reads the order of operations and the pitfalls of the EQ, plugin and send commands.
Mute track 1
Set track 3 volume to -6 dB
Set track 2 Channel EQ band 3 to 1 kHz, +3 dB
Insert a Compressor in track 1 insert slot 2
Set that Compressor's Threshold to -20 dB
Show the plugin list for the current bank
Route track 1 send 1 to Bus 2 at -12 dBA track is addressed by either strip (1-8 in the current bank) or number (the Logic track number shown on the LCD). Calling a tool directly looks like this.
logic_mixer {"action": "set_volume", "strip": 3, "db": -6.0}
→ {"ok": true, "verified": "verified", "action": "set_volume",
"target": {...}, "before": {...}, "after": {...}, "elapsed_ms": 176, "note": ""}If ok is false, or verified is unverified or timeout, note holds the reason (Flip is on, no LCD change, etc.).
Tools
Tool | Description |
| Play, stop, record, cycle, rewind, fast-forward |
| Select, mute, solo, record-arm tracks |
| Volume (dB), pan |
| Move banks and channels, find the bank that shows a given track number |
| Connection status, wait for surface installation, configure |
| Read and write frequency, gain, Q, slope and on/off for all 8 Channel EQ bands |
| List, insert, remove and bypass for insert slots 1-8, read and write parameters, plugin scan, parameter table collection (calibrate, requires force) |
| Read and write destination (bus), level, position and mute for sends 1-8 |
Resources: logic://status, logic://transport, logic://strips, logic://lcd, logic://plugins, logic://inserts, logic://view.
Only insert slots 1-8 and sends 1-8 are supported. The output (Stereo Out) and Master strips do not accept EQ channel, plugin or send commands (Logic's channel view does not follow those strips; see Z4 in docs/mcu-protocol.md (Korean)).
The plugin list consists of the bundle (built into Logic 12.0.1) plus logic_plugin scan (user cache ~/.logic-mcp/plugins-<version>.json). The bundled parameter tables are built with uv run python scripts/calibrate_plugin.py "<plugin>" [strip] --write (in a test project).
Side effects: EQ, plugin and send commands change Logic's track selection; if a track has no Channel EQ, the EQ command inserts one automatically; and a plugin window may open. Creating a new bus send makes Logic automatically create an Aux track, which shifts the numbers of the tracks after it.
Status
Feature | Verified on real Logic 12.0.1 |
Transport, tracks, mixer, banks | Done |
Channel EQ, insert plugins | Done (live round 9, 17/17) |
Output and Master strip guard | Done (live round 10, skipped on the Stereo Out strip) |
Sends ( | Done (live round 10, 9/9) |
Bundled plugin parameter tables | 10 plugins (collected live 10/19-20: Channel EQ, Compressor, Adaptive Limiter, Noise Gate, Tape Delay, Stereo Delay, Overdrive, Distortion, ChromaVerb, Space Designer; 357 parameters). Parameters without a map are probed when written. For Space Designer, the round-10 collection (10/20) found 22 of 178 parameters without a map (action parameters, Mute minimum value, unit changes) |
Calibration and scan correction (10/19) | Done (the 163 one-tick scan results matched the diagnosis, 0 enum misjudgments in the re-collected tables; search near the insert is unverified) |
Cautions
Changes are applied directly to your Logic project. Try it first on a test project you can throw away. The server does not save the project.
If assignment buttons such as EQ and Plugin stop responding after you restart Logic, follow 1-4 of Troubleshooting (delete and reconnect the Mackie Control device).
Creating a new bus send makes Logic create an Aux track and shifts the numbers of the tracks behind it. Afterwards, check the numbers again with
logic_bank showorplugin list.logic_plugin calibrateandscripts/calibrate_plugin.pyinsert a plugin into the open project, move its values, and do not put them back. Use them only in a test project and do not save.It does not touch any other control surface you already use. This server opens only its own port, "LogicMCP".
If something goes wrong, work through docs/troubleshooting.md from top to bottom.
Development
Unit tests:
uv run pytest(no real Logic needed, 295 tests against a fake Logic model)Check Python 3.12:
uv run --isolated -p 3.12 pytest -qstdio smoke test (starts the server and only exchanges initialize, no Logic needed):
uv run python scripts/smoke_stdio.pyBuild the distribution files:
uv buildLive verification (with a test project open in Logic):
uv run python scripts/live_check.py(transport, tracks, mixer),uv run python scripts/live_check2.py [strip] [--scan](EQ, plugins, sends)scripts/calibrate_plugin.py "<plugin>" [strip] [--write] [--yes]collects plugin parameter tables (with--write, merges them into the bundledknown.json)scripts/capture.pycaptures MCU traffic,scripts/calibrate_fader.pygenerates the fader dB tableDocs: design
docs/superpowers/specs/, implementation plansdocs/superpowers/plans/, measured protocol notesdocs/mcu-protocol.md, progress logdocs/progress.md, reviewsdocs/reviews/
Internal engineering notes (protocol measurements, progress log, specs, plans, reviews) are kept in Korean.
License
MIT. Logic Pro is a trademark of Apple Inc. and Mackie Control is a trademark of LOUD Technologies. This project is not affiliated with either company.
This server cannot be deployed
Maintenance
Related MCP Connectors
OSC ↔ MIDI bridge for synthesizers and DAWs, with the SynthHub catalogue. A MIDI MCP and OSC MCP.
Create, co-edit, analyze, publish, and export collaborative step-sequencer sessions through MCP.
Connect ChatGPT and Claude to your Mac, Windows or Linux with secure MCP remote access.
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAI-powered control for Apple Logic Pro via MCP, enabling transport, tracks, plugins, MIDI, project, and mixer control through natural language.5MIT
- FlicenseNot gradedqualityDmaintenanceEnables an AI assistant to control Apple Logic Pro DAW including transport, mixing, playhead positioning, MIDI region read/write, and more, via MCP.3-
- AlicenseBqualityDmaintenanceA local MCP server that bridges Logic Pro MIDI data via an AUv3 plugin, enabling reading, creating, and manipulating MIDI regions and tracks through tools like read_logic_track and create_midi_region.8MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents like Claude and Cursor to control Logic Pro for music production, including creating tracks, writing MIDI, operating transport and mixer, and inspecting live project data.186MIT