Skip to main content
Glama

fender-studio-mcp

An unofficial Model Context Protocol server and a small set of audio-to-MIDI workflows for turning rehearsal recordings into the first draft of a demo in Fender Studio Pro / PreSonus Studio One.

Unofficial project. This project is not affiliated with, endorsed by, or supported by Fender, PreSonus, or their affiliates. Fender Studio Pro and Studio One are trademarks of their respective owners.

The MCP server provides transport, Mackie Control Universal (MCU) mixer control, command discovery, shortcuts, and macro-file generation. The included agent skills document a practical workflow for extracting a drum sketch or a hummed melody to MIDI before arranging it in the DAW.

What this repository includes

  • src/studio_pro_mcp/ — the Python MCP server.

  • studio-one-devices/ — an optional Studio One control-surface definition.

  • skills/transcribe-drums/ — an agent workflow for rehearsal drums to MIDI.

  • skills/transcribe-hummed-melody/ — an agent workflow for hummed melody to MIDI.

  • docs/AUDIO_TRANSCRIPTION.md — dependency choices, limitations, and a repeatable review process.

No songs, recordings, MIDI performances, plug-in databases, key-scheme exports, credentials, or model weights are included.

Related MCP server: openDAW MCP

MCP functions and commands

The default server exposes 49 MCP tools: 9 transport tools, 11 mixer tools, 23 shortcut-based editing tools, 2 plug-in/macro tools, and 4 command catalog tools. The tables below list the tools implemented in this repository. Availability in the catalog does not mean every action has been verified on every DAW version.

Transport — 9 tools

These send MCU MIDI commands. All take an empty argument object: {}.

Tool

Action

transport_play

Start playback.

transport_stop

Stop playback.

transport_record

Send the Record command; recording depends on the DAW's track arming and input setup.

transport_rewind

Rewind the transport.

transport_fast_forward

Fast-forward the transport.

transport_toggle_loop

Toggle loop/cycle playback.

transport_save

Send the Save command.

transport_undo

Send Undo.

transport_redo

Send Redo.

Mixer — 11 tools

channel is a zero-based MCU strip index (0–7) in the current bank, not a track name or a persistent song-track ID. mixer_set_fader also accepts "master". Fader level is a 0–100 position, not a dB value.

Tool

Arguments

Action

mixer_set_fader

channel, level

Set a channel or master fader position.

mixer_toggle_mute

channel

Toggle channel mute.

mixer_toggle_solo

channel

Toggle channel solo.

mixer_toggle_rec_arm

channel

Toggle record arming.

mixer_select_channel

channel

Select a channel strip.

mixer_set_pan

channel, pan (-63–63)

Send relative pan encoder ticks: negative moves left, positive moves right. This does not set an absolute pan position.

mixer_get_state

{}

Read the server's cached mixer state.

mixer_bank_left

{}

Request the previous bank of eight strips.

mixer_bank_right

{}

Request the next bank of eight strips.

mixer_goto_bank

bank (0–7)

Request a specific bank.

mixer_get_bank

{}

Read the server's bank counter and corresponding channel range.

Mixer readback has limits: faders use DAW feedback when available, otherwise the last value sent. Mute, solo, and record-arm values are assumed from sent commands. The bank counter does not establish which tracks the DAW is actually showing. Verify the target bank and the result in the DAW before relying on these values. A zero pan tick is not a verified reset-to-center operation.

Track, event, and session editing — 23 tools

These tools send keyboard shortcuts and act on the current DAW selection and focus. All take {}. Their outcome depends on the active view, shortcut bindings, and dialogs; an OK response confirms dispatch, not the final edit.

Tool

Action

auto_add_audio_track

Invoke Add Audio Track and confirm its dialog using the configured mapping.

auto_add_audio_track_mono

Invoke Add Audio Track (mono), using an assigned shortcut.

auto_add_instrument_track

Invoke Add Instrument Track, using an assigned shortcut.

auto_add_bus_track

Invoke Add Bus Channel, using an assigned shortcut.

auto_duplicate_track

Send the configured duplicate shortcut for the selected context.

auto_delete_selected

Delete the current selection.

auto_undo

Undo the last action.

auto_redo

Redo the last undone action.

auto_save

Save the current song.

auto_save_as

Open Save As; completing the dialog is a separate step.

auto_new_song

Open New Song; completing the dialog is a separate step.

auto_toggle_mixer

Show or hide the mixer.

auto_toggle_browser

Show or hide the browser.

auto_toggle_editor

Show or hide the MIDI/audio editor.

auto_select_all

Select all in the active context.

auto_zoom_in

