Skip to main content
Glama
fnf-local-pluging-bridge-mcp

fnf-local-pluging-bridge-mcp

Higgsfield local application MCPs

Independent local MCP packages for After Effects (repository root) and Blender. Each package has its own dependencies, build, tests and release.

Development packages for Photoshop, Premiere and Illustrator are also available. Each runs independently; shared build sources and validation scope live in adobe/. These private development packages have passed native macOS acceptance on the versions documented in their READMEs. They are not published; Windows and production distribution remain unverified.

After Effects

Local control of Adobe After Effects, with offline creative skills adapted from the FNF bridge. Based on the MIT-licensed mcp-aftereffects runtime; see attribution.

Codex / desktop MCP client → local stdio server → OS scripting → After Effects
                                  ↓                    ↕
                            bundled AE skills     local file mailbox

No Higgsfield account, cloud relay or installed AE panel is required. Adobe licensing, an installed AE application, OS Automation permissions and AE's scripting file access preference are separate requirements. The root integration controls AE; the separate blender/ package controls a dedicated background Blender process over stdin/stdout pipes. A remote web client cannot directly launch a local stdio process.

Related MCP server: ae-mcp

Repository layout

  • Root: the local After Effects MCP runtime, tests and setup CLI.

  • blender/: the independent fnf-blender-mcp package, background Python runner, CLI, skills and tests.

  • skills/: the single source of editable skills; the After Effects package bundles only skills/after-effects/.

  • scripts/: skill installation, manifest generation and validation.

  • creative-skills/archive/bridge-ae/: original bridge knowledge retained for migration review.

Both original Git histories are retained. After Effects and Blender run as separate MCP servers; neither package requires the other. Root npm commands apply to After Effects. Run Blender commands from blender/.

Setup

Requires Node 24+, macOS or Windows and After Effects (the upstream defaults probe 2024–2026).

npm ci --ignore-scripts
npm run build
node dist/cli.js doctor
node dist/cli.js install-codex

doctor inspects installation and verifies the bundled skills without launching AE. install-codex registers absolute paths under higgsfield-use-after-effects and refuses to overwrite a conflicting configuration. Refresh the MCP connection in your client after registration. Keep this checkout at its registered path. To remove only this registration: codex mcp remove higgsfield-use-after-effects.

When replacing an existing fnf-after-effects registration, review it with codex mcp get fnf-after-effects, remove the old entry with codex mcp remove fnf-after-effects, then rerun the installer.

For another desktop MCP client, node dist/cli.js config prints a JSON configuration using the current Node and server paths. For nonstandard AE installs, set AE_MCP_EXE in the MCP server environment. On macOS, allow the relevant host app's Automation request when first connecting. Enable AE's Allow Scripts to Write Files and Access Network preference if AE reports file access denied.

For the discoverable entry skill, run python3 scripts/install-skill.py from this checkout. Its companion skills come from this server and need no separate global installation.

First calls

  1. ae_get_skill({}): offline skill index.

  2. ae_get_skill({"name":"ae-clean-rig"}): construction and verification workflow.

  3. ae_get_skill({"name":"ae-clean-rig","reference":"references/07-sliders.md"}): load one focused module. If an After Effects skill ships files, it lists them under files; ae_get_skill_asset returns a verified path on the local MCP host, not file content.

  4. ae_project_info({}): verify the real AE connection and inspect current work.

  5. ae_catalog({}), then ae_catalog({"category":"layer"}): discover exact operation parameters.

  6. ae_do({"operation":"layer.create_text","args":{"comp":"Main","text":"Hello","name":"Title"}}): edit an existing named comp when requested.

The 12 tools are documented in TOOLS.md. The native operation registry is available through ae_catalog; it includes compositions, text, shapes, properties, keyframes, effects, cameras and project operations. Discover the actual policy-filtered catalog rather than assuming every operation is enabled.

Project behavior

Preserve unsaved work. Inspect before editing and render representative frames for visual proof. batch.run groups operations for undo but does not roll back automatically on failure. A consumed request that times out may have executed: inspect before retrying mutations.

AE_MCP_READONLY=1 restricts project changes. AE_MCP_ALLOW_CATEGORIES filters operations. Arbitrary eval is off unless AE_MCP_ENABLE_EVAL=1. Never use a shared writable directory for the executable mailbox. Keep secrets out of skill documents and server logs.

Skills and development

Skill entries and their references are maintained directly under skills/; no network or sibling checkout is needed to read them. The AE runtime includes and serves only the after-effects group and verifies manifest-listed hashes. Other application groups belong in their own local packages. The original bridge archive lives under creative-skills/ in this repository and is excluded from the runtime package.

npm run skills:manifest
npm run check
npm run test:offline

Edit skills/ directly, then regenerate skills/manifest.json and commit it together with the skill changes. Generation writes only the manifest, works with uncommitted edits and requires no Git metadata. npm run skills:check rejects stale descriptions, hashes, missing entries and invalid reference links. The manifest records a sha256 per Markdown document and per file under assets/ or scripts/, and rejects a SKILL.md over 64 KiB; ae_get_skill no longer returns that obsolete snapshot field. Live tests under tests/e2e have separate prerequisites; offline success does not prove rendering on your AE installation. See VALIDATION.md for the actual checks performed on this fork.

The root After Effects package publishes to the public npm registry as fnf-after-effects-mcp. Install the current release with npm install --global --ignore-scripts fnf-after-effects-mcp@0.1.1. Do not use the upstream package name when installing this fork. Historical upstream documentation is preserved in docs/UPSTREAM-README.md for reference.

