Skip to main content
Glama
MCP Audio Studio
by flujo-app

MCP Audio Studio

An interactive digital audio workstation delivered as an MCP server and MCP App. It combines an FL-style channel rack, piano roll, playlist, mixer, effects, automation, plugin slots, audio-file tracks, microphone recording, and offline WAV rendering in one package.

MCP Audio Studio channel rack

The model and the person use the same authoritative project. Every UI action calls an MCP tool; every model-side edit becomes visible in an open studio through revision polling.

What works

  • Tempo, time signature, swing, metronome, loop, play/stop, and microphone record controls.

  • Instrument and audio tracks with a 16-step channel rack and chromatic piano roll.

  • Audio file import, clip placement, gain/trim metadata, and browser playback.

  • Per-channel and master volume, pan, mute, solo, sends, and animated meters.

  • Four-band equalizer and filter, delay, reverb, distortion, compressor, chorus, and limiter slots.

  • Playback and render automation for master/track mixing, EQ, sends, built-in effects, instrument parameters, and numeric plugin parameters, with linear, hold, and smooth control points.

  • Built-in DSP slots, browser-safe Web Audio Module (WAM) slots, and VST3 control/state slots.

  • Pure-JavaScript stereo WAV rendering, returned as playable MCP audio content.

  • Project persistence, import, and export.

  • stdio, Streamable HTTP, and HTTPS transports.

  • Standalone browser mode at the HTTP/HTTPS server root.

Related MCP server: flemcee

Run it

The package is published on npm. With Node.js 18 or newer, run it without installing or cloning the repository:

# MCP stdio
npx -y mcp-audio-studio@latest --stdio

# HTTP MCP endpoint + standalone studio
npx -y mcp-audio-studio@latest --http --port 3100

The HTTP studio opens at http://127.0.0.1:3100/; the MCP endpoint is http://127.0.0.1:3100/mcp.

One standalone executable

Download the executable for Windows, macOS, or Linux from GitHub Releases. It contains the server, MCP App, runtime, and JavaScript dependencies.

# MCP stdio
./mcp-audio-studio-windows-x64.exe --stdio

# HTTPS MCP endpoint + standalone studio
./mcp-audio-studio-windows-x64.exe --https --port 3100

Without configured certificates, HTTPS mode creates an ephemeral self-signed localhost certificate. For a trusted certificate, set MCP_AUDIO_STUDIO_TLS_CERT and MCP_AUDIO_STUDIO_TLS_KEY.

From source

For local development from a checked-out repository:

npm install
npm run build
node ./dist/index.js --stdio
node ./dist/index.js --http --port 3100

MCP client configuration

Use the npm package in an MCP client without a separate installation:

{
  "mcpServers": {
    "audio-studio": {
      "command": "npx",
      "args": ["-y", "mcp-audio-studio@latest", "--stdio"]
    }
  }
}

For a checked-out repository instead:

{
  "mcpServers": {
    "audio-studio": {
      "command": "node",
      "args": ["./dist/index.js", "--stdio"]
    }
  }
}

For a downloaded executable, replace command with its absolute path and use ["--stdio"] for args.

Call studio_ui to render the studio. The tool declares _meta.ui.resourceUri = "ui://audio-studio/studio-v1.html", and the resource uses the portable text/html;profile=mcp-app MIME type and MCP Apps bridge.

MCP tools

Area

Tools

Studio and project

studio_ui, get_project, new_project, set_project, import_project, export_project

Transport

set_transport

Tracks and notes

add_track, update_track, remove_track, set_steps

Audio clips

add_audio_clip, update_audio_clip, remove_audio_clip

Mixing

set_mixer, set_equalizer

Effects

add_effect, update_effect, remove_effect

Plugins

add_plugin, update_plugin, remove_plugin

Automation

upsert_automation, remove_automation

Rendering

render_audio, get_render

All data tools work without a UI and return model-readable text plus structured content. studio_ui is the dedicated render tool, avoiding unnecessary iframe remounts.

