Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FCP_MCP_OUTPUT_DIRNoOverride output directory for modified FCPXMLs. If not set, files are written next to input with '_modified' suffix.

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
fcpxml_parseB

Parse an FCPXML file and return a structure summary.

Args: path: Path to .fcpxml file (absolute or relative to FCP_PROJECTS_DIR)

fcpxml_list_clipsA

List all clips in the timeline with timecodes, durations, and roles.

Args: path: Path to .fcpxml file project_name: Optional project name filter (uses first project if empty)

fcpxml_list_markersC

List all markers, chapter markers, and keywords across all clips.

Args: path: Path to .fcpxml file

fcpxml_analyze_pacingA

Analyze shot pacing — average/median shot length, distribution histogram.

Args: path: Path to .fcpxml file

fcpxml_detect_gapsB

Find all gaps in the timeline.

Args: path: Path to .fcpxml file

fcpxml_detect_flash_framesA

Find clips shorter than max_frames (potential flash frames / accidental edits).

Args: path: Path to .fcpxml file max_frames: Maximum frame count to flag (default 2)

fcpxml_detect_duplicatesC

Find clips that use the same source media.

Args: path: Path to .fcpxml file

fcpxml_validateC

Validate FCPXML structure and report errors/warnings.

Args: path: Path to .fcpxml file

fcpxml_list_effectsB

List all effects and transitions applied to clips.

Args: path: Path to .fcpxml file

fcpxml_list_rolesB

List all roles and subroles used in the timeline.

Args: path: Path to .fcpxml file

fcpxml_timeline_statsB

Get comprehensive timeline statistics — duration, clip count, resolution, pacing, etc.

Args: path: Path to .fcpxml file

fcpxml_diffB

Compare two FCPXML files and show differences.

Args: path_a: Path to first .fcpxml file path_b: Path to second .fcpxml file

fcpxml_add_markerA

Add a marker to a clip.

Args: path: Path to .fcpxml file clip_name: Name of the clip to add the marker to start: Marker position in FCPXML time (e.g., "60060/30000s") value: Marker title/value note: Optional marker note marker_type: "standard" or "chapter" output_path: Output file path (default: adds _modified suffix)

fcpxml_batch_add_markersA

Add multiple markers at once.

Args: path: Path to .fcpxml file markers_json: JSON array of markers, each: {"clip_name": str, "start": str, "value": str, "note"?: str, "type"?: str} output_path: Output file path (default: adds _modified suffix)

fcpxml_add_keywordC

Add a keyword to a clip.

Args: path: Path to .fcpxml file clip_name: Name of the clip value: Keyword text start: Start time in FCPXML format duration: Duration of keyword range (optional) output_path: Output file path

fcpxml_trim_clipC

Trim a clip's source in/out points.

Args: path: Path to .fcpxml file clip_name: Name of the clip to trim new_start: New source start time (optional) new_duration: New duration (optional) output_path: Output file path

fcpxml_split_clipA

Split a clip at a given offset within the clip.

Args: path: Path to .fcpxml file clip_name: Name of the clip to split split_at: Offset within the clip to split at (FCPXML time) output_path: Output file path

fcpxml_delete_clipsB

Remove clips from the timeline by name.

Args: path: Path to .fcpxml file clip_names_json: JSON array of clip names to delete output_path: Output file path

fcpxml_reorder_clipsB

Reorder clips in the primary spine to match the given name order.

Args: path: Path to .fcpxml file clip_names_json: JSON array of clip names in desired order output_path: Output file path

fcpxml_add_transitionB

Insert a transition after a clip.

Args: path: Path to .fcpxml file after_clip_name: Name of the clip to add transition after duration: Transition duration (default: 1 second at 29.97) name: Transition name output_path: Output file path

fcpxml_change_speedB

Change clip playback speed.

Args: path: Path to .fcpxml file clip_name: Name of the clip speed_factor: Speed multiplier (2.0 = 2x fast, 0.5 = half speed) output_path: Output file path

fcpxml_assign_roleC

Set the role on a clip (e.g., "Dialogue", "Video", "Music", "Effects").

Args: path: Path to .fcpxml file clip_name: Name of the clip role: Role name output_path: Output file path

fcpxml_add_titleB

Add a title clip to the timeline.

Args: path: Path to .fcpxml file text: Title text duration: Title duration in FCPXML time position: "start", "end", or clip name to insert after output_path: Output file path

fcpxml_add_audioA

Add an audio clip to the timeline.

Args: path: Path to .fcpxml file audio_src: Path to audio file name: Clip name (defaults to filename) duration: Duration in FCPXML time (defaults to asset duration) position: "start", "end", or clip name to insert after output_path: Output file path

fcpxml_create_projectB

Create a new empty FCPXML project file.

