LogicProMCP
Integration with Apple Logic Pro for reading and writing MIDI track data, enabling AI-assisted music generation and editing through the MCP server.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LogicProMCPcreate a four bar chord progression in C major"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
LogicProMCP
LogicProMCP is a local Model Context Protocol server plus a planned Logic Pro MIDI FX bridge for working with Logic Pro MIDI material.
The intended Logic integration is:
Insert a
LogicProMCP BridgeAUv3 MIDI FX plugin on every MIDI/software-instrument track that should be readable.Each plugin instance sends captured MIDI events to the local MCP sidecar.
The MCP server exposes the aggregated result as "all Logic tracks."
Generated MIDI can be written as
.midfiles first, then later sent back through a virtual MIDI/AUv3 output path.
Logic Pro does not currently expose a public project API that lets one local service directly enumerate every track and MIDI region in an open project. "Read all tracks automatically" therefore means "read all tracks that have the bridge extension inserted," ideally through a saved Logic template.
Tools
bridge_status: show the local Logic bridge receiver.list_logic_tracks: list tracks reported by Logic-side bridge instances.read_logic_track: read captured MIDI from one bridge instance.read_all_logic_tracks: read captured MIDI from all bridge instances.read_midi_file: inspect a Standard MIDI File exported from Logic.create_midi_region: create a new single-region.midfile from a musical prompt.create_drum_region: create a drum pattern region.create_chord_region: create a chord progression region.
Related MCP server: logic-pro-mcp
Install
cd /Users/shlomy/GIT_Repos/LogicProMCP
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -e .Run MCP Server
logicpromcpFor Claude Desktop or another MCP client, configure the command as:
{
"mcpServers": {
"logicpro": {
"command": "/Users/shlomy/GIT_Repos/LogicProMCP/.venv/bin/logicpromcp"
}
}
}CLI Smoke Test
logicpromcp-midi create --prompt "four bar funky bass line in C minor" --out examples/funky_bass.mid
logicpromcp-midi inspect examples/funky_bass.midLogic Workflow
To read live/playback material from Logic: run
logicpromcp, then insert the AUv3 bridge on every track that should be visible to the MCP server.To read exported material: select regions in Logic, use
File > Export > Selection as MIDI File, then pass that.midpath toread_midi_file.To write a new track/region: run
create_midi_region, then drag the generated.midfile into Logic or useFile > Import > MIDI File.To preserve tempo and bar alignment, create generated regions at the same BPM and bar length as the Logic project.
See docs/LOGIC_EXTENSION.md for the extension bridge contract.
Roadmap
AUv3 MIDI FX listener for live MIDI capture per inserted track.
Virtual MIDI output for recording generated MIDI directly into Logic.
AppleScript/Shortcuts helper for importing generated MIDI into the frontmost Logic project.
Region metadata sidecar files for round-tripping track names, bar ranges, prompts, and model decisions.
Available Tools
8 toolsbridge_statusA
Show the local Logic extension bridge status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states 'Show...status' without disclosing read-only nature, side effects, or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb and resource, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and an output schema, the description is adequate but fails to mention that the operation is safe/non-destructive, which would be helpful with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the baseline is 4. The description adds the verb 'Show' implying read operation, which is minimal but acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Show' and resource 'local Logic extension bridge status', clearly distinguishing from sibling tools that create or read tracks/regions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The context suggests it's for checking bridge status, but no when-not or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_chord_regionC
Create a chord progression MIDI region.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| key | No | C minor | |
| bars | No | ||
| channel | No | ||
| output_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'Create', implying mutation, but does not mention side effects (e.g., file creation, overwrite behavior), permissions needed, or any constraints. The output schema exists but the description adds no behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundancy. It is appropriately front-loaded and contains no filler, earning perfect conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (which reduces the need to describe return values), the description lacks critical context for a tool with 5 parameters. It does not explain what a 'chord progression' entails, the role of the key parameter, or how parameters interact. The tool's complexity is moderate, but the description is too sparse.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it provides no parameter details at all. Parameters like bpm, key, bars, channel, and output_dir are undefined, leaving the agent to infer their meaning solely from names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Create') and resource ('chord progression MIDI region'), clearly distinguishing it from siblings like create_drum_region and create_midi_region. However, the phrase 'chord progression' is somewhat ambiguous without further context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over alternatives. Siblings like create_drum_region and create_midi_region are listed but never differentiated. The description offers no context about prerequisites or appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_drum_regionC
Create a drum MIDI region on channel 10.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| bars | No | ||
| prompt | No | four on the floor drum groove | |
| output_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only mentions channel 10, omitting details like whether it overwrites, current project interaction, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single-sentence description is concise and front-loaded, but sacrifices necessary detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description fails to explain the four parameters or any behavioral context, making it inadequate for a tool with no annotations and no parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no meaning to the four parameters (bpm, bars, prompt, output_dir), leaving them entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a drum MIDI region specifically on channel 10, using a verb+resource structure and distinguishing it from siblings like create_midi_region and create_chord_region.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_midi_regionC
Create a Logic-importable MIDI region from a short musical prompt.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| key | No | C minor | |
| bars | No | ||
| prompt | Yes | ||
| channel | No | ||
| output_dir | No | ||
| track_name | No | Generated Region |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the basic purpose. It does not disclose side effects (e.g., file creation), requirements (e.g., Logic availability), or any constraints. The output schema exists but behavioral traits like mutation or idempotency are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise, but it lacks structure or front-loading of critical details. Every word earns its place, but the content is insufficient for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, no annotations, and no param descriptions, the description is highly incomplete. It does not cover workflow, output format, or environmental requirements. The output schema partially mitigates return value ambiguity, but behavioral context remains missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no information about any of the 7 parameters (e.g., prompt, bpm, key). It fails to explain their meaning, defaults, or how they affect output, requiring the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: creating a Logic-importable MIDI region from a short musical prompt. It uses a specific verb and resource, but does not explicitly distinguish from sibling tools like create_chord_region or create_drum_region, which limits the score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., create_chord_region, create_drum_region). There is no mention of prerequisites, context, or exclusion criteria, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_logic_tracksA
List Logic tracks currently visible through inserted LogicProMCP extensions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose behavioral traits such as read-only nature, idempotency, or behavior when no extensions are inserted. The tool appears to be a safe listing operation, but this is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that efficiently conveys the tool's action and scope. No wasted words, front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While output schema exists and description is minimal, it lacks context on what 'visible through inserted extensions' means and how the result differs from read_all_logic_tracks. Completeness is adequate but leaves ambiguity about scope and usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. Baseline of 4 applies as description adds no param semantics, but none are needed. No additional parameter information required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists Logic tracks visible through inserted LogicProMCP extensions, distinguishing it from sibling tools like read_all_logic_tracks that list all tracks. The verb 'list' and specific scope 'currently visible through...extensions' provide precise purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like read_all_logic_tracks or read_logic_track. No mention of prerequisites, context, or exclusion scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_all_logic_tracksA
Read all MIDI events captured from all inserted Logic-side bridge instances.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It only states the action without explaining side effects, data freshness, performance implications, or error scenarios.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no extraneous words. Every word carries meaning. Well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple read-all tool with an output schema, but lacks explanation of when the result might be empty, how bridge instances are aggregated, or format of the returned MIDI events.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the description need not add param info. Baseline of 4 is appropriate as schema coverage is 100% and the description is consistent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb (Read), resource (MIDI events), and scope (from all inserted Logic-side bridge instances). Distinguishes from siblings like 'read_logic_track' (single track) and 'list_logic_tracks' (listing only).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as 'read_logic_track' for a single track or 'list_logic_tracks' for metadata. No context on conditions for effective use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_logic_trackC
Read MIDI events captured from one Logic-side bridge instance.
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but fails to disclose behavioral traits. It does not state whether the tool is read-only, has side effects, requires permissions, or handles errors. The description essentially restates the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. However, it is overly terse and sacrifices necessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists but is not described, and the description omits what the returned MIDI events look like or how to interpret them, the description lacks completeness for a tool with one parameter and no schema descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the sole parameter 'instance_id', and the description only implicitly refers to it ('one Logic-side bridge instance'). It does not explain how to obtain or format the instance_id, nor its valid values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Read') and the resource ('MIDI events captured from one Logic-side bridge instance'). It effectively distinguishes from siblings like 'read_all_logic_tracks' and 'read_midi_file' by focusing on a single instance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any explicit guidance on when to use this tool versus alternatives such as 'read_all_logic_tracks' or 'read_midi_file'. It lacks when-to-use or when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_midi_fileC
Read a Standard MIDI File exported from Logic Pro.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description lacks behavioral details such as side effects, permissions, or error behavior. Only indicates a read operation, but does not disclose if file must exist or other constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded. However, it is too brief for a tool with no annotations and low schema coverage, making it under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description fails to explain what reading a MIDI file entails or what the return value represents. Lacks completeness for a tool with a single parameter and no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description adds no meaning to the 'path' parameter. It does not specify format, required extension, or any constraints, leaving the agent without guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Read' and resource 'Standard MIDI File' with context 'exported from Logic Pro'. This distinguishes it from sibling tools that read Logic tracks or create regions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like read_logic_track or read_all_logic_tracks. The description only states what it does without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
8 tool updates
v0.1.0- First observed
bridge_status - First observed
create_chord_region - First observed
create_drum_region - First observed
create_midi_region - First observed
list_logic_tracks - First observed
read_all_logic_tracks - First observed
read_logic_track - First observed
read_midi_file
TDQS
Each tool has a clearly distinct purpose: status, creating specific types of MIDI regions, listing tracks, and reading MIDI events from different sources. There is no overlap or ambiguity.
Most tools use a consistent verb_noun pattern with underscores (e.g., create_chord_region, list_logic_tracks). However, 'bridge_status' breaks the pattern by having no verb, causing minor inconsistency.
With 8 tools, the server is well-scoped for its purpose of interacting with Logic Pro's MIDI capabilities. Each tool serves a necessary role without being overwhelming or insufficient.
The tool set covers creation and reading of MIDI regions and tracks, but lacks update and delete operations. This gap may hinder workflows that require modifying or removing existing elements.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Producer/Riffusion AI music generation
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Create, co-edit, analyze, publish, and export collaborative step-sequencer sessions through MCP.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server that bridges Ableton Live with AI models, enabling real-time project inspection and control such as track overview, device parameters, and audio analysis.12MIT
- FlicenseNot gradedqualityBmaintenanceEnables an AI assistant to control Apple Logic Pro DAW including transport, mixing, playhead positioning, MIDI region read/write, and more, via MCP.1-
- AlicenseAqualityBmaintenanceA local MCP server bridging Bitwig Studio for agent-assisted music workflows, read-only by default with configurable write-policy gates.142MIT
- AlicenseNot gradedqualityBmaintenanceA minimal MCP server that composes MIDI, loads Logic Pro factory patches (including Alchemy), and drives transport, turning Logic Pro into an AI-playable instrument.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/shlomyss/LogicProMCP-for-Codex'
If you have feedback or need assistance with the MCP directory API, please join our Discord server