After Effects MCP
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 MCPpreview the first frame of my Main comp and list its layers"
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
This lets Claude Code, or any MCP client, drive the Adobe After Effects that's open on your computer. It can:
inspect projects and comps
build and animate layers with ExtendScript
preview frames as images
import files
render, with live progress on long renders
There are no dependencies beyond Node.js 18+.
Installing with an AI agent? Tell it: "Install the After Effects MCP from https://github.com/LiamcKerr/after-effects-mcp by following its AGENTS.md." The file has step-by-step instructions, a verification script and a fix for every failure.
How it works
MCP client ──stdio──> server/server.mjs ──HTTP 127.0.0.1:47670 + token──> Claude Bridge (CEP extension inside AE) ──> ExtendScriptcep/is a small CEP extension with two parts:An invisible host. After Effects starts it on launch, and it runs a local server that passes scripts to AE's script engine one at a time.
A status panel, under Window > Extensions > Claude Bridge. It shows whether the bridge is up and lists recent calls, and its Restart bridge button reloads the host.
server/is the MCP server: stdio JSON-RPC with no dependencies. All the tool logic lives here.
Related MCP server: After Effects MCP Custom
Tools
Tool | What it does |
| Bridge check, AE version, open project, active item, and whether scripts may write files |
| Project items with ids: comps, footage, folders |
| Comp settings and layers: timing, switches, parent, effects, text, transform, keyframe counts |
| Renders one frame to PNG and returns it as an image |
| Imports a file or image sequence, optionally into a named folder |
| Renders a comp through the render queue. Either waits, or ( |
| Progress of a render: frames done, percent, time per frame, ETA. It answers while AE is busy rendering |
| Runs any ExtendScript (ES3) and returns the result |
Every change is one undo step named "Claude: …", so Edit > Undo in AE reverses it.
Install
The requirements are After Effects 2022 or newer and Node.js 18 or newer. ffmpeg is optional (for .mp4 from sequence renders). The installer registers the server with Claude Code if the claude CLI is installed.
# Windows (tested: Windows 11, After Effects 2025 and 2026)
git clone https://github.com/LiamcKerr/after-effects-mcp.git "$env:USERPROFILE\after-effects-mcp"
cd "$env:USERPROFILE\after-effects-mcp"
powershell -ExecutionPolicy Bypass -File install.ps1# macOS (written for macOS but not yet tested there)
git clone https://github.com/LiamcKerr/after-effects-mcp.git ~/after-effects-mcp
cd ~/after-effects-mcp && bash install.shThen do three things by hand:
Restart After Effects.
Tick Preferences > Scripting & Expressions > "Allow Scripts to Write Files and Access Network".
Start a new Claude Code session.
Check everything with:
node scripts/doctor.mjs # PASS/FAIL per piece, with the fix for each failureKeep the repo folder where it is: After Effects loads the extension through a link to cep/.
Other MCP clients
Register a stdio server with command node and argument <repo>/server/server.mjs. For Claude Desktop's claude_desktop_config.json:
{ "mcpServers": { "after-effects": { "command": "node", "args": ["C:\\Users\\you\\after-effects-mcp\\server\\server.mjs"] } } }Rendering long comps
ae_render { comp: "Main", output_path: "D:/renders/main.mp4", format: "sequence", wait: false }
-> { job: "render-…", frames: 1800 }
ae_render_status { job: "render-…" }
-> { status: "running", framesDone: 612, percent: 34, secondsPerFrame: 1.9, etaSeconds: 2257 }
-> { status: "done", encodedBytes: 48211003, file: "D:/renders/main.mp4" }The frames go to
main_frames/next to the output. When the render is done,ae_render_statusencodes them to the .mp4 with ffmpeg.PNG sequences carry no audio, so mux your soundtrack separately.
format: "template"(the default) renders straight to one file with an output module template, but AE reports no progress until it finishes.
Security
Local only. The bridge listens on 127.0.0.1 and needs a random token from
bridge.json:%APPDATA%\ClaudeAEBridgeon Windows,~/Library/Application Support/ClaudeAEBridgeon macOS. The token is created on first run and readable by your user only.No browsers. Requests with an
Originheader, or aHostother than 127.0.0.1/localhost, are refused. That blocks web pages and DNS rebinding.Full scripting power.
ae_run_scriptcan do anything ExtendScript can do in the open project. That's the point, so only your own MCP client should hold the token.
Gotchas
Dialogs freeze everything.
alert,confirm,prompt, or any AE warning dialog (missing fonts, "overwrite?", "undo group mismatch") blocks AE and the bridge until someone clicks.ae_renderavoids the ones it can: it deletes an existing output file first and never renders inside an undo group.One job at a time. While AE renders or shows a dialog, other calls wait; only
ae_render_statusanswers. A timeout on the MCP side doesn't stop the script in AE.One AE at a time. If two versions of AE are open, only the first gets port 47670.
Preview permission.
ae_preview_frameusessaveFrameToPng. A file permission error means the scripting preference above isn't ticked.ES3 only. ExtendScript is ES3: no
let/const, arrow functions, template strings orJSON, and reserved words must be quoted as object keys.
Testing without After Effects
node test/fake-ae.mjs # real host.js + bridge.jsx with a stand-in AE on :47670
node test/smoke.mjs # initialize, tools/list, ae_status
node test/smoke.mjs ae_run_script @test/roundtrip.jsonThe stand-in runs modern JavaScript, so it won't catch ES3-only mistakes. Always finish with a live check in AE.
Uninstall
uninstall.ps1 (Windows) or uninstall.sh (macOS) removes the link, the Claude Code registration and the token folder, and leaves the repo in place.
Licence
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
Remote MCP server for AI.TV creators — delegate account operations to your AI agent over MCP.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables AI assistants to control Adobe After Effects through the MCP protocol, including composition creation, layer management, and animation.1398 npmMIT
- AlicenseCqualityCmaintenanceLocal MCP server to control Adobe After Effects from AI clients like Claude and Cursor, supporting project composition, layer editing, animation, masks, and effects.1398 npmMIT
- AlicenseNot gradedqualityBmaintenanceLets AI live-connect to Adobe After Effects to read project and comp structure, render and inspect frames, edit keyframes, expressions, and effects, and build or render projects end to end, all with undo support and safety guards.3MIT
- AlicenseAqualityCmaintenanceEnables local automation of Adobe After Effects 2024+ through MCP, including composition creation, arbitrary ExtendScript execution, footage import, project saving, and rendering via clients like Codex.111MIT