Skip to main content
Glama

FilmCraft MCP

An MCP server that lets Claude, Cursor or any MCP client drive FilmCraft. You describe the edit in plain words, and the AI inspects your project, imports media, runs any FilmCraft command, renders frames and exports the sequence, either inside the running FilmCraft app or headless against a project file.

Requirements

  • FilmCraft installed. The server looks for filmcraft-cli in C:\Program Files\FilmCraft\, in /Applications/FilmCraft.app/Contents/MacOS/, then on your PATH

  • Node.js 20.19+

  • An MCP client: Claude Code, Claude Desktop, Cursor, VS Code, …

Related MCP server: Shotcut MCP

Install

git clone https://github.com/glorybnat/filmcraft-mcp.git
cd filmcraft-mcp
npm install
npm run build

This produces the server at dist/filmcraft-index.js.

Connect your AI client

Claude Code

claude mcp add filmcraft --scope user -- node C:/path/to/filmcraft-mcp/dist/filmcraft-index.js

Start a new Claude Code session afterwards. Tools only load in sessions that start after the server is added.

Claude Desktop, Cursor, VS Code: add this to the client's MCP config:

{
  "mcpServers": {
    "filmcraft": {
      "command": "node",
      "args": ["C:/path/to/filmcraft-mcp/dist/filmcraft-index.js"],
      "env": { "FILMCRAFT_PROJECT": "C:/Users/you/Videos/my-edit.fcproj" }
    }
  }
}

Ask your AI to "inspect my FilmCraft project". If it answers with your bins and sequences, you're connected.

Edit live in the FilmCraft app

By default every call runs headless against a project file. To watch the edits happen in the GUI instead, start FilmCraft with its control socket and point the server at it:

filmcraft --control 7778
"args": ["C:/path/to/filmcraft-mcp/dist/filmcraft-index.js", "--bridge-addr", "127.0.0.1:7778"]

Try saying

  • "What's in the open project? List the sequences and how many clips are on each track."

  • "Import everything in ~/Footage/day1 into the project."

  • "Find the command that splits a clip and razor the timeline at 00:12."

  • "Render a PNG of the frame at 42 seconds so I can check the grade."

  • "Probe interview.mov and tell me its codec, frame rate and audio tracks."

  • "Export the in/out range as ProRes, then a half-resolution H.264 preview."

What it can do

Every tool name starts with fc_.

Group

Tools

Project (2)

inspect (project tree, sequences, tracks, clips), import (one or more media files)

Commands (3)

list_commands, describe (menu, shortcut, parameter schema, enabled state), exec (any command by ID, e.g. timeline.razor, file.newBin)

Render (3)

export (preset or format: h264, hevc, prores, dnxhr, apv, mjpeg, mxf, png, tiff, bmp, gif, wav, aiff, aac; range, scale, quality, queue, offline media, GPU), render_frame (one frame to PNG), list_export_presets

Media (1)

probe (codec, resolution, frame rate, audio tracks, image sequences)

fc_exec runs any FilmCraft command ID listed by fc_list_commands, for anything without a dedicated tool. Use fc_describe first to see the parameters a command takes.

How it works

Each MCP tool call runs filmcraft-cli once with the matching subcommand (inspect, exec, import, export, render, probe, …) and returns its JSON output. In bridge mode the CLI forwards the command to the running FilmCraft app; in headless mode it opens the project file itself, and saves it only when you ask for --save or --save-as.

Every option can be passed as a flag after the server path or as an environment variable:

Flag

Variable

Purpose

FILMCRAFT_CLI_PATH

Full path to filmcraft-cli if it isn't in a default location or on PATH

--bridge-addr HOST:PORT

FILMCRAFT_BRIDGE_ADDR

Drive the running FilmCraft app (started with filmcraft --control PORT)

--project <path>

FILMCRAFT_PROJECT

Project file to open in headless mode

--demo

FILMCRAFT_DEMO

Use the built-in demo project (headless)

--save

FILMCRAFT_SAVE

Save the project after each operation (headless)

--save-as <path>

FILMCRAFT_SAVE_AS

Save to a new path instead (headless)

--data-dir <dir>

