Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HF_HOMENoWhere the speech model is stored.~/.cache/huggingface
EDIT_TWIN_DIRNoWorking folder used by Edit Twin.~/Movies/Edit Twin
EDIT_TWIN_DTD_DIRNoFolder with Apple's FCPXMLv1_*.dtd files, if Final Cut Pro isn't in /Applications.inside Final Cut Pro
EDIT_TWIN_WHISPER_MODELNoA different Whisper model (e.g. a smaller one for older Macs).mlx-community/whisper-large-v3-turbo on Apple Silicon, large-v3-turbo for faster-whisper on Intel

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

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

Tools

Functions exposed to the LLM to take actions

NameDescription
fcp_statusA

Is Final Cut Pro installed/running, its version, and whether it is frontmost.

fcp_launchA

Open Final Cut Pro (or bring it to the front).

fcp_library_overviewB

List open libraries, their events and projects (read from Final Cut Pro).

fcp_export_projectB

Export the project currently open in Final Cut Pro's timeline as FCPXML (drives File > Export XML…), then open it for editing. The user should have the project open in the timeline first.

fcp_import_xmlC

Import an .fcpxml / .fcpxmld into Final Cut Pro (File > Import > XML).

fcp_menuA

Click a Final Cut Pro menu item, e.g. ["Modify", "Balance Color"] or ["File", "Share", "Master File (default)…"]. With a single entry (["Modify"]) it lists that menu's items instead of clicking.

fcp_shortcutB

Press a Final Cut Pro shortcut in the app. Either a named action (play_pause, blade, blade_all, add_marker, undo, redo, next_edit, previous_edit, select_clip_under_playhead, set_range_start, set_range_end, trim_start_to_playhead, trim_end_to_playhead, zoom_to_fit, render_all, detach_audio, add_default_transition, connect_title_basic, focus_timeline, ...) or a raw key + modifiers (command/option/control/shift). Acts on whatever is selected in FCP.

fcp_go_toB

Move Final Cut Pro's playhead to a time (seconds or timecode) in the open project.

fcp_screenshotB

Screenshot of the screen, to see what Final Cut Pro is showing.

find_fcpxml_filesB

Find recent FCPXML exports (.fcpxml/.fcpxmld) in the working folder, Movies, Desktop, Downloads and Documents (or a given folder).

open_timelineA

Load an exported FCPXML file or .fcpxmld bundle for editing. If the file holds several projects, pick one by name. Returns a summary and the clip list.

get_timelineA

Clips in the primary storyline with refs, times, source media, effects, volume and their connected items (B-roll, titles, audio). Optionally only those overlapping start..end seconds.

list_markersB

All markers (standard, to-do, chapter) with their times.

probe_mediaC

Media file info: duration, resolution, frame rate, audio, timecode.

cut_rangesA

Ripple-delete time ranges from the primary storyline, e.g. [[12.5, 15], [40, 41.2]]. Later clips slide left. connected="keep" re-attaches B-roll/titles anchored inside a removed range at the cut point; "delete" removes them like FCP does.

keep_rangesB

Keep only these time ranges (in order) and remove everything else — handy for building a short/teaser from a longer edit.

split_clipC

Blade the primary storyline at a time (seconds or timecode).

delete_clipA

Delete a clip by ref ("3" or connected "3.0"). ripple=True closes the gap; ripple=False leaves a gap so timing is unchanged.

trim_clipA

Shorten a clip: remove trim_start seconds from its beginning and trim_end from its end (ripples the storyline).

move_clipC

Reorder the primary storyline: move clip at index to position to_index.

add_markerC

Add a marker. kind="chapter" makes YouTube-style chapter markers; "todo" a to-do.

remove_markersC

Remove markers, optionally only those whose name contains text or of one kind.

add_titleC

