after-effects-mcp
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Fail
- child_process — Shell command execution capability in .github/workflows/ci.yml
- fs module — File system access in .github/workflows/ci.yml
- child_process — Shell command execution capability in .github/workflows/release.yml
- fs.rmSync — Destructive file system operation in packages/ae-panel/client/main.js
- os.homedir — User home directory access in packages/ae-panel/client/main.js
- fs module — File system access in packages/ae-panel/client/main.js
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Control Adobe After Effects with AI — describe the animation you want and it gets built: layers, keyframes, effects, expressions and text, all editable afterwards.
After Effects MCP
Control Adobe After Effects with AI.
Describe the animation you want — a lower third, a logo reveal, an animated counter — and it gets built in your project: layers, keyframes, easing, effects, expressions and text. All of it editable afterwards, exactly like work you made by hand.
Works with Claude, Cursor, VS Code, Codex, Windsurf and any other MCP client.
✨ What it builds
Six scenes from one quarterly-report sequence, each in a different visual style. Every layer, keyframe and effect below was built through these tools.
Title card — engine dark |
KPI grid — editorial |
NAV curve — CRT terminal |
Allocation — brutalist |
Monthly P&L — aurora glass |
Outro — minimal print |
🚀 Getting started
Three steps, and you only do the first two once.
You'll need: After Effects 2026, on macOS or Windows.
1️⃣ Install
Pick the row that matches how you work, and open it for the steps.
🖥️ Claude Desktop — one click, nothing else to installDownload the latest .mcpb file and open it. Claude Desktop takes it from there — no terminal, nothing else to install.
Add this to your client's MCP configuration:
{
"mcpServers": {
"after-effects": {
"command": "npx",
"args": ["-y", "@engine-room/after-effects-mcp"]
}
}
}
VS Code uses a slightly different shape — put this in .vscode/mcp.json:
{
"servers": {
"after-effects": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@engine-room/after-effects-mcp"]
}
}
}
Restart your client afterwards.
📦 Any client, without Node — a standalone downloadDownload the build for your machine from the latest release, unzip it anywhere, and point your client at the executable inside:
{
"mcpServers": {
"after-effects": {
"command": "/Users/you/Applications/after-effects-mcp/after-effects-mcp"
}
}
}
Keep the unzipped folder together — the After Effects panel lives next to the executable.
The macOS builds are signed and notarized. The Windows build is unsigned, so SmartScreen may warn the first time you run it.
🔌 Claude Code plugin — adds skills and slash commandsThis repository doubles as a plugin marketplace:
/plugin marketplace add Engine-Room-Games/after-effects-mcp
/plugin install after-effects@engine-room
2️⃣ Set up After Effects
Quit After Effects if it's open, then ask your assistant:
Set up After Effects.
It installs a small panel into After Effects, which is how the tools talk to it. Open After Effects when it's finished and you're ready to go. 🎉
Prefer to leave After Effects open? That works too — you'll just be asked to restart it at the end.
3️⃣ Start animating
Open the project you want to work on, then say what you want:
Build a lower third that says Chapter One, sliding in from the left.
Your assistant reads the current state of your comp, makes the change, and can screenshot the result to check its own work. Everything it builds is ordinary, editable After Effects work — keyframes you can drag, effects you can dial in.
Two commands worth knowing, in any client that supports MCP prompts:
| Command | What it does |
|---|---|
/init-after-effects |
🧭 Walks you through setup and offers to capture your style |
/create-style-guide |
🎨 Teaches it what your work should look like |
🎨 Your house style
Ask for a style guide and point at a comp you already like. Your colours, fonts, sizes and timing get read off it and saved as house-style.md next to your After Effects project — and everything built afterwards follows it.
It sits beside the .aep, so it travels with the project and works in every client. It's plain markdown, so you can edit it in any text editor.
What goes in it, and project folders⚠️ Your project needs to have been saved at least once, or there's no folder to put it in.
A style guide that works is specific: #131521 at 92% opacity, not "dark and clean". The most useful lines are the prohibitions — "never put text directly on footage", "keep total runtime under 8 seconds". Ask for a style guide and you'll be walked through it.
Separately, "set up a project folder for me" creates a folder for one video, series or client, with a brief your assistant reads and a renders/ directory. It writes whichever rules file your client actually reads — AGENTS.md, CLAUDE.md, .cursor/rules/, and so on. From a terminal, the same thing is:
npx @engine-room/after-effects-mcp init my-video
Updating the tools never touches either file.
🔄 Updating
Two pieces update separately, and the After Effects panel does not update itself.
The tools — reinstall the
.mcpb, download the new standalone build, or just restart your client if you're onnpx.The panel — quit After Effects, then say:
Update the After Effects panel.
Reopen After Effects and it's running the new version.
If you forget the second step, nothing breaks silently: the next thing you ask for stops with a plain explanation, and your assistant walks you through it.
🧰 All 70 tools
| Group | Tools |
|---|---|
| Comps (7) | list_comps, get_comp, get_comp_tree, create_comp, set_comp, delete_comp, set_active_comp |
| Layers (15) | list_layers, get_layer_full, create_{text,shape,solid,null,adjustment,precomp,camera,light}_layer, duplicate_layer, delete_layer, set_layer, parent_layer, reorder_layer |
| Transforms (1) | set_transform — position, scale, rotation, anchor, opacity; 2D and 3D; optionally keyframed |
| Keyframes (6) | add_keyframe, remove_keyframe, get_keyframes, set_interpolation, set_temporal_ease, set_spatial_tangents |
| Expressions (4) | get_expression, set_expression, toggle_expression, clear_expression |
| Effects (6) | list_effects, add_effect, remove_effect, set_effect_param, set_effect_enabled, list_available_effects |
| Text (2) | set_text, add_text_animator |
| Shapes (3) | set_shape_path, add_shape_content, set_shape_property |
| Masks (3) | add_mask, set_mask, remove_mask |
| Markers (2) | add_marker, remove_marker |
| Vision (2) | screenshot_frame, screenshot_layer |
| Batch (1) | run_batch |
| Footage (2) | import_footage, create_footage_layer |
| Motion Graphics (1) | export_mogrt — export a comp as a .mogrt template for Premiere |
| Explore (2) | get_project_summary, find_layers |
| Raw (1) | run_jsx |
| House style (2) | get_house_style, set_house_style |
| Jobs (3) | await_job, get_job, cancel_job |
| Setup (3) | check_setup, setup_panel, init_project |
| Guidance (1) | ae_guide |
| Issues (3) | list_known_issues, log_issue, mark_issue_reported |
A few behave differently from the rest:
get_layer_fullreturns a layer's transforms with their keyframes and expressions, every effect with every parameter, masks, markers and visible bounds — in one call.run_batchruns many operations in a single pass and counts as one undo step. Long batches stream progress.screenshot_frameandscreenshot_layerare for occasional checks, not for reviewing motion frame by frame. On large comps,downsample: 2renders at half resolution.import_footagechecks what After Effects actually produced. An SVG whoseviewBoxasks for one shape and imports at another is a known After Effects bug that renders as nothing at all, with no error — so the import is refused and explained rather than left to fail silently later.export_mogrtwrites a Motion Graphics template for Premiere. It suppresses the modal dialogs that would otherwise sit there waiting for a click, and can set the thumbnail from any frame you choose, rather than the first one — which is usually black if the comp fades up.run_jsxruns arbitrary ExtendScript for anything the other tools don't cover.ae_guideis how the assistant reads its own working guidance — the same text this server publishes as MCP resources and ships to Claude Code as skills.
Start here: ask your assistant to check the After Effects setup. It reports which part is broken and what to do about it.
| Symptom | Cause and fix |
|---|---|
| "Cannot reach the After Effects panel" | After Effects isn't running, or the panel isn't installed. Ask it to set up After Effects; if AE was closed, just open it afterwards. |
| "The panel did not answer within 120 seconds" | Not the same thing. After Effects is busy — usually a long script, or a dialog waiting for a click behind another window. Wait a minute and check again before restarting anything; it normally comes back on its own. |
| "The After Effects panel is out of date" | The tools were updated but the panel wasn't. Ask it to update the panel, then restart AE. |
| "…updated on disk, but After Effects is still running the previous version" | The update landed; AE just hasn't restarted. Quit and reopen it. Updating again won't help. |
| Panel never loads, but setup looks correct | On macOS, reboot once. Some builds cache the Adobe setting until a restart. |
| A panel answers, but the setup check reports none installed | An older install is still serving. Remove it from the CEP extensions folder, reinstall, restart AE. |
| "No project folder to write to" | Your client didn't tell the server where it's working. Say which folder you want. |
| Style guide can't be saved | The After Effects project has never been saved. Save it, then try again. |
| You need the panel's own log | In After Effects: Window → Extensions → AE MCP Bridge. |
If your work legitimately takes longer. A heavy render or a deliberately long script can pass the limit honestly. Set AE_MCP_OP_TIMEOUT_MS in the server's environment to a larger number of milliseconds and it applies to every operation:
{
"mcpServers": {
"after-effects": {
"command": "npx",
"args": ["-y", "@engine-room/after-effects-mcp"],
"env": { "AE_MCP_OP_TIMEOUT_MS": "600000" }
}
}
}
The issue notebook. These tools have rough edges. When your assistant hits one and works out a way around it, it writes the problem and the fix into .ae-mcp/issues/ in your project folder — plain text files you can read or delete. The next session reads that notebook before guessing. The folder keeps itself out of version control.
Reporting a bug. If the problem looks like ours rather than yours, you'll be offered the chance to pass it on, or you can start it yourself with /report-ae-issue. It writes the report, shows it to you, and only sends it once you say yes. Nothing about your own work — comp names, file paths, clients — goes into it. Sending needs the GitHub CLI; without it you get a prefilled link to click.
macOS and Windows — the only two platforms After Effects runs on. Two things differ, and both are handled for you:
| macOS | Windows | |
|---|---|---|
| Panel location | ~/Library/Application Support/Adobe/CEP/extensions |
%APPDATA%\Adobe\CEP\extensions |
| Unsigned-panel setting | defaults preference |
HKCU\Software\Adobe\CSXS.* registry value |
macOS is the more exercised of the two; issue reports are welcome.
Signing. The macOS binaries in each release are signed and notarized by Engine Room, so they run without warnings. The Windows binary is unsigned — SmartScreen may warn on first run — because that needs a separate certificate. If you fork this project and build your own binaries, they'll be unsigned and Gatekeeper will refuse to launch them until you sign with your own Developer ID. The npx path has no such constraint.
Limitations.
- The After Effects panel is unsigned, so loading it requires Adobe's
PlayerDebugMode, which the setup step enables. This is Adobe's documented path for unsigned extensions. saveFrameToPngis community-known rather than officially documented. It works, but alpha edges can be imperfect on some comps.- A long synchronous loop in
run_jsxwill freeze the After Effects UI. Userun_batchfor bulk work. - Not covered: the render queue, footage import and replacement, and application preferences.
git clone https://github.com/Engine-Room-Games/after-effects-mcp.git
cd after-effects-mcp
npm install && npm run build
npm run install:panel
npm run doctor
| Command | Purpose |
|---|---|
make build |
Compile TypeScript, the guides and the ExtendScript bundle |
make jsx |
Rebuild bundle.jsx and hot-reload it into a running After Effects |
make watch |
TypeScript watch mode |
make doctor |
Diagnose the install |
make verify |
Build, check version strings and generated files agree, dry-run the package |
make artifacts |
Build the .mcpb and standalone binaries without releasing |
make release |
Bump the patch version, build and sign every artifact, tag, and publish |
make release 1.1.0 |
The same with an explicit version |
Adding a tool takes three edits: a zod schema in packages/shared/src/schemas.ts, a handler in the matching packages/jsx/*.jsx module, and a description in packages/mcp-server/src/tools/descriptions.ts. Registration is automatic.
Guidance prose is written once in packages/mcp-server/src/{guides,prompts}/*.md and generated into the MCP resources, the ae_guide tool, the server's instructions, and the Claude Code skills and commands. Never edit the generated copies.
Releases are cut from a Mac with a Developer ID certificate; see scripts/sign-and-notarize.sh for the environment it expects. See CLAUDE.md for the architecture, the ExtendScript conventions, and the known-fragile areas.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found