Blender development and releases

cd blender
npm ci
npm test
npm run typecheck
npm run test:package

See Blender setup and verification and the Blender release procedure. The published npm identifiers stay fnf-after-effects-mcp and fnf-blender-mcp; /use-blender continues installing from npm. CI validates and packs each package independently.

Available Tools

12 tools
ae_catalogOperation catalogA
Read-only

Discover available atomic operations for ae_do. Without args: all categories with their operation names. With a category: detailed params per operation. Only operations this server will actually execute are listed.

Inputs: category.

ae_comp_infoComp infoA
Read-only

Detailed comp info: size, fps, duration, work area, motion blur, layer summaries. Pass a comp name or item id — or an ARRAY of them to fetch several comps in one call.

Inputs: nameOrId (required).

ae_contextSession contextA
Read-only

Ambient context: project state, active comp, selected layers, item list, AE.* helpers, ES3 rules, and the undo contract (every call = one auto undo group). Call at session start; then rely on ae_do response context.

Inputs: no named parameters.

ae_doExecute operationA
Destructive

Execute an atomic operation by name (from ae_catalog). Arguments are validated against the operation's declared parameters before anything reaches AE. Have more than one operation to run? Wrap them in ONE batch.run instead of several ae_do calls — read/verify steps (comp.info, layer.info, render.frame) can ride in the same batch. Every call is automatically wrapped in ONE undo group: a single Ctrl+Z (or project.undo) reverts the entire call, and a batch.run counts as one call. Never call app.beginUndoGroup/endUndoGroup in eval.run code — the wrapper already did. The exception is undo/redo itself (project.undo, command.execute id 16/2035): those run outside the group and cannot ride inside a batch.run. Response includes ambient context (active comp, selected layers, project state) at zero extra round trips. Example: ae_do({ operation: 'keyframe.add', args: { comp: 'Main', layer: 1, property: ['Transform','Position'], time: 2, value: [960,540] } })

Inputs: operation (required), args, timeoutMs.

ae_get_skillAfter Effects skillsA
Read-only

Read bundled local AE workflows without opening After Effects or using the network. Omit name for the index; supply name for an entry, and reference for one listed module. Start with ae-clean-rig before building or editing projects.

Inputs: name, reference.

ae_layer_infoLayer infoA
Read-only

Full layer info: transform, effects, masks, text, shape contents, keyframes. layerIndex accepts one index, an ARRAY of indices, or 'all' — auditing a whole comp is one call. Set includeProperties=false to skip the property tree walk.

Inputs: layerIndex (required), compNameOrId (required), includeProperties.

ae_project_export_jsonExport project JSONA

Serialize the entire project to JSON (folders, comps, layers, keyframes, effects, shapes, markers, time remap, solids, file refs). Write to outPath or return inline.

Inputs: pretty, outPath.

ae_project_import_jsonImport project JSONA
Destructive

Rebuild the project from JSON (produced by ae_project_export_json). Supports clearFirst, dryRun (validate-only), skipValidation.

Inputs: json, dryRun, inPath, clearFirst, +1 more.

ae_project_infoProject infoA
Read-only

Project-level info: file path, dirty flag, all items with type/summary, active item. Start here.

Inputs: no named parameters.

ae_render_frameRender frameA

Render a single frame to PNG. Use to visually verify edits. The agent's 'eyes' — pair with mutations for a visual feedback loop. Headless and deterministic. In color-managed projects (workingSpace != None) the capture applies AE's own display transform via a transient OCIO Display Transform adjustment layer, and the PNG comes back viewer-accurate and sRGB-tagged. Where that layer cannot be used — read-only mode, an AE without the OCIO effect, or a failed capture calibration — the result falls back to a pure-math ACES conversion or to raw values with an explicit colorWarning; check colorPipeline / colorWarning on the response.

Inputs: time (required), outPath (required), compNameOrId (required), colorManaged, +1 more.

ae_save_projectSave projectA
Destructive

Save the project. Pass path for Save As.

Inputs: path.

ae_version_infoVersion infoA
Read-only

AE version, build, capabilities (saveFrameToPng, app.effects, Socket). Call at session start to know what APIs are available.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

    TDQS

    A4/5.0

    Scored across 12 tools

    Disambiguation4/5

    Most tools map cleanly to a distinct concern: project info, comp info, layer info, rendering, saving, JSON serialization, and atomic execution. The only mild overlaps are ae_context vs ae_project_info, both exposing project/item state, and ae_catalog vs ae_get_skill as discovery tools, but the descriptions provide enough guidance to disambiguate.

    Naming Consistency3/5

    All names share the ae_ prefix and snake_case, making them readable and clearly scoped to the server. However, the set mixes verb-first names (ae_get_skill, ae_save_project, ae_render_frame), noun-first names (ae_project_export_json, ae_project_import_json), noun-info names (ae_project_info, ae_comp_info), and bare nouns (ae_catalog, ae_context, ae_do), so there is no single consistent verb_noun pattern.

    Tool Count5/5

    12 tools is a well-scoped size for an After Effects bridge. It covers read-only inspection, rendering, persistence, JSON round-tripping, capability discovery, and generic atomic execution without bloating the surface or leaving it feeling thin.

    Completeness4/5

    The core lifecycle is well covered: project/comp/layer inspection, save, frame rendering, full project export/import, and dynamic atomic operations via ae_catalog/ae_do. The main gaps are a few direct conveniences like explicit project open/close or a standalone undo tool, though ae_do's undo-group contract mitigates this.

    Related MCP Connectors

    Related MCP Servers