MCP runs from the desktop release’s command-line tool. The browser editor on this site has its own JavaScript API instead (below), which an agent can use through a browser. For transcription and voice-over inside the editor, use the AI panel.
Two ways to run it
| Mode | Command | What the agent drives |
|---|---|---|
| Headless | filmcraft-cli mcp --demo or --project p.fcproj | An in-process engine session with no window; neither flag starts an empty project |
| Bridge | filmcraft-cli mcp --bridge 127.0.0.1:9876 | The running desktop app, started with filmcraft --control 9876; adds UI tools and window screenshots |
Set up with Claude Code
The release packages ship filmcraft-cli with the app:
| Install | Where the CLI is |
|---|---|
| Windows (MSI) | C:\Program Files\FilmCraft\filmcraft-cli.exe by default, not on PATH |
| Linux (deb, rpm) | /usr/bin/filmcraft-cli |
| macOS | The separate filmcraft-cli-0.6.0-macos-universal.zip download |
# Linux, or macOS with the CLI unzipped onto PATH
claude mcp add filmcraft -- filmcraft-cli mcp
# Windows, default install folder
claude mcp add filmcraft -- "C:\Program Files\FilmCraft\filmcraft-cli.exe" mcpOr add it to your client’s configuration, here as a bridge to the running app:
{
"mcpServers": {
"filmcraft": { "command": "/abs/path/filmcraft-cli", "args": ["mcp", "--bridge", "127.0.0.1:9876"] }
}
}The control port listens on 127.0.0.1 only but has no authentication, so only enable it while you use it.
What the agent gets
- Commands:
command_list(id, label, menu, shortcut, parameters, enabled now),command_runfor one command,command_batchfor several in order. Edits are undoable. - State:
project_inspectfor bins and items,sequence_inspectfor tracks, clips, effects, transitions, markers and the playhead, ordoc_inspectfor both. - Media:
media_importimports files by absolute path. - Seeing the result:
render_framereturns a PNG of the Program frame at any time; in bridge modeui_screenshotcaptures the window or one panel. - The UI itself (bridge mode):
ui_elements,ui_click,ui_drag,ui_key,ui_typeandui_control, with a stable automation id on every widget.
Read-only tools carry MCP’s readOnlyHint, so a client can let inspects and renders run without asking and confirm edits.
A typical session
project_inspectto find item ids, thenmedia_importfor new footage.command_run file.newSequencewith a name, size and frame rate.command_run timeline.placefor each clip,timeline.razororsequence.addEditto cut,edit.rippleDeleteto close gaps.command_run effects.setParamto grade a clip with Lumetri parameters, andrender_frameto look at the result.command_run file.exportMediawith a path,format: "h264"andwait: true.
The FilmCraft team built the trailer and grades in its README screenshots this way, with an agent driving the running app.
Drive the browser build with window.filmcraft
The web build on this site exposes the desktop control channel as promises on its app page. Open filmcraft.run/app/ in a browser your agent controls (or reach the editor’s iframe with document.querySelector('iframe').contentWindow.filmcraft), then:
await filmcraft.importFiles(input.files); // File / FileList / File[]
await filmcraft.execute("file.newSequence", {name: "Cut 1"});
await filmcraft.execute("timeline.place", {item: 12, track: "V1", seconds: 0});
await filmcraft.request("ui.playback", {action: "play"});
const {pngBase64} = await filmcraft.screenshot(); // the canvas as PNG
const {job, path} = await filmcraft.execute("file.exportMedia", {format: "h264", path: "/exports/out.mp4"});
const bytes = await filmcraft.readFile(path); // once jobs.list says it finishedEngine commands take the same ids and parameters as MCP and the CLI. filmcraft.commands() lists them, filmcraft.files() lists the browser’s virtual files, and filmcraft.info() reports the graphics backend, compositor, storage and WebCodecs support. Commands that need threads on the desktop (render previews, proxies, Project Manager, mask tracking) report an error in the browser for now.
Without MCP: the CLI on its own
# List every command
filmcraft-cli commands
# Razor the active sequence at 3.5 s and save
filmcraft-cli --project cut.fcproj --save exec timeline.razor seconds=3.5
# Export the active sequence as H.264 and wait for it
filmcraft-cli --project cut.fcproj export out.mp4 --format h264
# One Program frame to PNG
filmcraft-cli --project cut.fcproj render --seconds 12 --out frame.pngFAQ
Can an AI agent control the browser version on this site?
Yes, through a browser. The web build has a JavaScript API, window.filmcraft, on its app page (filmcraft.run/app/). An agent that drives a browser, for example with Playwright or the Chrome DevTools protocol, can call it to run engine commands, import files, take screenshots and read exports. There is no MCP server inside the browser; for MCP, use filmcraft-cli on your computer.
Which agents work with the MCP server?
Any MCP client that can launch a local stdio server: Claude Code, Claude Desktop, Cursor and others. The project documents a Claude Code setup; other clients take the same command and arguments.
Can the agent read or write files anywhere on my disk?
Yes. The MCP server has no folder-confinement option, so it can read and write wherever your user account can. Run it in a project folder you are happy for it to work in, and review what it does.
Can the agent watch long exports?
Yes. A headless file.exportMedia call with wait: true blocks until the file is written, sends MCP progress notifications when the client asks for them, and stops the encode and deletes the partial file when the request is cancelled.
Source: FilmCraft’s agents guide, control protocol and web build notes. Options can change between releases; check filmcraft-cli help.