AfterEffects-MCP-IMT
You can inspect, edit, render, and round-trip a live After Effects project through MCP tools, with safety checks and optional visual verification.
Read project, comp, layer, version, session context, and catalog info; batch comps or layers where supported.
Execute cataloged atomic operations with
ae_do, including argument validation,dryRunpreview, and one undo group per call; batch operations in onebatch.run.Render frames to PNG for visual checks, including color-managed output and comparison against an earlier frame.
Save the project or Save As, export the whole project to JSON, and import/rebuild from JSON with validation, dry-run, and optional clear-first.
List and dismiss modal After Effects dialogs that block scripting.
On macOS/AE 26, perform Object Matte by sight: draw lassos and add/subtract points, propagate over time, read back strokes, and render preview images with gap/person markers.
Use read-only inspection tools, operation discovery, and error/dialog diagnostics to work safely.
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., "@AfterEffects-MCP-IMT Add a glow effect to the main title layer"
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.

AfterEffects-MCP-IMT + SKILLS — After Effects for AI agents, built to be safe to hand over
Let an AI assistant (Claude Desktop, Cursor, ChatGPT, Google Antigravity or any MCP client) work inside your running Adobe After Effects: read the project, build and edit comps, layers, effects, keyframes, text, masks and expressions, render check frames — from plain language.
Every Adobe UI language · vision: mattes and time by sight · a large skills library · built for AI and generative features. AfterEffects-MCP-IMT works with every UI language Adobe ships, and the agent sees the frame: it renders frames and looks at them, draws Object Matte on what it sees — a lasso around each person to keep, ⊕ / ⊖ points for what the matte missed or caught — reads the strokes back and checks a preview that marks the gaps and every person it was told to keep (macOS); it syncs an AI-generated layer with the plate frame by frame — finds the matching frame for every frame, then cuts and shifts the layer so each lands on it — and checks every frame. After Effects' scripting has no API for Object Matte strokes, none of the other After Effects MCP servers we compared draws them, and Adobe's own AI Assistant for After Effects (beta) sees a single frame and writes scripts it does not run. It comes with a large skills library and is built for Adobe's AI and generative features — Roto Brush and Object Matte, Content-Aware Fill, generated image sources animated as native layers.
Two parts, made to work together:
The MCP server — ~270 small, safe operations behind two tools, with a dry run, one undo group per call, checkpoints, a project lock and honest errors; Object Matte by sight on macOS (
ae_object_matte_uidrives After Effects' own Object Matte tool — there is no API for its strokes).The skill (
skills/ae) — what the agent should know: the order of work, what a script cannot do in After Effects and how to get around it safely, step-by-step recipes (camera tracking, 3D content on footage, plug-in tests, render, motion graphics, masks), and plug-in knowledge files.
Built for localized After Effects, not just English. Most MCP servers and agent skills for Adobe apps assume the English UI — on a German, Japanese or Russian install their effect, template and menu names stop matching. AfterEffects-MCP-IMT addresses After Effects by its own identifiers (matchNames, command ids) and translates English template names through After Effects' own dictionaries, so the same agent and the same skill work on every UI language After Effects ships — verified live.
By Immersive Media Technologies.
macOS and Windows · After Effects 2024–2026 (26.5 verified on both, every UI language) · Node.js 22+ (none needed with the Claude Desktop extension — verified on macOS and on the Windows Store build of Claude Desktop).
This edits real After Effects projects and sends project contents (names, expressions, footage
paths, rendered previews) to the AI service you use. Work on a copy, check your provider's data
policy for NDA work, and keepAE_MCP_ENABLE_EVAL off unless you need raw scripting.
What you can ask for
"Point out anything broken in this project — missing footage, fonts, expression errors."
"Add a glow to every text layer in Intro, 30 % lighter than now, and show me frame 2.0."
"Import this Illustrator file and animate the title with the text-pop preset."
"Track the camera on this clip, put a 3D null on the floor and parent the logo to it." (skill)
"Here is a reference frame: build this lower third natively, with a Speed slider and the texts in Essential Graphics." (skill)
"Test this plug-in on a solid, dump its parameters, render a frame and tell me if it works." (skill)
The agent combines the operations itself and checks the project between steps; the skill keeps it on the rails.
Related MCP server: ae-mcp
Install
You need After Effects running on this computer and two permissions:
macOS — Automation: the first call asks whether your AI client may control After Effects (a refusal shows up later as error −1743: System Settings → Privacy & Security → Automation).
Scripting file access: After Effects → Settings → Scripting & Expressions → Allow Scripts to Write Files and Access Network.
Client | How |
| download |
| Add to Cursor — one click: Cursor opens and writes the config (or put the snippet below into |
| Settings → Customizations → Installed MCP Servers → View raw config → add the snippet below. |
| on the After Effects machine: |
Any MCP client | the snippet below in its |
{
"mcpServers": {
"aftereffects": {
"command": "npx",
"args": ["-y", "@immersive-media-technologies/aftereffects-mcp-imt"],
"env": { "MCP_TIMEOUT": "120000" }
}
}
}From source, with a live self-test (the route we use):
git clone https://github.com/Immersive-Media-Technologies/aftereffects-mcp-imt.git
cd aftereffects-mcp-imt && ./install.sh # Windows: .\install.ps1The installer checks After Effects and Node, builds, pings the running AE, names what is wrong (−1743, scripting access, Node path) and — after asking — writes the entry into Claude Desktop's, Cursor's and Antigravity's configs, backing them up.
If something does not connect
spawn npx ENOENTon macOS: GUI apps do not see your shellPATH— put the absolute path of a Node from Homebrew or nodejs.org in place ofnpx(nvm's Node is invisible to them).Set
MCP_TIMEOUTto120000: a cold After Effects start does not fit the default 30 s.A timeout with a
DIALOG_OPENmessage: After Effects is showing a dialog (save prompt, missing footage, a plug-in warning) — the error quotes it; the agent can close it withae_dialogsor you click it away. On macOS reading and closing dialogs needs Accessibility permission for the client app.Windows:
AE_MCP_EXEmust point toAfterFX.exewhen After Effects is not underC:\Program Files\Adobe. No supported GPU (a VM): dismiss the «System Compatibility Report» first. The.mcpbneeds no Node.js on the machine — Claude Desktop runs it on its built-in Node (verified with the Microsoft Store build on Windows 11 ARM). Server log:%LOCALAPPDATA%\Claude\logs\mcp-server-<name>.log; mailbox:%TEMP%\mcp-aftereffects.If your client caps tool output, raise it to 50 000 —
ae_project_infoon a real project is bigger than the usual 25 000.
How it stays safe
Dry run |
|
One undo group per call | every |
Checkpoints |
|
Project lock |
|
Read-only mode |
|
Honest errors | every failure has a code ( |
Nothing installed inside AE | the server talks to After Effects from outside ( |
What to forbid on the client side, if you gate at all: what Cmd+Z cannot revert — eval.run,
project.new / open / revert, the purge/consolidate operations, pref.*, render.start. The list
and a reference implementation are in docs/AGENT-POLICY.md.
How the agent sees
Adobe gives outside agents no picture: its scripting returns a project's structure, not its pixels; its own connector for AI assistants (Adobe for creativity) does not cover After Effects; and the After Effects AI Assistant (beta) sees «a single screenshot of a single frame» and does not run the scripts it writes.
AfterEffects-MCP-IMT gives the agent two kinds of sight. The model's: every frame it needs comes back as an image —
ae_render_frame for the comp, a solo render of one layer for a matte — and the model decides from
the picture what to do and where. The server's: where After Effects has no scripting API (Object
Matte strokes are mouse strokes in the Layer panel, nothing else), the server looks at After Effects
itself — it captures the window, finds the picture in the Layer panel, maps the model's picture
coordinates onto the screen and acts with real mouse events, then looks again to confirm.
Object Matte by sight (ae_object_matte_ui, macOS, AE 26):
The layer is rendered solo at the chosen time; the model answers in picture coordinates — a closed lasso around each person or object to keep, ⊕ points for what the matte missed, ⊖ for what it caught by mistake.
The server opens the layer, selects the Object Matte tool by its internal tool code (not by a hotkey or a localized name), draws lassos first and points after them, and finds the picture again after every stroke — After Effects shifts the view while it computes.
The strokes are read back from the effect; a preview renders the matte over the frame, marks the holes inside the subject, and checks every person the model named at head, body and feet.
The model fixes what the preview shows with more ⊕ / ⊖ strokes. For a matte that will cut an AI-generated layer, the edge is then pulled inside the silhouette (Shift Edge, Feather) by the effect's internal property names — After Effects shows two groups with the same labels.
Time by sight (recipes/layer-conform.md): an AI-generated layer drifts against the plate —
repeated, dropped and frozen frames. Frames of both are rendered and compared one by one, the best
match is chosen for every frame (scripts/conform.py refine-cuts, repeats and drops included), and
the layer is cut into pieces and each piece shifted so every frame lands on its match — cuts only:
a speed between two points would blend frames. Then every frame is checked again.
Everything else the agent reads as data:
ae_project_info/ae_comp_info/ae_layer_info— the full picture when needed.comp.snapshot→ edit →comp.diff— a cheap fingerprint before and after: which layers were added, removed or changed, and in what. Verification in a few dozen tokens.ae_render_frame— a PNG the agent can look at;compareWithan earlier frame answers "did the picture change, and where" without opening the image.property.sample— a camera's position / orientation / zoom at start, middle and end in one call;expression.validateandproject.audit— errors before the user hits play.
The skill
skills/ae/SKILL.md is a short router the agent reads first; it points to the one file the
task needs:
| the call budget (what made a live plug-in test cost 76 calls an hour — and how not to), the order of work (know the state → checkpoint → operate → verify by values, then by frame), and a table of what a script cannot do in After Effects with the safe workaround for each. |
| 3D Camera Tracker end to end: start the analysis from the menu, wait in one call, press «Create Camera» with a real click (a synthetic click crashed AE 26.5), set the ground plane, read the camera back as numbers. |
| put a splat, a model or a solid on tracked footage: null at the origin, parent or expressions, scale, and a script that measures slide in pixels instead of eyeballing it. |
| test a third-party plug-in: inspect the files before installing, apply on a solid, dump parameters by matchName, feed it a model layer, render, time it, write the verdict. |
| frames, segment renders, templates on a localized AE, where files go. |
| titles, lower thirds, logo stings, infographics as an editable AE comp: breakdown table, CONTROLS rig, real easing, Essential Graphics, a frame per phase. |
| masks and track mattes, Object Matte / Roto Brush, the Tracker panel and Mocha — what to script, what the user clicks. |
| sync an AI-generated layer with the plate before compositing: time drift → Time Remap keys, scale/shift → Transform per piece, colour → Levels, matte — measured on rendered frames by |
| one knowledge file per plug-in (matchNames, how it takes input, what is UI-only, quirks, timing). First: irrealix Gaussian Splatting. Template in |
| only the UI steps no script can do: hardware-level mouse events, window and display geometry, menu clicks by localized name, dialogs, a one-call wait for an analysis, screenshots, a frame strip, the slide measurement. No script duplicates a server operation. |
Use it as a skill in clients that support them (copy skills/ae into ~/.claude/skills/, or point
your system prompt at SKILL.md). The motion-graphics recipe routes to topic references from five
open MIT skill sets; they are fetched, not bundled — run skills/ae/fetch-vendor.sh once.
Tools
Tool | Purpose |
| discover the operations (24 categories) and run one — or several in one |
| read |
| one frame as PNG (viewer-accurate colour; |
| Object Matte by sight (macOS): lassos and ⊕ / ⊖ points from a rendered frame, strokes read back, a preview of gaps and people |
| save; whole-project JSON round trip |
| see and dismiss the modal dialogs that block scripting |
Full list with parameters: docs/TOOLS.md; the operations are listed by
ae_catalog at runtime.
Variable | Default | Meaning |
| auto-detect | the After Effects |
| off |
|
| off | path of the one |
| next to the project | where |
| off |
|
| all | comma-separated allow-list of operation categories |
| OS temp | where the IPC mailbox lives |
| client | set |
Why this one
There are several After Effects MCP servers; most stop at "the AI can run ExtendScript". This one is built around what an autonomous agent needs — and what the person handing over a project needs: a small stable tool surface (two tools instead of 270), a real dry run, undo-safe operations, checkpoints and a project lock, honest errors, an installer that says what is wrong, and a skill that teaches the agent the parts of After Effects no API covers — on any UI language After Effects ships, where most servers stop at the English one. Verified on AE 2026, macOS and Windows.
How the After Effects agents compare on vision — as of 2026-11-06:
AfterEffects-MCP-IMT | mcp-aftereffects (upstream) | Adobe AI Assistant (beta) | Filmit MCP (commercial) | |||||
Frames returned to the model | comp frames and solo layer renders | yes | yes | yes | yes, and window screenshots | yes | a single screenshot of a single frame | yes, when the model asks |
Vision: acting on what the agent sees | Object Matte drawn on what it sees — lassos, ⊕ / ⊖ points, strokes read back, a preview of gaps and people (macOS); a generated layer synced to the plate frame by frame | no | no | no | no — Roto Brush «only through screen control» | mask paths from a separate SAM app, not Object Matte | writes scripts, does not run them; no Roto Brush or Object Matte in its help | masks listed; no Roto Brush or Object Matte |
Releases
Each version is described on the
Releases page;
every change is in CHANGELOG.md. Upstream fixes are merged from
kumoproductions/mcp-aftereffects by topic.
v1.1.1 · 2026-11-06 — descriptions with vision next to the UI languages (Object Matte by sight, generated layers synced frame by frame), a dated vision comparison and a «How the agent sees» section.
v1.1.0 · 2026-11-06 —
ae_object_matte_ui: Object Matte by sight (macOS) — lassos and points on a rendered frame, strokes read back, a preview image that marks gaps and the listed people; layer conform recipe (cut-only time,conform.py1.2.0 withrefine-cuts, the matte edge inside the silhouette).v1.0.2 · 2026-10-28 — descriptions everywhere: every Adobe UI language, a large skills library, built for Adobe's generative features.
v1.0.1 · 2026-10-28 — product name AfterEffects-MCP-IMT (was AE-MCP-IMT); server name
aftereffects-mcp-imtlike the npm package; the MCP Registry entry also lists the npm package.v1.0.0 · 2026-10-28 — every After Effects UI language (matchNames, command ids, template names through After Effects' dictionaries; verified live), corrected command list, Apache-2.0.
v0.5.5 · 2026-10-11 — the After Effects skill (
skills/ae), checkpoints + revert, atomic batches, comp snapshot/diff, expression validation, project audit, dialog detection, project lock, frame compare.v0.4.4 · 2026-10-04 — Windows: Claude Desktop from the Microsoft Store.
v0.4.3 · 2026-10-04 — Windows verified (AfterFX.exe -r launch path).
v0.4.2 · 2026-10-01 — ChatGPT gateway fix; v0.4.1 — ChatGPT in one command; v0.4.0 — one-click installs (
.mcpb, Cursor, npm, installers).v0.3.5 · 2026-09-30 — the AE Motion skill; v0.3.0 — first public release of the IMT fork.
A note for contributors: the offline transport tests (npm test) expect After Effects to be
closed on macOS — with it open the live AE answers the stand-in requests and a few of them fail.
License
Apache License 2.0 — © Immersive Media Technologies.
Free to use, modify and distribute, commercial use included.
Attribution is required. Every redistribution of this software or of a work derived from it must carry the notice from
NOTICE:AfterEffects-MCP-IMT by Immersive Media Technologies — https://github.com/Immersive-Media-Technologies.No warranty.
Third-party notices (upstream MIT code): THIRD-PARTY-NOTICES.md.
Available Tools
13 toolsae_catalogOperation catalogARead-only
Discover available atomic operations for ae_do. Without args: all categories with their operation names. With a category: detailed params per operation. Only operations this server will actually execute are listed.
Inputs: category.
ae_comp_infoComp infoARead-only
Detailed comp info: size, fps, duration, work area, motion blur, layer summaries. Pass a comp name or item id — or an ARRAY of them to fetch several comps in one call.
Inputs: nameOrId (required).
ae_contextSession contextARead-only
Ambient context: project state, active comp, selected layers, item list, AE.* helpers, ES3 rules, and the undo contract (every call = one auto undo group). Call at session start; then rely on ae_do response context.
Inputs: no named parameters.
ae_dialogsAfter Effects dialogsARead-only
List the modal dialogs After Effects is showing, or dismiss one by its cancel action (what Escape does: a warning is acknowledged, a 'save changes?' question is cancelled — never answered for the user). Use after a DIALOG_OPEN / TIMEOUT error, or before a step known to pop a dialog. Windows + macOS; on macOS reading the text and dismissing need Accessibility permission for the app that runs this server.
Inputs: id, action.
ae_doExecute operationADestructive
Execute an atomic operation by name (from ae_catalog). Arguments are validated against the operation's declared parameters before anything reaches AE. Have more than one operation to run? Wrap them in ONE batch.run instead of several ae_do calls — read/verify steps (comp.info, layer.info, render.frame) can ride in the same batch. Every call is automatically wrapped in ONE undo group: a single Ctrl+Z (or project.undo) reverts the entire call, and a batch.run counts as one call. Never call app.beginUndoGroup/endUndoGroup in eval.run code — the wrapper already did. The exception is undo/redo itself (project.undo, command.execute id 16/2035): those run outside the group and cannot ride inside a batch.run. Response includes ambient context (active comp, selected layers, project state) at zero extra round trips. Example: ae_do({ operation: 'keyframe.add', args: { comp: 'Main', layer: 1, property: ['Transform','Position'], time: 2, value: [960,540] } })
Inputs: operation (required), args, dryRun, timeoutMs.
ae_layer_infoLayer infoARead-only
Full layer info: transform, effects, masks, text, shape contents, keyframes. layerIndex accepts one index, an ARRAY of indices, or 'all' — auditing a whole comp is one call. Set includeProperties=false to skip the property tree walk.
Inputs: layerIndex (required), compNameOrId (required), includeProperties.
ae_object_matte_uiObject Matte by sightA
Object Matte (AE 26) on a layer through After Effects' UI — macOS only; no script can create a selection. Give lassos and points in the pixels of a frame you looked at (comp pixels of an ae_render_frame by default, or layer source pixels with space:"layer"). A LASSO takes the subjects inside the outline — AE snaps it to their silhouettes — so one lasso can take a whole group of people at once: outline them generously, heads and feet with a margin. A POINT takes the subject under it as AE segments it — often only a garment or a torso in a crowd, so use points only for a lone, clearly separated subject. mode:"subtract" removes (Option). The tool opens the layer in the Layer panel at time (the base frame), makes the Object Matte tool active (checked through the active-tool code — Option+W is the Roto Brush group's shortcut and cycles its members), acts with real mouse events, reads back the strokes the effect recorded (error_px = where each landed vs where it was meant to), optionally propagates by stepping the comp time (propagate_to), and then RENDERS A PREVIEW and returns it as images: top — the matte over black, bottom — the frame with the excluded parts in red, with markers: cyan boxes on gaps between kept pieces (where a hidden, lying or partly visible person is usually left out) and green/yellow rings on the people points you listed. A part of a person, someone behind another or lying on the ground is a subject too: add it with a lasso that overlaps the neighbouring kept matte so the pieces merge. The result is never verified by the tool: look at the images and check every person. With only preview_times (no points, lassos or propagate_to) it renders the preview without touching the UI — use it to check any frames. The Layer panel must be visible and large enough for the whole picture.
Inputs: comp (required), time (required), layer (required), mode, +18 more.
ae_project_export_jsonExport project JSONA
Serialize the entire project to JSON (folders, comps, layers, keyframes, effects, shapes, markers, time remap, solids, file refs). Write to outPath or return inline.
Inputs: pretty, outPath.
ae_project_import_jsonImport project JSONADestructive
Rebuild the project from JSON (produced by ae_project_export_json). Supports clearFirst, dryRun (validate-only), skipValidation.
Inputs: json, dryRun, inPath, clearFirst, +1 more.
ae_project_infoProject infoARead-only
Project-level info: file path, dirty flag, all items with type/summary, active item. Start here.
Inputs: no named parameters.
ae_render_frameRender frameA
Render a single frame to PNG. Use to visually verify edits. The agent's 'eyes' — pair with mutations for a visual feedback loop. Headless and deterministic. In color-managed projects (workingSpace != None) the capture applies AE's own display transform via a transient OCIO Display Transform adjustment layer, and the PNG comes back viewer-accurate and sRGB-tagged. Where that layer cannot be used — read-only mode, an AE without the OCIO effect, or a failed capture calibration — the result falls back to a pure-math ACES conversion or to raw values with an explicit colorWarning; check colorPipeline / colorWarning on the response.
Inputs: time (required), outPath (required), compNameOrId (required), compareWith, +2 more.
ae_save_projectSave projectADestructive
Save the project. Pass path for Save As.
Inputs: path.
ae_version_infoVersion infoARead-only
AE version, build, capabilities (saveFrameToPng, app.effects, Socket). Call at session start to know what APIs are available.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
Most tools have clearly distinct scopes: info tools operate at different levels, ae_catalog discovers operations, ae_do executes them, and specialized tools handle rendering, saving, import/export, dialogs, and object matte UI. There is minor overlap between ae_context, ae_project_info, and ae_comp_info, each offering project/comp state, but descriptions generally clarify when to use which.
All tools share a consistent ae_ prefix and snake_case convention. Most names are readable and predictable, though the pattern mixes noun_info forms (ae_project_info, ae_layer_info) with verb_noun forms (ae_render_frame, ae_save_project) and generic names (ae_do, ae_catalog, ae_dialogs).
The 13-tool set is well scoped for an After Effects automation server. It balances specialized high-level tools with discovery/execution meta-tools, avoiding both a thin surface and an unwieldy catalog of one-off operations.
The surface covers core lifecycle needs: project/comp/layer inspection, rendering, saving, JSON export/import, dialog handling, and an extensible atomic operation system via ae_catalog and ae_do. Minor gaps may exist for direct project open/create or explicit undo/redo, but these are likely reachable through ae_do operations or workarounds.
Maintenance
Related MCP Connectors
AI video editor your agent can drive: plan scenes, edit a multi-track timeline, and render MP4s.
Build and run visual creative-production workflows from your AI agent.
AI video editor for agents and humans: timeline, captions, color, audio and generation as MCP tools.
Generate and edit images, video, voice, lip-sync and 3D models from your AI agent.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to control Adobe After Effects to create videos programmatically, with commands for comps, layers, effects, and rendering.6 npm26MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to operate Adobe After Effects with the dexterity of an editor: reading projects, creating and rigging layers, setting real velocity curves, animating text, building native SVG-based shapes, applying effects, expressions, masks, and viewing render snapshots to verify results.1718 npm1MIT
- AlicenseAqualityAmaintenanceEnables AI agents to inspect and control a live Adobe After Effects session, including reading active composition and layer data and evaluating arbitrary ExtendScript.4MIT
- AlicenseAqualityCmaintenanceEnables AI agents to connect to Adobe After Effects locally, inspecting projects, comps, and layers, discovering and executing a catalog of operations, rendering frames, and saving projects, with on-demand skill-based guidance.121MIT