Zoom in.

auto_zoom_out

Zoom out.

auto_zoom_to_fit

Fit the arrangement in the view.

auto_toggle_loop

Toggle loop playback through its shortcut.

auto_go_to_start

Invoke navigation to the song start.

auto_go_to_end

Invoke navigation to the song end.

auto_split_at_playhead

Split selected events at the playhead.

auto_quantize

Quantize selected MIDI notes with the DAW's current grid.

Track duplication, Save As, and Go to End did not perform their intended actions in the local Studio Pro 8.2 check with the then-current mappings. Check your bindings before using them. The mono, instrument, and bus creation actions need assigned shortcuts if none exist in your exported scheme.

Plug-ins and macro files — 2 tools

Tool

Arguments

Action

auto_list_plugins

Optional category: AudioSynth, AudioEffect, or MusicEffect

List plug-ins discovered from the local DAW settings/database.

auto_generate_insert_macro

Required name; optional preset (default "default") and mode (default 1)

Find a plug-in and write a .studioonemacro file for inserting it on selected channels and opening the channel editor.

Generating an insert macro only writes the file. Reload macros in the DAW, select the intended channel, and run the generated macro from the MCP group in the macro toolbar or through an assigned shortcut. This server does not provide direct editing of an instrument's internal drum kit or plug-in parameters.

DAW command discovery and execution — 4 tools

Tool

Arguments

Action

studio_one_generate_command_catalog

Optional path and output

Parse an exported .keyscheme into a local catalog of command names, macros, and shortcuts. Without path, try auto-discovery.

studio_one_list_commands

Optional filter

List catalog entries, optionally matching a substring.

studio_one_run_command

Required name

Resolve a command or macro by its label and dispatch it through its shortcut, with a Windows-only command-palette fallback.

studio_one_save_new_version

{}

Resolve Save New Version in the catalog and dispatch it with a dialog confirmation attempt; verify the saved result.

The catalog is generated per installation, so its command count depends on your DAW and installed macros. Exact case-insensitive names and unique partial matches are supported; ambiguous partial matches return candidates. On macOS, assign a shortcut to commands that do not have one. Windows command-palette search can select an unintended result, so prefer explicit shortcut bindings.

Example MCP calls

These are tool names and argument objects to pass through an MCP client, not shell commands. First export a .keyscheme from the DAW's keyboard shortcut preferences, then generate and inspect its catalog:

{"name": "studio_one_generate_command_catalog", "arguments": {"path": "/absolute/path/to/MyShortcuts.keyscheme"}}
{"name": "studio_one_list_commands", "arguments": {"filter": "Quantize"}}
{"name": "auto_list_plugins", "arguments": {"category": "AudioEffect"}}

With the intended song, selection, and MCU bank confirmed, examples of actions are:

{"name": "transport_play", "arguments": {}}
{"name": "transport_stop", "arguments": {}}
{"name": "mixer_set_fader", "arguments": {"channel": 0, "level": 60}}
{"name": "auto_quantize", "arguments": {}}

The current public server has no dedicated tools for reading all MIDI notes, writing note-by-note arrangements, or importing a MIDI file. Importing a transcription uses the DAW's normal import workflow or a separately installed integration.

Quick start

Requirements: Python 3.10+, Fender Studio Pro or PreSonus Studio One, and a local MCP client.

git clone https://github.com/maaatheeew/fender-studio-mcp.git
cd fender-studio-mcp
python -m venv .venv
.venv/bin/pip install -e ".[dev]"

Register the server with an MCP client:

{
  "mcpServers": {
    "fender-studio": {
      "command": "/absolute/path/to/fender-studio-mcp/.venv/bin/fender-studio-mcp"
    }
  }
}

On Windows, use .venv\\Scripts\\fender-studio-mcp.exe instead.

MCU setup

On macOS/Linux the server creates virtual MIDI ports called StudioPro-MCU. On Windows, create matching loopback ports before starting the server. The server opens MIDI ports at startup, even when you only intend to use shortcuts. Add a Mackie Control Universal external device in Studio Pro / Studio One with the server's output as Receive From and its input as Send To for feedback. This connection is needed for the transport and mixer tools.

Shortcuts and macOS accessibility

Some commands use the DAW's keyboard shortcuts. On macOS, grant Accessibility permission to the app that launches the MCP server. Exporting your own .keyscheme and running python -m studio_pro_mcp.keyscheme makes the server prefer your actual bindings over its fallback mapping.

Keyboard automation changes the foreground DAW. Review a command before running it, keep a saved version of valuable sessions, and do not expose an HTTP instance beyond localhost.

