FCPXML MCP — Agent Skill
SkillAI & modelsMCP server for Final Cut Pro XML. Lets Claude read, edit and generate real timelines: cut detection, markers, roles, transcript-based editing. Published on PyPI as fcp-mcp-server.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the FCPXML MCP — Agent Skill skill
What this skill tells your AI
The instructions your AI receives, as published by daredev256/fcp-mcp-server in SKILL.md and read by ahel’s review.
Use when working with Final Cut Pro XML files (.fcpxml) — timeline analysis, quality control, batch editing, rough cut generation, marker management, cross-NLE export, and multi-track workflows.
TRIGGER when: user mentions FCPXML, Final Cut Pro, FCP, timeline analysis, video editing XML, markers, rough cuts, or any post-production workflow involving XML files.
Tool Categories
Read & Analyze (non-destructive)
| Tool | Use when... |
|---|---|
list_projects | Finding FCPXML files in a directory (default: ~/Movies) |
analyze_timeline | Getting stats — duration, resolution, clip count, frame rate, pacing metrics |
analyze_pacing | Evaluating edit rhythm — cuts/min, pacing curve, suggestions |
list_clips | Listing all clips with timecodes, durations, metadata |
list_markers | Extracting markers (chapter, todo, standard). Use format: "youtube" for YouTube chapters |
list_keywords | Showing keyword tags applied to clips |
list_library_clips | Showing source clips available in the library (for rough cut planning) |
list_connected_clips | Showing clips on connected lanes (B-roll, titles, SFX) |
list_compound_clips | Showing compound clip structure |
list_roles | Showing audio/video role assignments |
list_effects | Showing applied effects and filters |
list_templates | Showing available timeline templates |
QC & Detection (non-destructive)
| Tool | Use when... |
|---|---|
validate_timeline | Getting a 0-100 health score with issue breakdown |
detect_flash_frames | Finding ultra-short clips (accidental 1-2 frame cuts) |
detect_gaps | Finding unintentional gaps in the timeline |
detect_duplicates | Finding repeated source clips |
detect_silence_candidates | Finding dead air / silence regions |
diff_timelines | Comparing two versions of a timeline (added/removed/moved/trimmed) |
Edit & Fix (creates _modified output files, never overwrites originals)
| Tool | Use when... |
|---|---|
add_marker | Adding a single marker (chapter, todo, standard) at a timecode |
batch_add_markers | Adding multiple markers at once (chapter lists, beat markers) |
trim_clip | Adjusting in/out points of a clip |
split_clip | Splitting a clip at a specific timecode |
delete_clips | Removing clips by index or name |
insert_clip | Inserting a clip at a position in the timeline |
reorder_clips | Rearranging clip order |
add_transition | Adding cross-dissolve or other transitions between clips |
change_speed | Applying speed changes (slow-mo, fast-forward, reverse) |
add_connected_clip | Adding a clip to a connected lane (B-roll, titles) |
add_audio | Adding audio clips to the timeline |
create_compound_clip | Grouping clips into a compound clip |
flatten_compound_clip | Expanding a compound clip back to individual clips |
assign_role | Setting audio/video roles on clips |
apply_template | Applying a timeline template |
Auto-Fix (batch operations)
| Tool | Use when... |
|---|---|
fix_flash_frames | Automatically extending adjacent clips to cover flash frames |
rapid_trim | Quick batch trim operations |
fill_gaps | Closing gaps by extending adjacent clips |
remove_silence_candidates | Removing or marking detected silence regions |
Generate (creates new FCPXML files)
| Tool | Use when... |
|---|---|
auto_rough_cut | Building a rough cut from library clips with keyword filters and target duration |
generate_montage | Creating a montage from tagged clips with pacing control |
generate_ab_roll | Creating documentary-style A/B roll edits |
Music & Markers
| Tool | Use when... |
|---|---|
import_beat_markers | Importing beat timestamps from JSON for music-synced editing |
snap_to_beats | Snapping all cuts to the nearest beat marker |
import_srt_markers | Importing markers from SRT/VTT subtitle files |
import_transcript_markers | Importing markers from transcript text |
Export & Reformat
| Tool | Use when... |
|---|---|
export_edl | Exporting an EDL (Edit Decision List) |
export_csv | Exporting timeline data as CSV |
export_resolve_xml | Exporting FCPXML v1.9 for DaVinci Resolve |
export_fcp7_xml | Exporting FCP7 XMEML v5 for Premiere / legacy NLEs |
export_role_stems | Exporting separate XMLs per audio role (dialogue, music, SFX) |
filter_by_role | Filtering timeline to only show clips with a specific role |
reformat_timeline | Changing format — presets: 9:16, 1:1, 4:5, 4:3, 16:9, or custom |
Workflow Chains
When the user describes a high-level intent, chain tools in this order:
QC Pipeline
analyze_timeline → detect_flash_frames → detect_gaps → detect_duplicates → validate_timeline
Then offer fixes: fix_flash_frames → fill_gaps
YouTube Chapter Export
list_markers (format: "youtube") → format output for copy-paste
If no chapters exist: analyze_pacing → suggest chapter points → batch_add_markers
Rough Cut Assembly
list_library_clips → list_keywords → discuss structure → auto_rough_cut or generate_montage
Beat-Synced Music Video
import_beat_markers → auto_rough_cut or generate_montage → snap_to_beats
Cross-NLE Handoff
export_resolve_xml (for Resolve) + export_fcp7_xml (for Premiere/Pro Tools)
Silence Cleanup
detect_silence_candidates → review results → remove_silence_candidates
Timeline Comparison
diff_timelines → summarize changes for revision log
Social Reformat
reformat_timeline with preset → note that framing adjustments still needed in FCP
Key Rules
- Never overwrite originals. All write operations create
_modified,_chapters, etc. suffixed files. - Times are rational fractions. FCPXML uses
"600/2400s"format — never convert to floats. - Always analyze before fixing. Run detection tools first, show the user what was found, then offer batch fixes.
- Connected clips use lanes. Positive lane = above primary storyline (video/titles), negative = below (audio).
- Compound clips can be nested. Use
list_compound_clipsto understand structure before flattening. - Export formats differ. Resolve XML flattens compounds. FCP7 XML converts spine-based to track-based model.
Signals
- GitHub stars
- 104
- Forks
- 19
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
fcp-mcp-server- Source
- github.com/daredev256/fcp-mcp-server