After Effects MCP Server
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 apply glow effect to layer 1"
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.
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 |
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/TheLlamainator/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
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.
Inspo
https://github.com/Dakkshin/after-effects-mcp
I took the base code from them but added a lot
Available Tools
30 toolsadd-any-effectB
Add any After Effects effect to a layer by matchName or display name.
Inputs: compIndex (required), layerIndex (required), effect (required), effectSettings.
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), markerType, layerIndex, layerName, +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: compIndex (required), markers (required), markerType, 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, effectIdentifier, +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).
center-layersA
Center one layer, selected layers, or all layers in a composition.
Inputs: compIndex (required), layerIndex, layerName, selectedOnly, +1 more.
create-adjustment-layerA
Create an adjustment layer in the specified composition (or active comp).
Inputs: compName, name, position, size, +2 more.
create-compositionA
Create a new composition in After Effects with specified parameters
Inputs: name (required), width (required), height (required), pixelAspect, +3 more.
get-audio-infoA
Get audio metadata, source file path, existing markers, and audio level keyframes for a layer in After Effects.
Inputs: compIndex (required), layerIndex, layerName.
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), layerIndex, layerName.
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, includeObsolete, maxResults.
list-layer-effectsC
List effects on a layer, with optional recursive property details.
Inputs: compIndex (required), layerIndex (required), includeProperties, includeValues, +1 more.
list-presetsA
List available After Effects .ffx presets from common or provided folders.
Inputs: presetRoots, recursive, maxResults, maxDepth.
mcp_aftereffects_applyEffectC
Apply an effect to a layer in After Effects
Inputs: compIndex (required), layerIndex (required), effect, effectIdentifier, +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), effectIndex, 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), presetRoots, 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), effectIndex, 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), effectIndex, 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: operation (required), compIndex (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 30 tools
Several tools overlap in purpose, e.g., apply-effect, add-any-effect, and mcp_aftereffects_applyEffect all apply effects but with different naming. Similarly, apply-effect-template and mcp_aftereffects_applyEffectTemplate are redundant. This duplication confuses tool selection.
Naming conventions are inconsistent: camelCase (setLayerExpression, setLayerKeyframe) mixed with snake_case (add-any-effect, set-effect-property). Some tools have a 'mcp_aftereffects_' prefix while others do not, lacking a predictable pattern.
30 tools is somewhat high, and several are redundant (multiple apply effect tools). The server would benefit from consolidation to reduce clutter, but the count is not extremely excessive.
The tool set covers effects, markers, audio, and keyframes but lacks basic layer creation (e.g., text, shape layers) and import/export/rendering. Essential workflows have significant gaps.
Maintenance
Related MCP Connectors
Connect your AI assistant to Blender for 3D modeling, Geometry Nodes, materials, lighting, animation, rendering and export. Inspect real scenes and viewport images, refine the result and restore checkpoints. OAuth connects your chat to Blender Bridge Desktop on an online Windows 10/11 x64 computer running Blender 4.2+. The chat can run on another device. Requires an active Blender Bridge account; 7-day trial available. AI model access is separate.
AI editor to build, animate & export layered short-form video projects via one tool catalog.
Image and video AI tools and your own pipelines, run from any AI assistant.
One sentence to a finished animation: your AI writes motion graphics as code and checks real frames.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to control Adobe After Effects through a WebSocket-based CEP panel, supporting composition, layer, animation, effects, and render operations.10182 npm4MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to control Adobe After Effects for project inspection, composition creation, and layer manipulation via a hardened bridge panel.-
- AlicenseCqualityDmaintenanceEnables AI assistants and applications to control Adobe After Effects through the Model Context Protocol for composition, layer management, and animation.13182 npmMIT
- 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.27 npmMIT