Other formats agents might prefer:
markdownjsonllms.txt

Agent? You probably want markdown or json, or Pod over MCP.

Reported issues for Logic Pro MCP Desktop Extension

Pod holds 23 of 190 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to Logic Pro MCP Desktop Extension.

Most discussed

ADR-001~018 Implementation Work Guide

STATUS 2026-08-24 — NEXT: nothing of its own — this index closes when the ADR issues it indexes do; per-ADR state is on each issue.

MongLong ADR-001-018 Implementation Work Guide

Source integrity: uploaded implementation guide SHA-256 aceaf47aabfb28de0eb81faf5c7eb74cffe4719c082b0dc301bc864d4ba60f20.

Scope note: This issue tracks the implementation work guide itself. It is a roadmap and governance guide for ADR-001 through ADR-018, not evidence that any listed ADR capability has

Read the thread · 2026-07-10 · open · 53 comments

system.refresh_cache exceeds its own 25s deadline on projects around 74 tracks

Next action: decide whether to raise refresh_cache's deadline class, split the poll cycle per section, or both — it is a design call; the measurement is done.

What happens

On a 74-track project, system.refresh_cache takes a median of 12.6s and hits its 25s deadline in roughly 1 call in 5, returning operation_timeout. The failure is honest — no false refreshed: true — but the operation simply does not complete.

Shipped in v3.14.0:

