FracTone MCP server and skills

Drive an FM9 from an AI agent. The FracTone MCP server (fractone-mcp) and six skills let Claude Code, Pi or any MCP client work with the presets on an FM9 connected to your PC.

  • Unofficial. Not made, endorsed or supported by Fractal Audio Systems. FM9 and FM9-Edit are their trademarks.
  • Free and open source (MIT): github.com/GreyManSoftware/fractone.
  • Writing presets to hardware carries risk. Switch on the safeguards below and keep backups.

What it does

  • Read, describe, back up, edit, audition, store and restore presets.
  • Turn knobs live, switch channels, bypass and scenes, as FM9-Edit does, with diff, undo and snapshots.
  • Save, list and apply FM9-Edit block-library favourites.
  • Search every preset for a model or cab and the scenes that play it.
  • Design a preset from a description of a tone, with the same checks as the FracTone website.
  • Match a preset's tone to a recording with a fitted Parametric EQ.
  • Re-amp a DI through every scene over the FM9's USB audio, and level scenes.

Requirements

  • Windows, with the FM9 connected by USB. The server reaches the FM9 through Windows MIDI, so it runs on the PC itself, not in a container.
  • FM9 firmware 12. Writes are refused on other firmware; reading still works.
  • FM9-Edit, installed and opened once with the FM9 connected. The server reads FM9-Edit's own parameter dictionary from your PC rather than shipping a copy. It stays on your machine.
  • The .NET 10 SDK, which provides dnx to run the server.

Install

Claude Code

/plugin marketplace add GreyManSoftware/fractone
/plugin install fractone@fractone

This installs the server and the skills. The Code tab in Claude Desktop runs Claude Code, so it picks up the plugin too.

Claude Desktop (chat)

  • A one-click desktop extension is coming soon.
  • Until then, add the server to Claude Desktop's config file (Settings, Developer, Edit Config):
{
  "mcpServers": {
    "fractone": { "command": "dnx", "args": ["FracTone"] }
  }
}
  • Restart Claude Desktop. The skills aren't available in chat; the tools are.

Pi

pi install npm:fractone

Pi has no permission prompts, so the package asks you before any call that changes what the FM9 holds or plays (storing, auditioning, selecting a preset).

Any other MCP client

Run dnx FracTone as a stdio server.

Tools by job

Job Tools
Start and inspect status, read_preset, read_edit_buffer, describe_preset, get_channel, list_block_settings
Edit a file offline set_channel, copy_channel, compose_scene, add_block, remove_blocks, rename_preset
Live control get_parameters, set_parameters, set_block, select_scene, select_preset
Undo and compare history, undo, snapshot, restore_snapshot, diff
Listen and keep audition, store_preset, store_edit_buffer, backup
Favourites and search library_list, library_save, library_apply, index_build, search
Design a preset tone_design_guide, build_preset
Tone matching record, capture_playback, capture_media, separate, measure, tone_match, rank_cabs
Re-amping and levels reamp, measure_level, level_scenes

Skills

  • Operations: read, edit, audition, store and restore presets.
  • Library: FM9-Edit favourites.
  • Search: find models and cabs across every preset.
  • Tone designer: build a preset from a description of a tone.
  • Tone match: fit a Parametric EQ so a preset sounds closer to a recording.
  • Levelling: balance scenes and set the preset's output level.

Safeguards

Offline edits never touch the FM9 and never overwrite their input: each writes a new file.

Whatever the settings, every store:

  • reports what it replaced;
  • checks the FM9's copy before storing;
  • undoes a failed import.

You choose the rest. We recommend limiting writes to scratch slots and switching every safeguard on:

dnx FracTone setup --careful --writable 500-505
Safeguard What it does Default
writableSlots Only these preset slots can be written every slot
backupBeforeStore Keeps the slot's previous preset in backups off
verifyAfterStore Reads the stored slot back and compares off
refuseLoadIfBufferChanged Refuses to load over unsaved edits on the FM9 off
confirmWrites A store returns a code; the agent must ask you and call again with it off
  • --careful switches every safeguard on.
  • --writable 500-505 limits writes to presets 500-505. Use any slots you keep free for experiments.
  • backup copies any range of slots to files. A full backup of 512 presets takes about 2-3 minutes.

Settings file

  • Settings live in %APPDATA%\fractone\settings.json. setup writes it; you can also edit it by hand.
  • It holds the safeguards above and the folders FracTone uses (work folder, backups, add-on downloads).
  • status shows the current settings, the FM9's firmware and the MIDI ports.

Tone matching

  • A take (you playing the part through the preset, recorded from the FM9) is compared with a target (the recording to sound like).
  • The match fits the FM9's Parametric EQ to close the difference and writes it into a spare EQ channel, optionally in a new scene, so your original scenes stay as they were.
  • Targets can be any common audio file, a capture of what the PC plays, or a web page's media (capture_media). Only capture media you have the right to use. It stops at bot checks, sign-in walls and DRM, and never records ads.
  • A full mix can be split first with separate (an optional add-on, installed on first use; NVIDIA GPU, Apple silicon or CPU).
  • A match fixes EQ, not gear. If it stays far off, the amp, drive or cab is the likelier cause.

Re-amping and levelling

  • reamp plays a DI through every scene of a preset and records each one, so no one has to play. The preset needs Input 4 (USB) in each scene's path, and the FM9's ASIO driver must be free.
  • It plays through your speakers, so the agent asks first.
  • level_scenes balances scenes against each other (Scene Level) and sets the preset's master Level so its loudest scene peaks at a target, from re-amped takes or from measure_level while you play.
  • Levels are live edits: undo takes them back, store_edit_buffer keeps them.

Choosing a cab: rank_cabs

  • Re-amp the scene once with its Cab block (and any EQ after it) bypassed.
  • rank_cabs predicts every factory cab from its measured response, with a gentle EQ after it, in about 15 seconds.
  • Pick one that suits your gear and era from the close ones, using a filter such as 4x12 or V30.
  • The agent applies it on a spare channel and scene, so you can compare it with your own sound.

Agents in containers

Docker on Windows can't reach USB MIDI, so the server always runs on the PC. An agent in a container can use it over HTTP: start dnx FracTone --http on the PC and point the agent at http://host.docker.internal:39009/mcp with the token from %APPDATA%\fractone\http-token.

Problems

  • "The FM9's MIDI ports could not be opened." FM9-Edit or another program holds them. Disconnect FM9-Edit.
  • "Not writable under the current settings." The slot is outside writableSlots.
  • "The edit buffer has changes that are not stored." Save or discard your edits on the FM9 first.
  • Anything else: GitHub issues.