Args: name: Project name format_name: Video format (e.g., FFVideoFormat1080p2997, FFVideoFormat4Kp24) width: Frame width height: Frame height frame_duration: Frame duration in FCPXML time event_name: Event name output_path: Where to save (default: ~/Movies/.fcpxml)

fcpxml_create_timelineA

Build a timeline from a list of clip definitions.

Args: clips_json: JSON array of clips, each: {"src": "/path/to/file.mov", "name"?: str, "duration": "FCPXML_time", "start"?: str, "role"?: str} project_name: Project name format_name: Video format name event_name: Event name output_path: Where to save

fcpxml_auto_rough_cutA

Auto-assemble clips into a rough cut timeline.

Args: clips_json: JSON array of clips: [{"src": str, "name"?: str, "duration": str}, ...] target_duration: Target total duration (optional — uses all clips if empty) max_clip_duration: Maximum clip duration (trims longer clips) transition_duration: If set, adds transitions between clips project_name: Project name output_path: Where to save

fcpxml_generate_montageB

Generate a montage/highlight reel with uniform clip durations and transitions.

Args: clips_json: JSON array of clips: [{"src": str, "name"?: str, "duration": str}, ...] clip_duration: Duration for each clip in the montage transition_duration: Transition duration between clips project_name: Project name output_path: Where to save

fcpxml_import_srtB

Convert SRT subtitles to title clips and add to timeline.

Args: path: Path to .fcpxml file to add subtitles to srt_path: Path to .srt subtitle file output_path: Output file path

fcpxml_import_edlB

Convert an EDL (Edit Decision List) to FCPXML.

Args: edl_path: Path to .edl file media_dir: Directory containing media files (for resolving reel names) project_name: Project name output_path: Where to save

fcpxml_reformatB

Reformat a timeline for a different aspect ratio (e.g., 16:9 → 9:16 for vertical).

Args: path: Path to .fcpxml file target_width: Target width target_height: Target height target_format_name: Target format name output_path: Output file path

fcpxml_fix_flash_framesA

Auto-fix flash frames by extending very short clips to minimum duration.

Args: path: Path to .fcpxml file min_frames: Minimum frame count (clips shorter than this get extended) frame_duration: Frame duration for calculating frame count output_path: Output file path

fcpxml_fill_gapsB

Replace all gaps in the timeline with clips from a specified asset.

Args: path: Path to .fcpxml file fill_asset_ref: Asset resource ID to use as fill (e.g., "r3") fill_name: Name for the fill clips output_path: Output file path

fcpxml_remove_silenceC

Remove gaps longer than the threshold from the timeline.

Args: path: Path to .fcpxml file silence_threshold_seconds: Minimum gap duration to remove (seconds) output_path: Output file path

fcpxml_batch_rename_clipsB

Rename clips matching a pattern (substring replacement).

Args: path: Path to .fcpxml file pattern: Text to find in clip names replacement: Text to replace with output_path: Output file path

fcpxml_batch_assign_rolesC

Assign roles to clips based on name matching rules.

Args: path: Path to .fcpxml file rules_json: JSON array of rules: [{"match": "interview", "role": "Dialogue"}, ...] output_path: Output file path

fcpxml_batch_apply_transitionB

Add transitions between all adjacent clips in the timeline.

Args: path: Path to .fcpxml file duration: Transition duration name: Transition name output_path: Output file path

fcpxml_qc_reportA

Generate a comprehensive quality check report for the timeline.

Checks: validation, gaps, flash frames, duplicates, pacing.

Args: path: Path to .fcpxml file

fcpxml_check_media_linksB

Verify all referenced media files exist on disk.

Args: path: Path to .fcpxml file

fcpxml_check_frame_ratesC

Detect mixed frame rate issues in the timeline.

Args: path: Path to .fcpxml file

fcpxml_check_audio_levelsB

Flag clips with potential audio issues (volume adjustments, missing audio).

Args: path: Path to .fcpxml file

fcpxml_check_safe_zonesA

Check for clips with transforms that might push content outside safe zones.

Args: path: Path to .fcpxml file

fcpxml_check_durationB

Verify the timeline fits a target duration.

Args: path: Path to .fcpxml file target_seconds: Target duration in seconds

fcp_list_motion_templatesA

List installed Motion templates (titles, transitions, generators, effects).

fcp_list_share_destinationsB

List configured FCP share destinations.

fcp_discover_effectsA

List available FCP effects and transitions by scanning known locations.

fcpxml_list_templatesA

List available FCPXML template files.

Args: templates_dir: Directory to search (default: FCP_PROJECTS_DIR)

fcpxml_apply_templateA

Apply an FCPXML template to a set of clips.

Replaces placeholder clips in the template with provided clips.

