Skip to main content
Glama

Understand any timeline

Resolution, frame rate, clips, gaps, markers and keywords in one call. Pacing analysis shows cuts per minute and a clip-length histogram.

Edit without risk

Trim, split, reorder, delete, change speed and add transitions. Every edit writes a new *_modified.fcpxml; the original is never touched.

QC before export

Detect gaps (black frames), flash frames and reused media, then get a health score (A–F). Output is validated against Apple's FCPXML v1.14 DTD.

Hands-free roundtrip

Export XML from Final Cut Pro, let the AI edit, validate, and import it back. System Events drives the File menu so no manual steps are needed.

Quick start

Requirements: macOS, Node.js 18+, Final Cut Pro 10.6+ (for live control, GUI automation and DTD validation).

git clone https://github.com/kks0488/fcp-mcp.git
cd fcp-mcp
npm install
npm run build
npm test        # 91 tests

Connect to Claude Code

claude mcp add fcp-mcp -- node /path/to/fcp-mcp/dist/index.js

Connect to Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "fcp-mcp": {
      "command": "node",
      "args": ["/path/to/fcp-mcp/dist/index.js"]
    }
  }
}

Then ask things like "Analyze ~/Movies/Edit.fcpxml", "Add chapter markers every 30 seconds" or "Find flash frames and gaps before I export".

Related MCP server: DaVinci Resolve MCP Server

How the roundtrip works

1. EXPORT    fcp_export_xml_gui      File > Export XML, driven by System Events
2. AI EDIT   fcp_add_marker, fcp_trim_clip, ...   parse → modify → write *_modified.fcpxml
3. VALIDATE  xmllint --dtdvalid       FCPXML v1.14 DTD compliance
4. IMPORT    fcp_import_xml_gui      open in Final Cut Pro and pick the library

Without GUI automation, steps 1 and 4 are a manual File menu action. FCP's AppleScript dictionary is read-only, which is why the GUI layer exists.

Tools (30)

Analysis (4)

Tool

Description

fcp_list_projects

Scan a directory for .fcpxml / .fcpxmld files

fcp_analyze_timeline

Resolution, FPS, duration, clip count, markers

fcp_list_clips

All clips with timecodes, media paths, keywords

fcp_analyze_pacing

Cuts-per-minute with histogram visualization

Markers & Keywords (4)

Tool

Description

fcp_list_markers

List markers filtered by type (standard/chapter/todo)

fcp_add_marker

Add a marker at SMPTE timecode or rational time

fcp_batch_add_markers

Add multiple markers in one operation

fcp_list_keywords

List keyword ranges applied to clips

Editing (6)

Tool

Description

fcp_trim_clip

Change clip in-point and/or duration

fcp_reorder_clips

Move a clip to a different position in timeline

fcp_delete_clips

Remove clips by index

fcp_split_clip

Split a clip at a timecode

fcp_change_speed

Apply speed changes (slow-mo, fast-forward)

fcp_add_transition

Add cross-dissolve transitions between clips

All edit tools write to *_modified.fcpxml — originals are never touched.

Quality Control (4)

Tool

Description

fcp_detect_gaps

Find gaps (black frames) in the timeline

fcp_detect_flash_frames

Detect clips shorter than threshold

fcp_detect_duplicates

Find clips reusing the same source media

fcp_validate_timeline

Full health check with score (A-F grade)

Generation (2)

Tool

Description

fcp_generate_rough_cut

Generate a rough cut with pacing control

fcp_generate_montage

Generate a montage with accelerating/decelerating pacing curves

Export (2)

Tool

Description

fcp_export_edl

Export as CMX 3600 EDL

fcp_export_csv

Export clip data as CSV spreadsheet

FCP Live Control — AppleScript (6)

Requires Final Cut Pro to be running.

Tool

Description

fcp_app_status

Check if FCP is running, get version

fcp_list_libraries

List all open libraries

fcp_list_events

List events in a library

fcp_list_projects_live

List projects via AppleScript

fcp_get_project_info_live

Get project details by name

fcp_import_xml

Import FCPXML via open -a command

FCP GUI Automation — System Events (2)