FILMCRAFT_DATA_DIR

FilmCraft data folder, used for export presets

--timeout-ms <ms>

FILMCRAFT_TIMEOUT_MS

Per-command timeout (default 60000)

Project layout

src/
├── filmcraft-index.ts         entry point, flags and env parsing
├── filmcraft-server.ts        MCP server, tool and resource registration
├── bridge/
│   └── filmcraft-bridge.ts    finds filmcraft-cli and runs each command
└── tools/
    └── filmcraft-core.ts      the nine fc_* tools

Troubleshooting

Symptom

Fix

filmcraft-cli not found on PATH

Install FilmCraft, or set FILMCRAFT_CLI_PATH to the full path of filmcraft-cli

filmcraft-cli timed out after 60000ms

Long exports need more time. Raise FILMCRAFT_TIMEOUT_MS, or pass queue: true to fc_export

Tools don't show up

Restart your AI client or start a new session after adding the server

Edits don't appear in the FilmCraft window

You're in headless mode. Start the app with filmcraft --control 7778 and add --bridge-addr 127.0.0.1:7778

Headless edits are lost

Headless mode doesn't save by default. Add --save or --save-as <path>

Export fails on missing media

Relink the clips, or pass allow_offline: true to render placeholders

Disclaimer

This is an unofficial community project and is not affiliated with the makers of FilmCraft. The FilmCraft name and owl logo belong to their respective owners.

License

MIT

Available Tools

9 tools
fc_describeA

Get full details for a single filmCraft command: its menu, shortcut, parameter schema, and whether it is currently enabled.

Inputs: id (required).

fc_execB

Execute any filmCraft command by its command ID. Use fc_list_commands to discover IDs. Params are passed as key-value pairs.

Inputs: id (required), params.

fc_exportA

Export the active filmCraft sequence. Specify an output path with a format matched to its extension, or pass a preset name. Returns a result object that includes any offline-media warnings.

Inputs: out (required), end, queue, range, +8 more.

fc_importC

Import one or more media files into the filmCraft project.

Inputs: files (required).

fc_inspectA

Inspect the open filmCraft project and/or active sequence. Returns bin tree, sequences, tracks, and clips as JSON.

Inputs: scope.

fc_list_commandsA

List all available filmCraft commands with their IDs, labels, menu paths, shortcuts, and parameter schemas.

Inputs: filter.

fc_list_export_presetsA

List all available filmCraft export presets (built-in and user-defined) with name, category, and format.

Inputs: query.

fc_probeB

Get detailed media information for a file: codec, resolution, frame rate, audio tracks, and format-specific metadata.

Inputs: file (required), image_sequence.

fc_render_frameB

Render a single Program Monitor frame to a PNG file at the given sequence time.

Inputs: out (required), seconds (required), scale, allow_offline.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 9 tools

    Disambiguation3/5

    The generic fc_exec overlaps heavily with the specialized fc_import, fc_export, and fc_render_frame tools, since those operations are almost certainly also valid command IDs — an agent may be unsure which path to take. Similarly, fc_list_commands (returns parameter schemas) and fc_describe (returns parameter schema for one command) have fuzzy boundaries. Descriptions help somewhat, but the escape-hatch-plus-wrappers design creates real selection ambiguity.

    Naming Consistency4/5

    All tools use a consistent fc_ prefix with snake_case verb_noun structure (fc_list_commands, fc_list_export_presets, fc_import, fc_export, fc_render_frame). Minor deviation: fc_exec is an abbreviation while other verbs are spelled out (fc_describe, fc_inspect), but the pattern is still clearly readable and predictable.

    Tool Count5/5

    Nine tools is well within the sweet spot for a domain-control server. Each tool corresponds to a distinct capability — discovery, inspection, execution, media ingest, probing, export, and frame rendering — with no filler.

    Completeness4/5

    The surface covers the editing lifecycle well: discover commands, execute them, inspect project/sequence state, import media, probe files, list presets, export, and render frames. The generic fc_exec acts as an escape hatch for missing operations (project save/create, sequence edits), so no hard dead ends, though a non-expert agent must discover command IDs to fill those gaps.

    Related MCP Connectors

    Related MCP Servers