Connect a Basic Title above the storyline. color is hex (#ff6fb5) or a name. y_offset moves it vertically in pixels from centre (e.g. -380 for a lower third).

edit_titleB

Change an existing title's text, colour or size (ref like "2.0").

set_volumeC

Set a clip's volume in dB (0 = unchanged, -6 = quieter, -20 = background music).

enable_clipB

Enable or disable (mute/hide) a clip without deleting it.

copy_effectsB

Copy video/audio effects from one clip to others, e.g. a colour grade or LUT. to_refs=["all"] applies to every clip in the storyline. name_contains limits which effects are copied. Only effects already used in this project can be copied.

remove_effectsB

Remove effects from a clip (all, or those whose name contains text).

insert_mediaA

Add a media file to the timeline. mode="connect" puts it above (video, lane 1) or below (audio, lane -1) the storyline at time — B-roll or music; "insert" splits the storyline and pushes later clips right; "append" adds to the end. source_in/duration pick the part of the file. role e.g. "music" for audio.

find_silencesA

Dry run for remove_silences: list pauses in the storyline clips' audio. Nothing is changed. Settings default to the user's saved style (get_style), which is calibrated from their own hand trims; pass values only to override. threshold_db: how quiet counts as a pause (-30 catches breaths, -40 only near-silence); min_silence: shortest pause to cut; keep_after_speech / keep_before_speech: air left after a word / before the next.

remove_silencesA

Jump-cut edit: ripple-delete pauses from the storyline clips, using the user's saved style unless overridden (see find_silences). Connected B-roll, titles, music and the adjustment clip are kept. Run find_silences first to show the user what will go.

transcribeA

Transcribe what's said in the storyline (local Whisper, word timestamps), with times on the CURRENT timeline (they update after cuts). Use it to find repeated takes, flubs and filler. include_words=True adds per-word times for precise cuts — best with start/end to limit the window. vocabulary: names/jargon to help spelling (e.g. product names, places, people). First run per file takes a while and may download the model; later calls are instant.

find_repeatsA

Find stutters ("to new to new tech"), retakes (a phrase or sentence started again) and filler sounds (um/uh) in the transcript. Each result proposes removing the FIRST take and keeping the later one; times are on the current timeline, ready for cut_ranges. Nothing is changed. Review them: when the first take is clearly better, keep it instead.

normalize_audioA

Set dialogue gain so the loudest peak of the edit sits at target_peak_db (default −2 dB). One shared gain by default so takes stay balanced; per_clip=True levels each clip separately. Measures only the parts used in the edit. Music/connected audio is left alone unless listed in refs.

fit_to_timelineA

Stretch/shrink a connected item — e.g. the Adjustment Clip carrying a look like your colour preset, or a watermark title — so it starts at 0 and covers the whole edit. Identify it by ref ("0.1") or by part of its name or effect name. Run after cuts.

get_styleA

The user's saved editing style: pause-cut tightness, audio chain, default look, saved looks and notes learned from their edits. Read this before a rough cut.

update_styleB

Change saved style defaults, e.g. when the user says cuts feel too tight (raise keep_after_speech) or too loose (lower min_silence). add_note stores a preference in words (e.g. "keep 'So' at the start of the hook").

save_lookA

Save the effects on an adjustment clip in the open timeline (e.g. the one you made with your colour preset) as a reusable look, so future rough cuts can add it automatically with apply_look — no more Option-A by hand. ref defaults to the only adjustment clip.

apply_lookA

Add an adjustment clip with a saved look (default: the style's default look) over the whole timeline. Replaces an existing empty/same-named adjustment clip. Run after cutting (or run fit_to_timeline after later cuts).

save_audio_styleB

Save a clip's audio chain (volume, Loudness / Noise Removal / EQ enhancements, audio effects) as the user's default dialogue sound, from a clip they set up by hand.

apply_audio_styleA

Apply the saved dialogue sound (see save_audio_style) to every dialogue clip in the storyline, or to the given refs. Use instead of normalize_audio when a style is saved.

measure_loudnessA

Measure the edit's dialogue loudness (integrated LUFS, true peak) from the storyline clips with their clip volume applied. Final Cut's Loudness enhancement isn't simulated, so treat it as the level BEFORE that effect. Reels usually sit around -14 LUFS.

learn_from_editA

Compare Claude's rough cut with the user's hand-finished version and learn their style. your_version: their exported .fcpxml/.fcpxmld (default: export the project open in Final Cut now). claude_version: what Claude sent (default: the last one sent for that project). Reports what they removed or restored (with the words), how tight they trim pauses, their audio chain and adjustment-clip look, and pause settings calibrated to match them. save=True stores the pause settings, audio chain and look (named look_name, e.g. the preset they used, e.g. "warm_vlog") as their defaults.

undoB

Undo the last timeline edit.

redoA

Redo the last undone timeline edit.

validate_timelineA

Check the edited timeline: references, gaps/overlaps, frame alignment, and Apple's FCPXML DTD (when Final Cut Pro is installed).

preview_frameA

Image of the storyline's main clip at a time (ignores titles/effects/B-roll), for checking what's on screen at a cut.

render_previewA

Render a quick low-res MP4 of the primary storyline (straight cuts, no effects, titles or connected clips) so the user can review an edit before importing. Optional start/end seconds render only part of it.

save_timelineA

Save the edited timeline to a new .fcpxml (or .fcpxmld) without importing it. The project is renamed (default: " (Claude edit)") so it won't clash.

send_to_final_cutB

Save the edited timeline as a new project and import it into Final Cut Pro. The original project is untouched; the new one appears in the same event.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.1/5.0

Scored across 50 tools

Disambiguation4/5

Most tools target clearly distinct resources or workflow stages: app control, FCPXML import/export, timeline surgery, audio, transcription, and style learning are well separated. The main ambiguity comes from broad escape hatches like fcp_menu and fcp_shortcut overlapping dedicated tools such as undo/redo, split_clip, trim_clip, and add_default_transition, though descriptions mostly clarify when to use which.

Naming Consistency4/5

Nearly all names are snake_case and follow a predictable verb_noun pattern (open_timeline, cut_ranges, trim_clip, save_look), with fcp_ used consistently for direct Final Cut Pro app control. Minor deviations exist in noun-only fcp_ names (fcp_status, fcp_menu, fcp_shortcut) and plain undo/redo, but nothing confusing.

Tool Count2/5

Fifty tools is heavy for a single MCP surface, even for a rich Final Cut Pro editing assistant. The tools are generally meaningful within subdomains, but the sheer count raises selection and context burden well beyond a practical focused toolset.

Completeness4/5

The server covers a full rough-cut editing lifecycle: inspecting FCP, importing/exporting FCPXML, analyzing timelines, cutting/trimming/moving clips, markers, titles, effects, audio, transcription, repeat detection, validation, preview, rendering, and sending back to Final Cut. Gaps are minor and mostly higher-end NLE features such as direct project/event creation, multicam, or fine-grained effect application, which can often be reached via fcp_menu or fcp_shortcut.

Maintenance

ActivityMaintained
ResponsivenessNo issues