Requires Accessibility permissions. Automates FCP menu interactions that are impossible via AppleScript (FCP's scripting API is read-only).

Tool

Description

fcp_export_xml_gui

Automate File > Export XML with path navigation

fcp_import_xml_gui

Import FCPXML and handle library selection dialog

Architecture

src/
├── index.ts                    MCP server entry point (stdio transport)
├── engine/
│   ├── models.ts               1,055 lines — Full FCPXML v1.14 type system
│   ├── fcpxml-parser.ts        1,443 lines — XML → TypeScript parser
│   ├── fcpxml-writer.ts          939 lines — TypeScript → FCPXML writer
│   ├── fcpxml-validator.ts       146 lines — DTD validation via xmllint
│   └── time.ts                   245 lines — Rational time & SMPTE arithmetic
└── tools/
    ├── shared.ts                  24 lines — ToolDefinition, ok(), err()
    ├── analyze.ts                423 lines — Timeline analysis
    ├── markers.ts                515 lines — Marker CRUD
    ├── edit.ts                   748 lines — Clip editing
    ├── qc.ts                     579 lines — Quality control
    ├── generate.ts               498 lines — Timeline generation
    ├── export.ts                 261 lines — EDL/CSV export
    ├── fcp-control.ts            499 lines — AppleScript bridge
    └── fcp-gui.ts                383 lines — System Events GUI automation

Data Flow

                          ┌─────────────┐
Claude/AI ──MCP stdio──▶  │  fcp-mcp    │
                          │  server     │
                          └──────┬──────┘
                     ┌───────────┼───────────┐
                     ▼           ▼           ▼
               ┌──────────┐ ┌──────────┐ ┌──────────────┐
               │  Engine   │ │  Engine   │ │  System      │
               │  Parser   │ │  Writer   │ │  Events      │
               └────┬─────┘ └────┬─────┘ └──────┬───────┘
                    ▼            ▼               ▼
               .fcpxml       .fcpxml       Final Cut Pro
               (read)        (write)       (GUI control)
  • FCPXML tools (analyze, edit, QC, generate, export, markers) read/write .fcpxml files directly — FCP does not need to be running

  • Live control tools query FCP via AppleScript — FCP must be running

  • GUI automation tools control FCP menus via System Events — FCP must be running + Accessibility permissions

FCPXML Format

This server works with FCPXML v1.14, Apple's XML interchange format for Final Cut Pro. Key concepts:

  • .fcpxml — Single XML file containing timeline data

  • .fcpxmld — Bundle (directory) containing Info.fcpxml inside

  • Resources — Assets (media files), formats (resolution/fps), effects

  • Spine — The primary storyline containing clips in sequence

  • Rational Time — Time as fractions (e.g., 3600/2400s = 1.5 seconds at 24fps)

The server handles both .fcpxml and .fcpxmld transparently.

Permissions Setup (GUI Automation)

For fcp_export_xml_gui and fcp_import_xml_gui to work:

  1. Open System Preferences > Privacy & Security > Accessibility

  2. Add your terminal app (Terminal.app, iTerm2, etc.)

  3. If using through Claude Code/Desktop, also add the app running the MCP server

Verify with:

osascript -e '
tell application "System Events"
    tell process "Final Cut Pro"
        return name of every menu of menu bar 1
    end tell
end tell'

Expected output: the list of Final Cut Pro menu names (localized to your macOS language).

Development

npm test              # vitest
npm run dev           # start the server with tsx
npm run build         # compile to dist/
npx tsc --noEmit      # type check only

DTD validation uses the FCPXMLv1_14.dtd that ships inside Final Cut Pro (see dtd/README.md). On a machine without Final Cut Pro, validator tests fail unless you place the DTD in dtd/.

FAQ

Does Final Cut Pro need to be running? Only for the live-control and GUI tools. Analysis, editing, QC, generation and export work on .fcpxml / .fcpxmld files directly.

Will it overwrite my project? No. Edit tools always write *_modified.fcpxml next to the original.

Which FCPXML version? v1.14. Both single files and .fcpxmld bundles are supported.

License

MIT © Kyoungsoo Kim — see LICENSE. Final Cut Pro is a trademark of Apple Inc.; this project is not affiliated with Apple.

Related MCP Connectors

Related MCP Servers