fnf-local-pluging-bridge-mcp
Summary: This server provides local, scriptable control of Adobe After Effects via MCP tools, including skills, project inspection, editing, rendering, and JSON import/export.
Offline skills: Read bundled AE workflows (
ae_get_skill) for guidance likeae-clean-rig; fetch specific references without launching AE.Project/comp/layer inspection: Get project info, composition details, layer transforms/effects/masks/keyframes, and version/capability info.
Rendering: Render single frames to PNG for visual verification, with color-managed output options.
Editing operations: Execute atomic AE operations (
ae_do) from a discoverable catalog (ae_catalog) — e.g., create text/layers, add keyframes, edit properties; multiple operations can be batched in one undo group.Project saving & serialization: Save the project, export the full project to JSON, and import/rebuild projects from JSON (with dry-run/clear/skip-validation options).
Session context: Get ambient state, selected layers, active comp, and undo/error-handling contracts.
Safety controls: Read-only mode, category filtering, and operation validation before AE is contacted.
Provides local control of Blender via an independent MCP package that connects over authenticated loopback HTTP, shipping a Python add-on, CLI, bundled creative skills and tests for automating 3D workflows in a running Blender instance.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@fnf-local-pluging-bridge-mcpShow me the layers in my active composition"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 mailboxNo 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 independentfnf-blender-mcppackage, background Python runner, CLI, skills and tests.skills/: the single source of editable skills; the After Effects package bundles onlyskills/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-codexdoctor 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
ae_get_skill({}): offline skill index.ae_get_skill({"name":"ae-clean-rig"}): construction and verification workflow.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 underfiles;ae_get_skill_assetreturns a verified path on the local MCP host, not file content.ae_project_info({}): verify the real AE connection and inspect current work.ae_catalog({}), thenae_catalog({"category":"layer"}): discover exact operation parameters.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:offlineEdit 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:packageSee 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 toolsae_catalogOperation catalogARead-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 infoARead-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 contextARead-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 operationADestructive
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 skillsARead-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 infoARead-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 JSONADestructive
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 infoARead-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 projectADestructive
Save the project. Pass path for Save As.
Inputs: path.
ae_version_infoVersion infoARead-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
Scored across 12 tools
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.
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.
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.
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
Compose, edit and render video with your AI agent. Turn footage into finished edits with content-aware reframing, word-timed captions and motion graphics. Hosted MCP with OAuth sign-in; cloud processing uses credits.
Remote MCP server for AI.TV creators — delegate account operations to your AI agent over MCP.
An MCP connector for Adobe After Effects. Real, editable layers and keyframes, not scripts.
Build and run AI workflows, agents, data tables and 1000+ API integrations from any MCP client.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables AI assistants to control Adobe After Effects through the MCP protocol, including composition creation, layer management, and animation.13146 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP clients to drive Adobe After Effects via a Python server and CEP panel, supporting inspection, mutation, preview, checkpoint/revert, skills, and basic rigging.96MIT
- AlicenseBqualityDmaintenanceEnables control of Adobe After Effects via natural language, allowing project manipulation, layer creation, animation, and rendering through MCP.72MIT
- AlicenseCqualityDmaintenanceLocal MCP server to control Adobe After Effects from AI clients like Claude and Cursor, supporting project composition, layer editing, animation, masks, and effects.13146 npmMIT