fcp-mcp-server CLAUDE.md

fcp-mcp-server CLAUDE.md is an instructions file for coding agents from DareDev256/fcp-mcp-server. It costs 3,857 tokens per session, scanned A, original, MIT.

Repository instructions for an MCP server that reads and changes Final Cut Pro XML project files. Final Cut Pro XML stores video-editing timelines, clips, tracks, markers, and related project information.

In plain words
What is it for?
They help analyze timelines, batch-edit projects, manage media links, work with transcripts, create exports, and send changes to Final Cut Pro.
Why use it?
They explain how the server groups its tools and supports both XML files and live Final Cut Pro control. This helps an agent choose the right operation for inspecting, editing, checking, or exporting a timeline.

Instructions file

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add instructions/daredev256/fcp-mcp-server/claude-md
Clone the repo
git clone --depth 1 https://github.com/DareDev256/fcp-mcp-server

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for fcp-mcp-server CLAUDE.md

README.md
[![agentmods](https://agentmods.dev/badge/instructions/daredev256/fcp-mcp-server/claude-md.svg)](https://agentmods.dev/instructions/daredev256/fcp-mcp-server/claude-md)
Your own site
<a href="https://agentmods.dev/instructions/daredev256/fcp-mcp-server/claude-md"><img src="https://agentmods.dev/badge/instructions/daredev256/fcp-mcp-server/claude-md.svg" alt="Measured on agentmods" height="20"></a>
Per session 3,857 This file is loaded in full into every session.
When invoked 3,857 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.03857 $0.03857
Opus 5 $0.01929 $0.01929
Sonnet 5 $0.00771 $0.00771
Haiku 4.5 $0.00386 $0.00386

Measured today against content hash e446d6b224f8, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

fcp-mcp-server CLAUDE.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

CLAUDE.md · 176 lines

How it starts

The opening of the file, as written. The whole thing — 176 lines — stays where its author put it; the contents beside it link to each section on GitHub.

CLAUDE.md — fcp-mcp-server

What This Is

MCP server that reads/writes Final Cut Pro XML (FCPXML) files. 13 grouped tools (inspect, diagnose, edit, mark, generate, transcript, deliver, preview, watch, index, scenes, organize, find) are advertised by default, dispatching into 88 underlying operations for timeline analysis, batch editing, QC, generation, multi-track support, media relink, NLE export, transcript-based editing (local Whisper, or ElevenLabs Scribe opt-in for speakers), shot-boundary detection, bulk library organization with a journal-backed undo, tiered shot search (transcript → metadata → offline MLX captions), a review gate on deliver, and LIVE FCP control (push_to_fcp / list_fcp_libraries via Apple events). Set FCP_MCP_LEGACY_TOOLS=1 to also advertise the 63 flat tool schemas (76 advertised in total; the 25 operations born as group actions — preview, watch, index, scenes, organize, find, import_edl_json — have no flat schema). Reads FCPXML 1.8–1.14 (incl. .fcpxmld bundles with sidecar preservation), writes 1.13 by default. Dual-mode (XML + Live) direction: docs/CAPABILITY-AUDIT-2026-06.md.

Architecture

server.py           — MCP server entry point. 63 flat tool definitions, handlers, resources, prompts.
                      Dispatch dict pattern: TOOL_HANDLERS maps tool names → async handler functions.
TOOL_GROUPS         — 13 grouped verbs advertised by default. Dispatch into
                      TOOL_HANDLERS, which holds all 88 handlers. New groups are
                      defined in tools/ and merged in by _merge_extra_tools().
                      Hiding a tool from list_tools does NOT stop it dispatching.
fcpxml/journal.py   — Append-only operation ledger under ~/.fcp-mcp/journal/
                      (FCP_MCP_JOURNAL relocates; `off` disables). One ledger per
                      INPUT DIRECTORY — the project is the folder. Records hold
                      paths + sha256, never content. undo() moves outputs to
                      undone/ and refuses on hash mismatch; it never deletes.
                      _review_gate in server.py reads it: six deliver actions
                      refuse without a preview_render matching the current hash
                      (confirm_unreviewed=true overrides, and is stamped).
fcpxml/find.py      — PURE ranking over transcript words and metadata ranges;
                      every Hit names its tier and a why. tools/find.py is the
                      router: tier 3 (vision) only when asked, when the query
                      reads visual, or when tiers 1-2 fall short; at most
                      MAX_LIVE_FRAMES live captions per call. It never
                      transcribes — index, then sidecar, then "no transcript".
fcpxml/vlm.py       — Offline MLX captions ([find] extra, Apple Silicon only).
                      Captions a frame downscaled to CAPTION_SHORT_SIDE=1080 (short
                      edge, aspect kept): Qwen-VL tokenizes by pixel area, so 4K
                      costs ~4x the vision tokens for the same sentence. Only this
                      caller passes the cap — preview tools measure frames and must
                      keep full resolution.
                      HF_HUB_OFFLINE / TRANSFORMERS_OFFLINE are set BEFORE
                      mlx_vlm is imported; a missing model is reported with its
                      `hf download <id>` command and never fetched.
fcpxml/diversity.py — min_source_separation + Jaccard near-duplicate ceiling
                      for assemblies; score() is reported on every rough cut.
fcpxml/index.py     — SQLite cache at ~/.fcp-mcp/index.db (FCP_MCP_INDEX=off disables;
                      any other value is a path). A CACHE, never a source of truth:
                      the suite runs green with it off (CI job `index-off`). Rows
                      keyed to (path, mtime, size); a re-exported source drops its
                      rows on the next touch. Time stored as integer num/den.
fcpxml/progress.py  — MCP progress notifications per clip. Resolves the request
                      context on either SDK (1.x property, 2.x contextvar set by
                      mcp_compat) and mutes itself on the first send failure.
fcpxml/scenes.py    — Shot boundaries. PySceneDetect ([scenes] extra) when
                      installed, else ffmpeg's `select=gt(scene,T)`, which is
                      coarse: red->green scores 0.0 and is missed. Results cached.
fcpxml/transcript_pack.py — Every transcript on one page for planning a dialogue
                      edit; sizes in BYTES, 60KB chat cap, full file on write=true.
fcpxml/transcribe.py — backend="local" (faster-whisper, never leaves the machine)
                      or "elevenlabs" (Scribe upload, speakers + audio events,
                      ELEVENLABS_API_KEY in the xi-api-key header ONLY). A local
                      cache never satisfies a diarize request — is_diarized().
fcpxml/preview.py   — standalone HTML timeline render, served as preview://<path>.
                      Draws from the XML: shows what was WRITTEN. It cannot tell a
                      fixed cut from a broken one — use fcpxml/visual.py for that.
fcpxml/filtergraph.py — Timeline -> ffmpeg graph. PURE (no subprocess, no I/O), so
                      compilation is asserted exactly on machines without ffmpeg.
                      Fraction end to end; float seconds drift visibly at 23.976.
                      Spine Clip carries timeline position on .start; ConnectedClip
                      carries it on .offset and reuses .start for the source in-point.
                      Transitions compile onto the spine boundary they straddle
                      (xfade); one with no cut within its own duration, or with
                      media missing beside it, is REPORTED as a hard cut, never
                      moved. Video lanes composite as a full-frame overlay shifted
                      by any crossfade before them — transforms and opacity are
                      not read, and it says so rather than previewing a lie.
fcpxml/render.py    — Executes the graph. Probes the artifact's OWN duration back and
                      reports drift — a rendered file existing is not evidence.
fcpxml/visual.py    — Filmstrip + waveform from SOURCE MEDIA. The verification
                      instrument. showwavespic draws on a transparent background that
                      flattens to white, so the trace is composited over a dark plate.
fcpxml/watchfolder.py — Export detection. Digests CONTENT, not (mtime, size): two
                      exports of equal byte count in one timestamp tick are otherwise
                      indistinguishable from no export at all.
fcpxml/bridges.py   — SpliceKit :9876 / CommandPost :27480. DETECTION ONLY, loopback
                      only. Their RPC signatures are unverified; never call them.
fcpxml/edl.py       — video-use edl.json -> FCPXML. Schema is {sources, ranges, grade?}
                      and ranges[].source is a KEY into sources, NOT a path.
tools/              — New tool groups register here instead of growing server.py.
                      server.py binds itself via tools.bind_server(); group modules
                      must NEVER `import server` — in production it runs as __main__,
                      so that loads a SECOND copy with its own registry and sandbox.
                      Existing families migrate out of server.py a slice at a time:
                      tools/nle.py holds NLE export, effects, audio, compound clips,
                      templates and relink; tools/media.py holds silence/beat
                      detection and every transcript-driven edit. server.py
                      RE-EXPORTS them under their
                      original names, so TOOL_HANDLERS and every caller resolve one
                      definition. Moved handlers reach server-owned names through
                      srv = _common.tools.server_module() rather than importing them:
                      tests monkeypatch those on the server module, and an import
                      would bind a copy no patch can reach — the guard would keep
                      passing while guarding nothing.
skill/              — the final-cut-pro Claude Code skill wrapping this server

fcpxml/parser.py    — Reads FCPXML → Python objects (Timeline, Clip, ConnectedClip, Marker, etc.)
                      Parses spine, connected clips (lanes), secondary storylines, gap-attached clips, roles.
fcpxml/writer.py    — Writes modifications back to FCPXML. Handles markers, trimming, gaps, transitions,
                      connected clips, roles, reformatting, silence detection/removal.
fcpxml/rough_cut.py — Generates new timelines from source clips (rough cuts, montages, A/B rolls).
fcpxml/diff.py      — Timeline comparison engine. Detects added/removed/moved/trimmed clips & markers.
fcpxml/export.py    — DaVinci Resolve FCPXML v1.9 export + FCP7 XMEML v5 export for cross-NLE workflows.
fcpxml/models.py    — Data classes: TimeValue, Timecode, Clip, ConnectedClip, CompoundClip, Timeline, etc.
fcpxml/media_intel.py — Real media analysis (v0.10). Audio silence detection + beat detection (librosa, optional
                      [intelligence] extra, lazy import). Silence via bounded ffmpeg
                      subprocess (silencedetect), source→timeline mapping; removal composes
                      writer.cut_clip_ranges (element-based — immune to duplicate-name ambiguity). No new Python deps;
                      degrades gracefully (returns None) when ffmpeg is absent.
fcpxml/mcp_compat.py — Registers the six MCP handlers against either the mcp 1.x
                      decorator API or the 2.x add_request_handler API. mcp 2.0
                      removed the decorators outright; detection is by attribute
                      probe, not version string. Also carries tool_input_schema()
                      and resource_mime_type(), because 2.x renamed those fields
                      to snake_case while keeping the old spelling as a
                      SERIALISATION alias only — building with inputSchema=
                      works, reading .inputSchema raises.
fcpxml/dtd.py       — Validates output against Apple's official DTDs (located inside the installed FCP app bundle;
                      xmllint needs the DTD path as a percent-encoded file:// URI — spaces in "Final Cut Pro.app" break it).

Read the full file on GitHub · 176 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. today Changed · +84 lines · +1,726 tokens per session e446d6b224f8
  2. 4d ago First seen · 92 lines · 2,131 tokens per session scan A dc2104455534

Subscribe to this mod's changes

fcp-mcp-server CLAUDE.md is an instructions file published in the GitHub repository DareDev256/fcp-mcp-server (96 stars, last pushed today), licensed MIT. It adds 3,857 tokens to every session, about $0.0193 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other instructions, from other repositories

SpliceKit AGENTS.md

Instructions for elliotttate/SpliceKit, covering splicekit - programmatic final cut pro control, never use keyboard simulation or applescript, quick start, critical: must know before editing and opening a project.

elliotttate/SpliceKit · 9,879 tokens

SpliceKit CLAUDE.md

Instructions for elliotttate/SpliceKit, covering splicekit - programmatic final cut pro control, never use keyboard simulation or applescript, quick start, critical: must know before editing and opening a project.

elliotttate/SpliceKit · 12,190 tokens

vscode buildNext.instructions.md

Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).

microsoft/vscode · 6,785 tokens

spec-kit AGENTS.md

AGENTS.md instructions for github/spec-kit, covering agents.md, about spec kit and specify, quickstart — add a new integration in 5 steps, integration architecture and integrationmanifest — file tracking.

github/spec-kit · 7,104 tokens

codex AGENTS.md

AGENTS.md instructions for openai/codex, covering rust/codex-rs, the codex-core crate, code review rules, crate api surface and model visible context.

openai/codex · 5,182 tokens

langchain AGENTS.md

AGENTS.md instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.

langchain-ai/langchain · 4,345 tokens