After Effects MCP Server
Control Adobe After Effects through MCP using an in-AE bridge panel, with tools for composition/layer automation, animation, effects/presets, Lottie/dotLottie export, markers, and audio workflows.
Run predefined read-only scripts, fetch last results, get help.
Create/inspect compositions, create adjustment layers, center layers, get layer clip frames.
Set layer keyframes and expressions; test animation.
Apply, add, list, edit, keyframe, and remove effects; list all available effects; apply/search/list .ffx presets.
Edit effect properties/keyframes with easing, interpolation, spatial/temporal graph controls.
Audit Lottie compliance, compile comps for Lottie, export Lottie JSON, package compressed dotLottie
.lottiefiles.Add Lottie state markers and generate dotLottie interactivity/state machine specs.
Add single or bulk layer/composition markers.
Get/set audio levels, inspect audio metadata, analyze WAV waveforms/peaks, and place markers from audio peaks.
Run bridge diagnostics and effects help.
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., "@After Effects MCP Server compile my main comp to dotLottie and add click interactivity"
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.
After Effects MCP Server
Control Adobe After Effects through MCP using a bridge panel running inside AE. This project is optimized for practical automation workflows: effects, presets, keyframing, markers, and audio-aware tooling.
Highlights
Full composition and layer automation.
Lottie & dotLottie Compiler: Auto-bakes unbaked expressions, converts text/AI to shapes, and strips raster filters.
Interactive State Machines: Generates official dotLottie interactivity specifications (
onClick,onMouseEnter,onMouseLeave,onComplete).Zero-Dependency
.lottiePackager: Exports compressed dotLottie ZIP containers (>95% size reduction).Deep effect inspection and property editing.
Advanced effect graph controls (temporal + spatial).
Preset search/list/apply workflows.
Marker and audio automation, including waveform-to-marker pipelines.
Installed effect catalog discovery (
list-available-effects).
Related MCP server: After Effects MCP Server
Feature Matrix
Area | Capabilities |
Composition | Create, inspect project/compositions, get clip frame ranges |
Layers | Text/shape/solid/adjustment creation, transform/property updates, centering |
Animation | Layer keyframes, expressions, effect keyframes with graph controls |
Lottie & dotLottie | Compliance audit ( |
Effects | Apply by name/matchName, list layer effects recursively, edit any effect property, remove effects |
Presets | Apply |
Markers | Add single marker (comp/layer), add markers in bulk |
Audio | Set channel levels, inspect audio metadata, analyze WAV waveform, detect peaks |
Requirements
Adobe After Effects
Node.js 18+
npm
In After Effects, enable:
Edit -> Preferences -> Scripting & Expressions -> Allow Scripts to Write Files and Access Network
Quick Start
Clone and install:
git clone https://github.com/SUBSAHARXN/after-effects-mcp.git
cd after-effects-mcp
npm installBuild:
npm run buildInstall bridge script:
npm run install-bridgeRestart After Effects and open:
Window -> mcp-bridge-auto.jsxKeep this panel open during MCP usage.
MCP Client Config
Use an absolute path to build/index.js.
{
"mcpServers": {
"AfterEffectsMCP": {
"command": "node",
"args": ["<absolute-path-to-repo>/build/index.js"]
}
}
}Add to VS Code
If you use an MCP-capable VS Code extension, add this server in that extension's MCP server settings.
Use:
command:
nodeargs:
["<absolute-path-to-repo>/build/index.js"]
Example snippet many extensions accept:
{
"mcpServers": {
"AfterEffectsMCP": {
"command": "node",
"args": ["C:\\Users\\<you>\\Documents\\Projects\\AEMCP\\build\\index.js"]
}
}
}Then:
Restart VS Code.
Open After Effects and keep
Window -> mcp-bridge-auto.jsxopen.Call a simple tool like
get-helporrun-scriptwithgetProjectInfo.
Add to Claude Desktop
Edit Claude Desktop config and add the MCP server entry.
Typical Windows config location:
%APPDATA%\\Claude\\claude_desktop_config.json
Example:
{
"mcpServers": {
"AfterEffectsMCP": {
"command": "C:\\Program Files\\nodejs\\node.exe",
"args": [
"C:\\Users\\<you>\\Documents\\Projects\\AEMCP\\build\\index.js"
]
}
}
}After saving:
Fully restart Claude Desktop.
Open AE bridge panel.
Verify with
tools/listin logs or by calling a known tool.
Add to Claude Code
Configure the same server command/args in your Claude Code MCP configuration.
Use this server definition:
{
"AfterEffectsMCP": {
"command": "node",
"args": ["<absolute-path-to-repo>/build/index.js"]
}
}Then:
Restart Claude Code or reload MCP servers.
Ensure After Effects is open with
mcp-bridge-auto.jsxpanel running.Test with
get-resultsafter a queued command.
Architecture Graph
flowchart LR
A[AI Client<br/>VS Code / Claude Desktop / Claude Code] --> B[MCP Server<br/>build/index.js]
B --> C[Bridge Files<br/>ae_command.json / ae_mcp_result.json]
C --> D[After Effects Bridge Panel<br/>mcp-bridge-auto.jsx]
D --> E[Adobe After Effects]
E --> D
D --> C
C --> B
B --> ACommand Flow Graph
sequenceDiagram
participant Client as MCP Client
participant Server as MCP Server
participant Bridge as AE Bridge Panel
participant AE as After Effects
Client->>Server: tools/call (example: apply-effect)
Server->>Server: write ae_command.json
Server-->>Client: queued response (or waits)
Bridge->>Bridge: poll command file
Bridge->>AE: execute command
AE-->>Bridge: result/error
Bridge->>Bridge: write ae_mcp_result.json
Client->>Server: get-results
Server-->>Client: final result JSONTypical Runtime Flow
Start your MCP client (it starts this server).
Keep AE bridge panel open.
Call tools.
If response says queued, call
get-resultsafter 1-3 seconds.
Note: some AE operations finish slightly after tool timeout windows; get-results usually contains the final state.
Tool Catalog
General
run-scriptget-resultsget-help
Composition and Layer Utilities
create-compositioncreate-adjustment-layercenter-layersget-layer-clip-frames
Lottie and Interactivity
audit-lottie-compliance(audits comp for raster filters, unbaked expressions, text/vector footage)compile-lottie-comp(clones comp, bakes expressions to keyframes, flattens 3D, converts text/AI to shapes)export-lottie-json(exports compliant vector Lottie JSON)add-lottie-state-markers(adds state markers e.g. idle, hover, active, exit)generate-lottie-interactivity(compiles dotLottie state machine specification from markers)export-dotlottie-package(packages Lottie JSON + manifest into compressed .lottie ZIP container)
Effects and Presets
apply-effectadd-any-effectmcp_aftereffects_applyEffectapply-effect-templatelist-layer-effectslist-available-effectsset-effect-propertyset-effect-keyframeremove-effectapply-presetlist-presetssearch-presets
Markers and Audio
add-markeradd-markers-bulkset-audio-levelsget-audio-infoanalyze-audio-waveform
Diagnostics and Helpers
test-animationrun-bridge-testmcp_aftereffects_get_effects_help
Audio to Marker Workflow
get-audio-infoon target layer.Copy
sourceFilePath.analyze-audio-waveformwith optionalnumPoints.Convert
peakTimestomarkers[].add-markers-bulk.
Project Layout
src/index.ts- MCP server and tool definitionssrc/scripts/mcp-bridge-auto.jsx- AE bridge panelinstall-bridge.js- bridge installer
Development
Build:
npm run buildInstall bridge:
npm run install-bridgeRun server directly:
node build/index.jsTroubleshooting
Server does not start
Run
npm run build.Check MCP logs for startup exceptions (for example duplicate tool registration).
Commands queue but do not complete
Ensure AE bridge panel is open.
Confirm AE scripting/network permission is enabled.
Retry and call
get-resultsafter a short delay.
Results appear stale
Reopen bridge panel.
Send a new command and then call
get-results.
Program Files install fails
Expected without elevated permissions.
User AppData script paths are usually sufficient.
License
MIT. See LICENSE.
Credits & Attribution
Original Project: Dakkshin/after-effects-mcp (MIT License)
Upstream Bridge: TheLlamainator/after-effects-mcp
Lottie & State Machine Suite: Extended by SUBSAHARXN with automated expression baking, dotLottie packaging, and ExtendScript reliability patches.
Available Tools
36 toolsadd-any-effectB
Add any After Effects effect to a layer by matchName or display name.
Inputs: effect (required), compIndex (required), layerIndex (required), effectSettings.
add-lottie-state-markersB
Add named interactive state markers to an After Effects composition timeline for dotLottie interactive playback (e.g. idle, hover, active, exit). Supports presets: 'button_toggle', 'hover_loop', 'toggle_switch' or custom state definitions.
Inputs: preset, states, compName, compIndex, +1 more.
add-markerC
Add a marker to a layer or composition at a specified time. Markers can include a comment, label color, chapter name, URL and duration.
Inputs: compIndex (required), url, label, chapter, +6 more.
add-markers-bulkA
Add multiple layer or composition markers at once. Use this after analyze-audio-waveform to place markers at detected peaks, or to add any set of markers in a single call.
Inputs: markers (required), compIndex (required), layerName, layerIndex, +1 more.
analyze-audio-waveformA
Analyze a WAV audio file to extract waveform amplitude data and detect peaks/transients. First call get-audio-info to retrieve the sourceFilePath, then pass it here. Returns normalized amplitude values (0-1) at evenly spaced time intervals plus an array of peak times where transients are detected.
Inputs: filePath (required), numPoints.
apply-effectC
Apply an effect to a layer in After Effects
Inputs: compIndex (required), layerIndex (required), effect, effectName, +5 more.
apply-effect-templateB
Apply a predefined effect template to a layer in After Effects
Inputs: compIndex (required), layerIndex (required), templateName (required), customSettings.
apply-presetB
Apply an After Effects .ffx preset file to a layer.
Inputs: compIndex (required), layerIndex (required), presetPath (required).
audit-lottie-complianceA
Audit an After Effects composition for Lottie compatibility. Scans for unsupported raster effects (Wave Warp, Turbulent Displace, blurs, glows), unbaked/risky expressions (sourceRectAtTime, valueAtTime, wiggle), unconverted text layers, vector footage (AI/EPS), 3D switches, merge paths, and adjustment layers.
Inputs: compName, compIndex.
center-layersA
Center one layer, selected layers, or all layers in a composition.
Inputs: compIndex (required), allLayers, layerName, layerIndex, +1 more.
compile-lottie-compA
Restructure and compile an After Effects composition to make it 100% Lottie-compliant. Clones the composition safely to [CompName]_LottieReady, auto-bakes expressions into discrete keyframes (resolving sourceRectAtTime/valueAtTime/wiggle runtime errors), converts text and vector footage to native shape layers, flattens 3D switches, and strips unsupported raster effects.
Inputs: compName, compIndex, flatten3D, outputCompName, +6 more.
create-adjustment-layerA
Create an adjustment layer in the specified composition (or active comp).
Inputs: name, size, compName, duration, +2 more.
create-compositionA
Create a new composition in After Effects with specified parameters
Inputs: name (required), width (required), height (required), duration, +3 more.
export-dotlottie-packageB
Export an After Effects composition directly into a standard .lottie (dotLottie) ZIP container file containing the Lottie animation JSON, manifest.json, and interactive state machine (states/interactivity.json).
Inputs: compName, compIndex, outputPath, statePreset.
export-lottie-jsonC
Export an After Effects composition directly into a production-ready Lottie JSON animation file.
Inputs: compName, compIndex, outputPath.
generate-lottie-interactivityC
Extract After Effects timeline markers and compile a complete dotLottie Interactivity Specification (state machine with onClick, onMouseEnter, onMouseLeave, onComplete, and conditionals).
Inputs: compName, compIndex, animationId, stateMachineId.
get-audio-infoA
Get audio metadata, source file path, existing markers, and audio level keyframes for a layer in After Effects.
Inputs: compIndex (required), layerName, layerIndex.
get-helpA
Get help on using the After Effects MCP integration
Inputs: no named parameters.
get-layer-clip-framesB
Get a layer's clip start/end frames, source frame range, and duration in frames.
Inputs: compIndex (required), layerName, layerIndex.
get-resultsB
Get results from the last script executed in After Effects
Inputs: no named parameters.
list-available-effectsA
List all effects available in this After Effects installation, with optional text filter.
Inputs: query, maxResults, includeObsolete.
list-layer-effectsC
List effects on a layer, with optional recursive property details.
Inputs: compIndex (required), layerIndex (required), maxDepth, includeValues, +1 more.
list-presetsA
List available After Effects .ffx presets from common or provided folders.
Inputs: maxDepth, recursive, maxResults, presetRoots.
mcp_aftereffects_applyEffectC
Apply an effect to a layer in After Effects
Inputs: compIndex (required), layerIndex (required), effect, effectName, +3 more.
mcp_aftereffects_applyEffectTemplateC
Apply a predefined effect template to a layer in After Effects
Inputs: compIndex (required), layerIndex (required), templateName (required), customSettings.
mcp_aftereffects_get_effects_helpB
Get help on using After Effects effects
Inputs: no named parameters.
remove-effectB
Remove one specific effect (or all effects) from a layer.
Inputs: compIndex (required), layerIndex (required), removeAll, effectName, +2 more.
run-bridge-testA
Run the bridge test effects script to verify communication and apply test effects
Inputs: no named parameters.
run-scriptA
Run a read-only script in After Effects
Inputs: script (required), parameters.
search-presetsB
Search After Effects .ffx presets by name or path.
Inputs: query (required), maxDepth, recursive, maxResults, +1 more.
set-audio-levelsA
Set the audio levels (in dB) for an audio or AV layer. Supports per-channel control and optional keyframing.
Inputs: compIndex (required), layerIndex (required), level, leftLevel, +2 more.
set-effect-keyframeB
Set an effect property keyframe with optional graph interpolation and easy-ease controls.
Inputs: compIndex (required), layerIndex (required), value, effectName, +8 more.
set-effect-propertyB
Set or keyframe any property on an existing layer effect using name/index/path.
Inputs: compIndex (required), layerIndex (required), value, effectName, +9 more.
setLayerExpressionB
Set or remove an expression for a specific layer property.
Inputs: compIndex (required), layerIndex (required), propertyName (required), expressionString (required).
setLayerKeyframeB
Set a keyframe for a specific layer property at a given time.
Inputs: compIndex (required), layerIndex (required), propertyName (required), timeInSeconds (required), +1 more.
test-animationD
Test animation functionality in After Effects
Inputs: compIndex (required), operation (required), layerIndex (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 36 tools
Several tools appear to do the same thing: mcp_aftereffects_applyEffect, apply-effect, and add-any-effect all apply effects to a layer, while mcp_aftereffects_applyEffectTemplate and apply-effect-template duplicate each other. Help tools and test tools also overlap in purpose, making tool selection highly ambiguous.
The tool names mix kebab-case, camelCase, and an mcp_aftereffects_ prefix, with inconsistent verb-first ordering. Examples include apply-effect, mcp_aftereffects_applyEffect, setLayerKeyframe, and add-markers-bulk, showing no single predictable convention.
36 tools is heavy for this server, and many slots are consumed by duplicate or test/help operations rather than distinct capabilities. The count feels inflated rather than well-scoped.
The server covers effects, presets, audio analysis, markers, Lottie export, interactivity, and compliance auditing, which is broad. However, basic lifecycle operations like listing compositions/layers or deleting compositions/layers are missing, leaving notable gaps for common AE workflows.
Maintenance
Related MCP Connectors
Creator MCP is the hosted LottieFiles animation engine for AI agents. Your agent builds real motion with layers, shapes and keyframes, then exports MP4, WebM, Lottie or dotLottie. Use it for logo reveals, product promos, social clips and UI animations. You can import SVGs, images and existing Lottie files, and open any scene in Lottie Creator to fine-tune it frame by frame. Setup is one URL and a LottieFiles sign-in.
One sentence to a finished animation: your AI writes motion graphics as code and checks real frames.
Video production studio for AI agents: AI media, motion graphics as code, timeline and export.
Control Unreal Engine to browse assets, import content, and manage levels and sequences. Automate…
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables AI assistants to control Adobe After Effects for composition, layer, effect, preset, marker, and audio automation through a bridge panel.30146 npm24MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to control Adobe After Effects for project inspection, composition creation, and layer manipulation via a hardened bridge panel.-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to control Adobe After Effects through a file-based CEP bridge, supporting project and composition creation, layer and keyframe management, expressions, batch operations, and rendering.23 npmMIT
- AlicenseAqualityCmaintenanceEnables AI assistants to build, animate, inspect, and script fully editable Adobe After Effects projects through a bridge panel, including frame and storyboard review.341MIT