fcp-mcp
Parses, edits, quality-checks and generates Final Cut Pro timelines in Apple's FCPXML v1.14 interchange format (including DTD validation), and provides AppleScript-based live control of a running Final Cut Pro to list libraries, events and projects, get project info and import XML.
Uses macOS System Events / Accessibility GUI automation to drive Final Cut Pro's File menu, automating XML export (with path navigation) and XML import (including library-selection dialogs) that FCP's read-only AppleScript dictionary cannot handle.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
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 testsConnect to Claude Code
claude mcp add fcp-mcp -- node /path/to/fcp-mcp/dist/index.jsConnect 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: fcp-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 libraryWithout 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 |
| Scan a directory for |
| Resolution, FPS, duration, clip count, markers |
| All clips with timecodes, media paths, keywords |
| Cuts-per-minute with histogram visualization |
Markers & Keywords (4)
Tool | Description |
| List markers filtered by type (standard/chapter/todo) |
| Add a marker at SMPTE timecode or rational time |
| Add multiple markers in one operation |
| List keyword ranges applied to clips |
Editing (6)
Tool | Description |
| Change clip in-point and/or duration |
| Move a clip to a different position in timeline |
| Remove clips by index |
| Split a clip at a timecode |
| Apply speed changes (slow-mo, fast-forward) |
| Add cross-dissolve transitions between clips |
All edit tools write to *_modified.fcpxml — originals are never touched.
Quality Control (4)
Tool | Description |
| Find gaps (black frames) in the timeline |
| Detect clips shorter than threshold |
| Find clips reusing the same source media |
| Full health check with score (A-F grade) |
Generation (2)
Tool | Description |
| Generate a rough cut with pacing control |
| Generate a montage with accelerating/decelerating pacing curves |
Export (2)
Tool | Description |
| Export as CMX 3600 EDL |
| Export clip data as CSV spreadsheet |
FCP Live Control — AppleScript (6)
Requires Final Cut Pro to be running.
Tool | Description |
| Check if FCP is running, get version |
| List all open libraries |
| List events in a library |
| List projects via AppleScript |
| Get project details by name |
| Import FCPXML via |
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 |
| Automate File > Export XML with path navigation |
| 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 automationData 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
.fcpxmlfiles directly — FCP does not need to be runningLive 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) containingInfo.fcpxmlinsideResources — 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:
Open System Preferences > Privacy & Security > Accessibility
Add your terminal app (Terminal.app, iTerm2, etc.)
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 onlyDTD 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
The agentic video editor for ChatGPT and Claude. Ask in your chat and it cuts, captions, adds music, titles and motion graphics on a real timeline you can open and adjust.
AI video editor for agents and humans: timeline, captions, color, audio and generation as MCP tools.
Valmera — the world’s most advanced AI video editor. Edit recorded tutorials, podcasts, interviews and webinars through Claude, ChatGPT or another compatible MCP client. Cut footage, add captions, reframe, review a preview, revise specific sections and export MP4. Hosted editing with OAuth; an eligible paid Valmera plan is required.
Edit your own videos by chatting in Claude or ChatGPT: cut, caption, add music and export.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables Claude to read, edit, and generate real Final Cut Pro timelines from exported FCPXML, covering trimming, splitting, silence removal, markers, transcript-based editing, keyframes and speed ramps, cross-NLE export, and pushing edits into a running Final Cut Pro. Every write is journaled with its sha256 and reversible, and timelines can be rendered visually for review before delivery.-
- FlicenseNot gradedqualityAmaintenanceEnables Claude to read, edit, and generate real Final Cut Pro timelines through FCPXML, covering cut detection, markers, roles, transcript-based editing, rough cuts, keyframes, speed curves, cross-NLE export, and direct pushes into a running Final Cut Pro with journaled undo and validation.-
- FlicenseNot gradedqualityAmaintenanceEnables Claude to read, edit, and generate real Final Cut Pro timelines via FCPXML, including cut detection, markers, roles, transcript-based editing, keyframes, speed curves, cross-NLE export, and live pushes into a running Final Cut Pro.-
- FlicenseNot gradedqualityAmaintenanceEnables Claude to analyze, edit, and generate real Final Cut Pro XML timelines through natural-language tool calls, including cut detection, markers, roles, transcript-based editing, and rough cuts. It also supports journaled writes with undo, SHA-256 safeguards, cross-NLE export, and pushing projects into a running Final Cut Pro.-