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).
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 .ffx, list/search preset libraries |
| 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 install
- Build:
npm run build
- Install bridge script:
npm run install-bridge
- Restart After Effects and open:
Window -> mcp-bridge-auto.jsx- Keep 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:
node - args:
["<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 --> A
Command 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 JSON
Typical 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 build
Install bridge:
npm run install-bridge
Run server directly:
node build/index.js
Troubleshooting
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





