Exploring a plugin with an agent
Point an MCP client at nexus-mcp and the agent can work through a plugin on its own:
- list the installed plugins and load one;
- list its presets and load them one by one, or list its parameters and set them;
- render a performance offline, notes, CC automation and parameter ramps included, at full CPU speed, and get back 32-bit float 48 kHz WAV with peak and RMS level, duration and a silence flag;
- snapshot the plugin’s saved state, change a parameter, and diff, to see what the change did to the state;
- save what it found as a preset.
It runs headless on macOS, Linux and in Docker, over stdio or streamable HTTP; on Linux it needs no ALSA, PulseAudio or PipeWire.
Tools
The same tools over MCP and REST:
- list_plugins, load_plugin: discover installed CLAP and VST3 plugins in the standard paths and load any of them.
- list_presets, load_preset, save_preset: browse, load or save .nexuspreset files.
- list_params, get_params, set_params: inspect and set parameters.
- render_audio: render an offline performance (notes, CC automation, parameter ramps) to 32-bit float 48 kHz WAV, with peak and RMS level, duration and a silence flag.
- decode_state, edit_state, diff_state, snapshot_state: decode a plugin's saved state into structure, apply JSON-pointer edits, snapshot and diff it.
Quickstart
Build the MCP server:
cargo build --release --bin nexus-mcpAdd it to your MCP client (.mcp.json or claude_desktop_config.json):
{
"mcpServers": {
"nexus": {
"command": "/path/to/nexus/target/release/nexus-mcp",
"args": ["--stdio"]
}
}
}Or serve it over HTTP, at http://127.0.0.1:9997/mcp:
cargo run --bin nexus-mcp -- --port 9997Or open the GUI host (macOS):
cargo run --bin nexus-appOverview
Nexus is built in layers. The foundation is a format-agnostic hosting engine that loads and runs VST3 and CLAP plugins behind a single interface, so callers never branch on the format. Everything else is built on that engine: a standalone app, a headless MCP server, a REST API, and a plugin that hosts another plugin.
Inside a DAW
nexus-wrap is a CLAP plugin with the engine inside: it loads another plugin and runs it in the DAW, its parameters automatable and its state open to the same tools.
Crates
nexus-host- The engine that discovers, loads and runs VST3/CLAP plugins. Fast offline rendering without audio drivers; no device I/O at all.
nexus-tools- Transport-agnostic tool traits, registry, state codecs, snapshot store and main-thread bridge.
nexus-mcp- Standalone MCP server exposing every tool over stdio or streamable HTTP.
nexus-rest- In-process REST API and a browser-based debug UI.
nexus-app- Standalone GUI host (macOS): egui UI, CPAL audio out, MIDI in, plugin browser and editor windows.
nexus-wrap- A CLAP plugin that hosts another plugin.
Under the hood
- CLAP hosting through clack; VST3 hosting through the pure-Rust vst3 COM bindings, with no Steinberg SDK needed to host.
- Realtime-safe processing: no allocation in the process call on either format; parameter changes, the transport and plugin notices are realtime-safe too.
- MIDI 2.0 events to both formats.
- The GUI is egui on wgpu (Metal); plugin editors are native child windows.
- Stable Rust, edition 2024, rustc 1.90 or later.
Next
- VST3 export of
nexus-wrapthrough clap-wrapper, so one implementation ships in both formats. - Full VST3 / CLAP extension parity.
- A diff-probing explorer: set a parameter, snapshot, diff, and map a plugin's state bytes to its parameters.