Server CLI commands

Run these from an activated virtual environment, or use the full path to the installed executable:

fender-studio-mcp --help
fender-studio-mcp --version
fender-studio-mcp --list-ports
fender-studio-mcp --transport stdio --port-name StudioPro-MCU
fender-studio-mcp --transport http --http-host 127.0.0.1 --http-port 8765

stdio is the default transport; HTTP serves /mcp. Additional options are --message-delay SECONDS (default 0.02), --debug, and --no-automation. The last option removes the 23 shortcut-based editing tools from the catalog; command execution and Save New Version remain available and can still send keystrokes. It is not a global switch disabling keyboard access.

Music skills: audio recognition and transcription

The two included skills are Markdown workflows for an assistant. They explain how to use separately installed audio tools, review their output, and prepare MIDI for a demo. They do not add audio-recognition tools to the MCP server, install models, or execute transcription on their own.

Skill

Input

Recognition workflow

Intended output

transcribe-drums

Rehearsal audio, phone video, or an isolated drum stem

Extract WAV with FFmpeg; optionally separate drums with Demucs; detect hits with ADTOF-pytorch; review the beat grid and hits.

A drum MIDI draft, a copy preserving source timing, and a report of tempo/grid assumptions.

transcribe-hummed-melody

A short solo vocal, hum, or whistle

Convert to WAV; estimate notes with Basic Pitch; remove false notes and correct timing, durations, and octave errors.

Reviewed melody MIDI plus the raw transcription for comparison.

Drum recognition

The drum workflow covers five broad classes: kick, snare, tom, hi-hat, and cymbal. It includes comparing stem and full-mix results, removing duplicate hits, confirming the song tempo before quantization, and turning repeated grooves into named clips. Velocity is estimated; specific tom pitches, hi-hat openness, cymbal types, ghost notes, and articulations need review.

Example request to an assistant:

Read skills/transcribe-drums/SKILL.md and use it to make a drum MIDI draft from my rehearsal video. Keep a source-timing version, then prepare a separate 120 BPM version with the main grooves in named clips.

Notes from singing, humming, or whistling

The melody workflow works toward a usable note sketch from a clean solo take. It includes removing breath/noise detections, joining fragmented sustained notes, aligning the phrase, and reviewing pitches against the supplied key and chords. Note detection still needs musical review for intended pitch, rhythm, phrasing, and octave.

Example request to an assistant:

Read skills/transcribe-hummed-melody/SKILL.md and turn my hummed recording into a MIDI melody. Preserve the raw result, check octave jumps, and keep the original phrasing before quantizing anything.

To use either workflow, ask your assistant to read the linked SKILL.md and provide the source recording and tempo/key when known. Install the external tools separately according to their own documentation. The recognition steps run locally when configured that way; they are separate from DAW control. See audio transcription notes for dependencies and review guidance.

From rehearsal to demo

The transcription skills deliberately produce a draft, not a claimed ground-truth performance. A useful sequence is:

  1. Export a WAV from the rehearsal recording.

  2. Isolate drums (when needed), transcribe them to a five-class MIDI sketch, then correct tempo, bar alignment, and impossible hits.

  3. Record a clean hum or whistle, convert its pitch contour to MIDI, and check it against the song's key and chords.

  4. Import reviewed MIDI into Studio Pro / Studio One and arrange named clips.

See audio transcription notes and the two skills in skills/.

Development

pytest
ruff check src tests
mypy src

The test suite is self-contained: it must not read an installed DAW profile, plug-in cache, or a real song.

This project builds on and is grateful to:

The external projects above are not bundled here. Their licences, model terms, and installation instructions apply independently.

Contributing

Contributions are welcome: bug reports, platform testing, safer command dispatch, documentation, and better transcription-review workflows are all useful. Please read CONTRIBUTING.md, add tests for code changes, and avoid committing recordings, exported DAW settings, credentials, or copyrighted reference material.

License

MIT — see LICENSE. Upstream copyright notices are retained.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    MCP server for headless, agent-native control of openDAW, enabling programmatic music production with tracks, instruments, effects, MIDI, automation, and rendering via 543 tools.
    2
    100
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that turns PreSonus Studio One into an AI-controllable DAW, enabling production workflows like editing, MIDI manipulation, mixing, effects, and export through an LLM.
    12
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    An MCP server that lets Claude and other MCP clients read PreSonus Studio One .song files directly and drive a running Studio One through an in-app bridge device. It exposes tools for songs, tracks, takes, markers, transport, mixer channels, meters and roughly 1,000 Studio One commands.
    27
    21 npm
    12
    MIT