Args: template_path: Path to template .fcpxml file clips_json: JSON array of clips to insert project_name: New project name output_path: Where to save

fcpxml_save_templateA

Save the current FCPXML structure as a reusable template.

Args: path: Path to .fcpxml file to use as template template_name: Name for the template output_dir: Directory to save template (default: FCP_PROJECTS_DIR)

fcp_is_runningA

Check if Final Cut Pro is currently running.

fcp_get_librariesA

Get all open libraries in Final Cut Pro (requires FCP to be running).

fcp_get_eventsA

Get events in a library (or all libraries if name not specified).

Args: library_name: Library name to filter (optional)

fcp_get_projectsA

Get projects in an event (or all events if name not specified).

Args: event_name: Event name to filter (optional)

fcp_get_timeline_infoA

Get info about the current/first timeline in FCP.

fcp_get_app_stateA

Get FCP application state — version, frontmost status.

fcp_open_libraryC

Open a FCP library file.

Args: library_path: Path to .fcpbundle file

fcp_import_xmlB

Import an FCPXML file into Final Cut Pro.

Args: fcpxml_path: Path to .fcpxml file

fcp_export_xmlB

Trigger XML export in FCP via menu automation (requires Accessibility permissions).

fcp_playbackB

Control FCP playback.

Args: action: "play", "pause", "stop", or "toggle" (space bar)

fcp_navigateA

Navigate to a specific timecode in FCP.

Args: timecode: Timecode to navigate to (e.g., "00:01:30:00"). Opens timecode entry if provided.

fcp_select_toolB

Switch FCP editing tool.

Args: tool: "select" (A), "trim" (T), "position" (P), "range" (R), "blade" (B), "zoom" (Z), "hand" (H)

fcp_undoA

Undo the last action in FCP.

fcp_redoA

Redo the last undone action in FCP.

fcp_menu_commandA

Execute any FCP menu command by path.

Args: menu_path: Menu path like "File > Export XML..." or "Edit > Select All"

fcp_keyboard_shortcutA

Send a keyboard shortcut to FCP.

Args: keys: Shortcut description like "cmd+c", "cmd+shift+e", "option+w"

fcp_shareC

Trigger a share/export from FCP.

Args: destination: Share destination name (opens default if empty)

compressor_encodeB

Encode a file using Compressor CLI.

Args: input_path: Path to input media file setting_path: Path to Compressor preset (.cmprstng) output_dir: Output directory batch_name: Batch name for Compressor

compressor_list_settingsA

List available Compressor encoding presets.

fcpxml_export_resolveA

Convert FCPXML to DaVinci Resolve-compatible format (FCPXML v1.9).

Args: path: Path to .fcpxml file output_path: Output file path

fcpxml_export_fcp7A

Convert FCPXML to FCP7 XML format (compatible with Premiere Pro and Avid).

Args: path: Path to .fcpxml file output_path: Output file path

fcpxml_export_edlB

Export timeline as EDL (Edit Decision List).

Args: path: Path to .fcpxml file output_path: Output .edl file path

media_infoA

Get detailed media file info (codec, resolution, duration, bitrate, etc.).

Args: path: Path to media file

media_detect_silenceB

Detect silent sections in audio/video files.

Args: path: Path to media file noise_threshold: Noise floor threshold (e.g., "-30dB", "-40dB") min_duration: Minimum silence duration in seconds

media_detect_beatsB

Detect beat positions in audio/music files.

Returns beat timestamps that can be used for music-synced editing.

Args: path: Path to audio/video file

media_loudnessA

Analyze audio loudness (EBU R128 / LUFS).

Returns integrated loudness, loudness range, and true peak.

Args: path: Path to audio/video file

media_extract_thumbnailB

Extract a frame thumbnail from video at a specific time.

Args: path: Path to video file time: Time in seconds to extract frame from output_path: Where to save thumbnail (default: auto-generated) width: Thumbnail width in pixels

media_extract_thumbnailsB

Extract thumbnails at regular intervals (contact sheet / storyboard).

Args: path: Path to video file interval: Seconds between thumbnails output_dir: Directory to save thumbnails width: Thumbnail width in pixels

media_list_streamsB

List all audio, video, and subtitle streams in a media file.

Args: path: Path to media file

media_scene_detectA

Detect scene changes in video.

Useful for automatic clip segmentation.

Args: path: Path to video file threshold: Scene change sensitivity (0.0-1.0, lower = more sensitive)

media_extract_audioA

Extract audio track from a video file.

Useful for feeding video audio into transcription, analysis, or the sheet-music-maker pipeline (basic-pitch → MIDI → notation).

Args: path: Path to video file output_path: Where to save audio (default: same dir, .wav extension) format: Audio format: wav, mp3, flac (default: wav)