OperationRegistry.swift:648   (.sys

[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/668) · 2026-08-22 · closed · 40 comments

### ADR-007: AX Selector Atlas and UI Drift Detector

> **STATUS 2026-08-30** — ALL SEVEN CRITERIA MET. The diff runs at qualification time as a `QualificationCase` (#715), a refused one rejects a promotion (`atlasDriftRefused`), and five baselines cover en and ko with `unmeasured []`. The English control bar (#717) earned its keep on capture: it exposed the arm toggle matching `Record` by prefix, so the transport's global Record button read as a track's arm control — invisible in Korean, where `녹음` is not a prefix of `녹음 활성화`. Production was never

[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/290) · 2026-07-10 · closed · 25 comments

### Qualification coverage program — real per-operation evidence (A:20 → B:51 → C-live:35)

> **STATUS 2026-08-24** — NEXT: Phase B needs a write-and-read-back qualification mode, which does not exist. Measured today: `QualificationTransport.status` has no `.passed` branch for mutating operations, and that is deliberate — the runner probes them with parameters that must be refused and asserts `writeAttempted == false`, so a qualification run cannot modify a project. Adding a `.passed` branch would be moving the grader. Correcting an earlier line here: R-SEM is NOT indifferent to work —

[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/373) · 2026-07-16 · open · 22 comments

### ADR-011: Full Verified Compressor Control and Auto-Setting

> **STATUS 2026-08-24** — BLOCKED behind #292: Compressor is a plug-in parameter surface and shares whatever the verified apply-back expansion establishes.

# ADR-011 - Full Verified Compressor Control and Auto-Setting

> Scope note: This roadmap issue is proposed future work, not a shipped capability. It builds on the already-filed foundation ADRs #284 through #293 and keeps direct bugfix issues separate.
>
> Source integrity: canonical ADR pack SHA-256 `d9ef73061f73efbbf1488e1af2c84dc824f56137

[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/299) · 2026-07-10 · open · 11 comments

### ADR-009: Verified Plugin Apply-back Expansion

> **STATUS 2026-08-24** — NEXT: build the apply-back expansion on the Wave-0 insert work; #299 and #301 both consume whatever it establishes, so it precedes them.

# ADR-009 — Verified Plugin Apply-back Expansion

> Scope note: This roadmap issue intentionally excludes the currently open direct-fix issues (#253-#256, Doctor #260-#267, tempo #278, region completeness #279). Those issues remain separate implementation work even if this ADR lands first.

## Status
Proposed

## Priority
P1

## Depen

[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/292) · 2026-07-10 · open · 10 comments

### ADR-008: Verified Mixer Routing Graph

> **STATUS 2026-08-24** — BLOCKED on node identity: a routing button's `AXDescription` *is* the destination, output and send buttons are indistinguishable by it, and the same bus reads `Bus 1` on the strip and `Sum 1` in the menu — identity cannot be the display string.

# ADR-008 — Verified Mixer Routing Graph

> Scope note: This roadmap issue intentionally excludes the currently open direct-fix issues (#253-#256, Doctor #260-#267, tempo #278, region completeness #279). Those issues remain sepa

[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/291) · 2026-07-10 · open · 10 comments

### ADR-016: Smart Tempo and Tempo-Map Control Surface

> **STATUS 2026-08-24** — NEXT: implementation — the one Wave-5 item with no measured AX wall in front of it.

# ADR-016 - Smart Tempo and Tempo-Map Control Surface

> Scope note: This roadmap issue is proposed future work, not a shipped capability. It builds on the already-filed foundation ADRs #284 through #293 and keeps direct bugfix issues separate.
>
> Source integrity: canonical ADR pack SHA-256 `d9ef73061f73efbbf1488e1af2c84dc824f56137f7d248530c72f60ad1fcea0b`; final review notes dated 20

[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/304) · 2026-07-10 · open · 9 comments

## Most recent

### mixer.set_pan / set_volume abandon the write partway and leave the fader at a wrong position

> **STATUS 2026-08-24** — NEXT: fix the nudge loop's two silent exits — an intermittent `nil` AX read and a 2-sample stagnation counter both abandon the write partway and leave the fader at a wrong position; measured reproduction and root cause are below.

## What happens

`mixer.set_pan` (and the same loop serves `mixer.set_volume`) moves the fader with `AXIncrement`/`AXDecrement` until it reaches the target. On the **first call of a fresh server process** it consistently stops short, leaving t

[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/685) · 2026-08-24 · closed · 0 comments

### The runtime can still select Logic Pro Creator Studio, which this release does not ship for

The fix is written, unit-proven, and **not merged** — because no machine exists that can tell whether it works, and the only remaining route past the gate is evidence that would say nothing about it.

## The defect, on `main` today

`SetupDoctor.preferredLogicApp` falls through to Creator Studio and then to anything:

```swift
?? apps.first { $0.bundleID == LogicProVariant.creatorStudio.bundleID }
?? apps.first

QualificationAxis.shipVariants is [.desktop], and docs/adr/README.md:96 re

Read the thread · 2026-08-19 · closed · 3 comments

Eleven modules with consumers have no return-shape drive; the static check cannot cover that square

Scripts/check-python-contracts.py proves, for every module another file imports, that each referenced name exists and each call binds against the real signature. It cannot prove that a function still returns what its callers expect — a change from a list to a dict keeps the name and the signature, and nothing static can see it in untyped Python.

That square is covered by driving the API and asserting what comes back. Exactly one module has such a drive: evidence.py, via `Scripts/livekit

Read the thread · 2026-08-19 · closed · 0 comments

Every visual assertion should name its subject — thirty harnesses, zero adopt it

evidence.visual() takes subject=: what the watched rectangle IS, as the UI describes it, not where it is. Its docstring calls it mandatory. Measured today: thirty harnesses call visual() and none passes one.

The parameter exists because a band located by coordinates alone cannot show that it drifted onto different content. Three times this week a band kept its rectangle while the pane under it changed, and the check went red — or worse, stayed green — for reasons that had nothing to d

Read the thread · 2026-08-19 · closed · 4 comments

The live-evidence gate cannot express "this code has no caller, so no live mutation exists"

Hit while trying to ship the #293 fix. The gate is right and the change is right, and they cannot both be satisfied.

What happened

SHIP GATE, work/293-flag-cells @ 10a48734

full suite      ok — 3848 tests passed
live evidence   FAIL — no passing live evidence bound to 10a48734
                -> no check has a demonstrated mutation — a check that cannot fail is not evidence

The rule is correct and I would not want it relaxed: it is the rule that has caught three cannot-fail checks

Read the thread · 2026-08-19 · closed · 3 comments

live_604_refusal_says_what_it_saw.py can no longer reach its subject — save_as succeeds now

Found while proving #612: running two harnesses at the same head, which the fix there makes possible.

Scripts/livekit/live_604_refusal_says_what_it_saw.py drives project.save_as on purpose and checks that its refusal is legible. #606 made save_as work, so there is no refusal to read. Run against current main:

checks 9  passed 7  visual_failed 1  restorations_failed 1

604/the-refusal-names-the-shape-it-saw               hint=''
604/the-refusal-says-whether-logic-owned-the-keybo

[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/614) · 2026-08-19 · closed · 1 comment

### Every mutating operation is refused as "blocking dialog present" if it is the first call after server start

Found while proving #606. Reproducible, and it refuses real work on a condition that is not true.

## What happens

In a **fresh** server process, the first tool call that consults the blocking-dialog preflight is
refused. Any later call — including an immediate retry — passes.

call 1 project.save_as error=unsupported_state blocking_dialog_present=true ← refused call 2 project.save_as state=A success=true ← wrote the file


Same process, same

[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/608) · 2026-08-19 · closed · 0 comments

### save_as: the menu press opens no panel unless Logic owns the keyboard, and the filename-field clause is wrong even when it does

Split out of #604, which fixed how `project.save_as` *refuses*. This is why it refuses.

Two separate defects, both measured live on 2026-08-19 against Creator Studio 12.3.

## 1. `clickMenuItem` never activates Logic, so in production conditions no panel opens

`AccessibilityChannel.clickMenuItem` does an `AXPress` on the menu item and nothing else. Whether
that opens the Save panel depends entirely on who owns the keyboard. Four trials, alternating,
deterministic both ways:

front app

Read the thread · 2026-08-18 · closed · 3 comments

project.save_as cannot recognise Logic's Save panel whenever its file browser is expanded, and leaves the panel open

Measured on Logic Pro 12.3

project.save_as returned:

{"error":"channels_exhausted","state":"C",
 "hint":"Exact Save As dialog did not appear within 3 seconds"}

The panel did appear. Timed from the menu click:

Save window appeared after: 0.75 s

So the 3-second budget is not the problem. exactSaveAsDialog never classifies the panel that is sitting on screen.

Exactly one clause of the classifier fails

saveAsDialogSelectionIsUnambiguous requires all of:


[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/604) · 2026-08-18 · closed · 1 comment

### Feature: song instrumental recreator via MuScriptor

### Preflight

- [x] I searched existing issues for related work.

### Priority

P0 - enables a critical adoption or safety path

### Primary area

logic-ui

### Problem

If this possible to do this ? Song recreation via MuScriptor + logic pro mcp

This wil gave the Logic Pro MCP project a lot of publicity because a lot of people used the ai music and the instrumental there is low quality

### Proposed outcome

0

### Safety and contract notes

0

### Done when

0

[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/600) · 2026-08-18 · closed · external user · 3 comments

### Six channel-table rows stand in front of no implementation (the non-region half of the #575 census)

#587 retired five `region.*` rows whose only behaviour was a refusal string. I said at the time that
"eight more operations share this shape" and deliberately left them alone as out of scope.

**Two of the eight do not share it.** Correcting that before it becomes the premise of someone else's
work. Audited against the source at `ed58020c`, chain by chain:

| operation | channel chain | who implements it | verdict |
|---|---|---|---|
| `mixer.set_send` | `[.mcu]` | `MCUChannel.swift:259` | **imp

[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/592) · 2026-08-18 · closed · 0 comments

### region.select_last reports "no region" on a project full of regions: its target filter is a pixel-height heuristic

Split out of #575, where the census of the region family is recorded. `region.select_last` is
implemented and reachable from no tool. This is why it should not be exposed as it stands.

## The filter excludes every region at ordinary zoom

`AccessibilityChannel+Regions.swift`, `defaultSelectLastRegion`, picks its target in AppleScript:

```applescript
-- Region heuristic: 20 < width < 2000, 20 < height < 200
if w > 20 and w < 2000 and h > 20 and h < 200 then …   -- then bottom-most, then right-m

[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/591) · 2026-08-18 · closed · 1 comment

### project.new cannot run from the state Logic lands in at launch: the project chooser is counted as an open document

## Reproduction, measured today on Logic Pro 12.3 (both English and Korean)

Launch Logic with no document. It shows **Choose a Project**. Then:

logic_project.new -> {"error":"unsupported_state","failure_stage":"precondition_open_document", "observed_window_count":1, "hint":"project.new requires Logic to have no open document; 1 window(s) are open. …", "recovery_action":"Close the open project with logic_project("close", {confirmed: true}) …"}


The one window is the choose

[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/590) · 2026-08-18 · closed · 0 comments

### Seven region.* operations are implemented and routed but reachable from no tool, and absent from the OperationRegistry

## The census

`RoutingTable` routes eight `region.*` operations. Only one is reachable from a tool:

| operation | channel implementation | dispatcher | OperationRegistry |
|---|---|---|---|
| `region.get_regions` | yes | `logic_project.get_regions` | — |
| `region.select` | yes | **none** | **absent** |
| `region.select_last` | yes | **none** | **absent** |
| `region.move_to_playhead` | yes | **none** | **absent** |
| `region.move` | yes | **none** | **absent** |
| `region.resize` | yes | **no

[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/575) · 2026-08-17 · closed · 7 comments

### record_sequence fails 6/6 as the first operation in a fresh server process: the playhead reset reports a menu it never tried to actuate

## Correction first

`record_sequence` was recorded as failing at Logic's file-open panel — "Import button never became
enabled". **That is not what is wrong.** Measured today on Logic 12.3:

- the SMF the server generates is valid (`MThd`/`MTrk`, 68 bytes, format 0, 480 ppq) — captured
  mid-run before its `defer` cleanup and imported by hand successfully;
- its temp path (`$TMPDIR/LogicProMCP-501-*/<uuid>.mid`, dir 0700, file 0600) is fine — the same
  bytes at the same path shape select and e

[Read the thread](https://github.com/MongLong0214/logic-pro-mcp/issues/572) · 2026-08-17 · closed · 1 comment

The remaining reports are on [the project's issue tracker](https://github.com/MongLong0214/logic-pro-mcp/issues).