VST3 and WAM support

MCP Apps run in a sandboxed browser iframe, which cannot load native .dll, .so, or .vst3 binaries. This release therefore provides:

  • WAM URL slots for browser-safe plugin modules.

  • VST3 slots with paths, enable/bypass, parameters, opaque state, and automation targets.

  • A stable project/tool representation intended for a future native plugin-host bridge.

The bundled Web Audio and offline render engines process built-in instruments/effects. Native VST3 DSP is not executed in this release; representing it otherwise would be unsafe and technically inaccurate. A native bridge should isolate each plugin in its own process and use licensed VST3 hosting APIs.

Persistence and audio files

Pass --data ./studio-project.json or set MCP_AUDIO_STUDIO_DATA to persist every revision. Imported audio is stored as a data URL inside the project. Browser imports and microphone recordings are normalized to PCM WAV so browser playback and offline rendering use the same asset; direct MCP imports should provide PCM/float WAV data. Offline rendering always emits 16-bit stereo WAV.

Recent renders are kept in memory (up to eight) and are accessible with get_render or, in web mode, GET /renders/:id.

Development

npm ci
npm run typecheck
npm test
npm run build
npm run serve

npm run build produces a single ./dist/index.js with the entire minified React MCP App embedded as a string. Tests use the official MCP SDK’s linked in-memory transport to verify tool and UI resource discovery.

Publishing to npm

To publish the current version:

npm run release

The release command signs in through npm when necessary, runs the complete check suite, publishes the package publicly, and confirms that npm serves the version. It is safe to rerun: if that exact version is already published, it verifies the project and skips the duplicate publish.

Run npm run release:check to validate the release helper without publishing.

Security

  • The web server disables identifying headers and uses a 64 MB JSON limit for embedded audio.

  • MCP App permissions request microphone and clipboard-write; hosts may deny either capability.

  • The app declares inline, fullscreen, and picture-in-picture (pip) display-mode support; the host chooses which declared modes are available.

  • Remote WAM and audio URLs are represented in project state but are not allowed by the embedded MCP App CSP in this release.

  • VST3 paths are metadata only and are never executed.

See SECURITY.md for reporting vulnerabilities.

License

MIT

Available Tools

26 tools
add_audio_clipAdd audio clipB

Place an audio file on a track. Pass a data URL for bundled audio or a source URL for a remotely hosted file.

Inputs: name (required), trackId (required), startStep (required), lengthSteps (required), +4 more.

add_effectAdd effectA

Add a filter, delay, reverb, distortion, compressor, chorus, or limiter to a track effects chain.

Inputs: type (required), trackId (required), mix, parameters.

add_pluginAdd pluginC

Add a built-in, Web Audio Module (WAM), or VST3 plugin slot. VST3 slots expose parameters and state for a native bridge.

Inputs: name (required), format (required), trackId (required), uri, +3 more.

add_trackAdd trackB

Add an instrument or audio track linked to a built-in, sampler, WAM, or VST3 instrument slot.

Inputs: name (required), note, type, color, +1 more.

export_projectExport projectB
Read-onlyIdempotent

Export the complete project as portable JSON.

Inputs: pretty.

get_projectGet projectA
Read-onlyIdempotent

Return the authoritative DAW project, including transport, tracks, steps, clips, mixer, effects, plugins, EQ, and automation.

Inputs: no named parameters.

get_renderGet audio renderA
Read-onlyIdempotent

Retrieve a recent rendered WAV file by render ID.

Inputs: renderId (required).

import_projectImport projectA
Destructive

Replace the current project from an exported project JSON document.

Inputs: json (required).

new_projectNew projectA
Destructive

Create a fresh demo-ready audio project, replacing the current project.

Inputs: name.

remove_audio_clipRemove audio clipA
Destructive

Remove an audio clip from a track.

Inputs: clipId (required), trackId (required).

remove_automationRemove automation laneC
Destructive