media_audio_to_midiA

Transcribe audio to MIDI using basic-pitch (ML audio transcription).

Converts audio (from video or standalone) into MIDI note data. Returns the MIDI file path and a summary of detected notes.

Requires basic-pitch: pip install basic-pitch

Args: path: Path to audio file (wav, mp3, flac) or video file output_path: Where to save MIDI (default: same dir, .mid extension)

puppet_create_rigA

Define a puppet character rig from body parts.

Each part is a separate image (PNG) that gets positioned and layered to form a character. Parts can be animated independently.

Args: rig_json: JSON object defining the character: { "name": "my_character", "position": [0, 0], "parts": [ { "name": "head", "image": "/absolute/path/to/head.png", "position": [0, 200], "scale": 1.0, "rotation": 0, "anchor": [0, -50], "z_order": 5 }, ... ] } - position: [x, y] offset from character center (y-positive = up) - anchor: pivot point for rotation - z_order: higher = in front

Returns: JSON summary of the rig (use this to verify before building a scene).

puppet_create_humanoid_rigA

Create a standard 6-part humanoid rig from a folder of images.

Expects PNG files named: head.png, body.png, left_arm.png, right_arm.png, left_leg.png, right_leg.png in the image directory.

Parts are auto-positioned for a standard humanoid layout on a 1080p frame.

Args: name: Character name image_dir: Absolute path to folder containing part images position_x: X position on screen (0 = center) position_y: Y position on screen (0 = center) scale: Overall scale multiplier

puppet_build_sceneA

Build an FCPXML timeline from one or more puppet rigs.

Each rig's parts become layered connected clips with transforms applied. Import the resulting .fcpxml into FCP to see the assembled characters.

Args: rigs_json: JSON array of rig definitions (same format as puppet_create_rig). Each rig: {"name": str, "position": [x, y], "parts": [...]} duration: Scene duration in FCPXML time (default 10 seconds at 29.97fps) project_name: Project name output_path: Where to save (default: ~/Movies/<project_name>.fcpxml)

puppet_animateA

Build a puppet scene with custom keyframe animations.

Args: rigs_json: JSON array of rig definitions animations_json: JSON array of animations: [ { "part": "head", "property": "position", "keyframes": [ {"time": "0s", "value": [0, 200], "interp": "smooth2"}, {"time": "150150/30000s", "value": [20, 210], "interp": "smooth2"}, {"time": "300300/30000s", "value": [0, 200], "interp": "smooth2"} ] }, { "part": "left_arm", "property": "rotation", "keyframes": [ {"time": "0s", "value": 0}, {"time": "150150/30000s", "value": 45}, {"time": "300300/30000s", "value": 0} ] } ] property: "position" (value=[x,y]), "rotation" (value=degrees), "scale" (value=[sx,sy]) interp: "smooth2" (default, ease), "linear", "hold" duration: Scene duration project_name: Project name output_path: Where to save

puppet_preset_motionA

Build a puppet scene with a preset motion applied.

Available presets:

  • "idle": Subtle breathing/sway (keeps character alive)

  • "bounce": Vertical bouncing

  • "walk": Full walk cycle (arms, legs, body bob)

  • "talk": Mouth movement + head bob

  • "wave": Arm waving (applies to left_arm)

Args: rig_json: JSON rig definition preset: Motion preset name duration: Scene duration project_name: Project name output_path: Where to save cycles: Number of motion cycles (more = faster movement) intensity: Scale factor for motion amplitude (0.5 = subtle, 2.0 = exaggerated)

puppet_multi_sceneA

Build a multi-scene puppet animation with different presets per scene.

Generates one FCPXML per scene. Useful for storyboarding a sequence.

Args: rigs_json: JSON array of rig definitions (shared across scenes) scenes_json: JSON array of scene definitions: [ {"name": "intro", "duration": "300300/30000s", "preset": "idle"}, {"name": "greeting", "duration": "150150/30000s", "preset": "wave"}, {"name": "walking", "duration": "600600/30000s", "preset": "walk", "cycles": 4} ] project_name: Base project name (scenes get suffixed) output_path: Output directory (default: ~/Movies/)

puppet_list_presetsA

List all available puppet animation presets with descriptions.

Returns details on each preset, what body parts it uses, and what parameters it accepts.

Prompts

Interactive templates invoked by user choice

NameDescription
qc-checkRun a full QC sweep on an FCPXML timeline and interpret the results.
rough-cutAssemble a rough cut from a list of clips, optionally target a duration.
cleanupHeal flash frames and gaps in an existing FCPXML, then re-QC.
youtube-chaptersExtract FCPXML markers and emit a YouTube chapter timestamp blob.
beat-syncDetect beats in an audio file and cut clips to land on them.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dreliq9/fcp-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server