Remove an automation lane.

Inputs: laneId (required).

remove_effectRemove effectA
Destructive

Remove an effect from a track effects chain.

Inputs: trackId (required), effectId (required).

remove_pluginRemove pluginB
Destructive

Remove a plugin slot from a track.

Inputs: trackId (required), pluginId (required).

remove_trackRemove trackA
Destructive

Remove a track and its notes, clips, mixer channel, effects, plugins, and related automation.

Inputs: trackId (required).

render_audioRender audioA
Read-onlyIdempotent

Offline-render the current project to a stereo 16-bit WAV file and return playable audio.

Inputs: bars, name, sampleRate.

set_equalizerSet equalizerB

Set the four-band EQ gains in dB for a track.

Inputs: trackId (required), low, high, lowMid, +1 more.

set_mixerSet mixer channelA

Set volume, panning, mute, solo, and send levels for a track or the master channel.

Inputs: target (required), pan, mute, solo, +3 more.

set_projectSet project metadataA

Rename the current project.

Inputs: name (required).

set_stepsSet sequencer stepsA

Edit step-sequencer or piano-roll notes. Each update can toggle a step and set MIDI note, velocity, and gate length.

Inputs: trackId (required), updates (required), patternLength.

set_transportSet transportC

Change playback, recording, tempo, time signature, swing, metronome, position, and loop settings.

Inputs: swing, tempo, loopEnd, playing, +7 more.

studio_uiOpen Audio StudioA
Read-onlyIdempotent

Open the complete interactive DAW. Use this when the user wants to see or edit the studio visually.

Inputs: no named parameters.

update_audio_clipUpdate audio clipA

Move, trim, rename, or change the gain of an audio clip.

Inputs: clipId (required), trackId (required), gain, name, +2 more.

update_effectUpdate effectA

Enable, bypass, rename, mix, or change parameters on an effect slot.

Inputs: trackId (required), effectId (required), mix, name, +2 more.

update_pluginUpdate pluginA

Enable, bypass, rename, change parameters, or store opaque plugin state for a plugin slot.

Inputs: trackId (required), pluginId (required), name, state, +2 more.

update_trackUpdate trackB

Update track name, color, type, instrument, preset, oscillator, or instrument parameters.

Inputs: trackId (required), name, type, color, +6 more.

upsert_automationSet automation laneA

Create or update an automation lane for master/track volume, pan, effect, plugin, or instrument parameters.

Inputs: name (required), target (required), max, min, +4 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 26 tools

    Disambiguation5/5

    Each tool targets a distinct resource and action: tracks, audio clips, effects, plugins, automation, steps, mixer, EQ, transport, and project. Even closely related tools like add_effect and add_plugin are clearly differentiated by description (built-in effects vs. plugin formats).

    Naming Consistency5/5

    Tool names overwhelmingly follow a verb_noun pattern (add_track, update_track, remove_track, set_mixer, render_audio). There is one minor deviation (studio_ui), but it is clearly a UI action and does not disrupt the overall consistency.

    Tool Count3/5

    With 26 tools, the server is above the typical range and borders on excessive. However, the comprehensive scope of a DAW (tracks, clips, effects, plugins, automation, mixing, transport, rendering) makes the high count defensible, though it remains on the heavy side.

    Completeness4/5

    The tool surface covers project lifecycle, track management, clip editing, effects/plugins, automation, step sequencing, mixer/EQ, transport, and rendering. Minor gaps exist, such as no dedicated getter for individual tracks/clips (get_project returns everything), but these are not critical and do not impede core workflows.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that enables remote control and automation of FL Studio via the flapi Python client. It provides tools for managing transport, mixer tracks, pattern sequencing, and plugin parameters, allowing users to execute Python code directly within the FL Studio environment.
      2
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that connects AI assistants to FL Studio for music production via Virtual MIDI. It enables users to control transport, manage the mixer, write notes, and manipulate plugin parameters through natural language.
      1
      MIT