Dsrupt 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., "@Dsrupt After Effects MCP What's in my current After Effects project?"
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.
Dsrupt After Effects MCP
A local MCP server that connects an AI agent to Adobe After Effects, with the agent's working knowledge served by the same server as skills.
Desktop agent / MCP client (Codex, Claude Code, Claude Desktop, Cursor, ...)
| stdio
Dsrupt After Effects MCP (Node)
| file mailbox + OS scripting (AppleScript / AfterFX.exe -r)
Adobe After EffectsTwo surfaces, one process:
Tools: inspect the project, comps and layers; discover the 197 catalogued operations and run them; render a frame to check the result; save.
Skills:
ae_get_skillserves an index, then one skill, then one reference, so the agent loads only what the current task needs instead of carrying every guide in context.
The runtime derives from the MIT-licensed kumoproductions/mcp-aftereffects; see UPSTREAM.md. Windows and macOS, After Effects 2024 to 2026, Node 24+. No panel or plugin is installed in After Effects.
This tool edits the open After Effects project. Anything the agent reads (comp names, expressions, footage paths) may be sent to the AI service behind your client. Try it on a copy first, and keep
AE_MCP_READONLY=1for inspection-only sessions.
Install
git clone https://github.com/Dsrupt-Technologies/dsrupt-after-effects-mcp.git
cd dsrupt-after-effects-mcp
npm ci --ignore-scripts
npm run build
node dist/cli/index.js doctordoctor checks Node and npm, the built server, the skill bundle, the mailbox directory,
and where After Effects is installed. It does not launch After Effects. Then register the
server with your client:
node dist/cli/index.js install-codex # Codex CLI
node dist/cli/index.js install-claude-code # Claude Code
node dist/cli/index.js config # JSON block for Claude Desktop, Cursor, others
node dist/cli/index.js install-skill # entry skill for Codex/Claude Code sessionsinstall-skill copies a small dsrupt-after-effects skill into ~/.agents/skills and
~/.claude/skills, so an agent that has not been told about the server can still find it
(in Codex or ChatGPT desktop: /dsrupt-after-effects). Every real instruction stays on the
server behind ae_get_skill.
Platform notes: Windows, macOS, and MCP clients.
Related MCP server: aftr
Verify the connection
Installation and a working After Effects link are different facts, so they are checked separately:
node dist/cli/index.js doctor # 1. Node/npm, files, skills, AE location
node dist/cli/index.js check-ae # 2. server starts, 3. tools advertised, 4. skills served,
# 5. After Effects answers ae_project_info (read-only)check-ae only talks to an After Effects that is already running, so it never boots one by
surprise; pass --allow-launch to change that. The sixth state, whether your agent's
current conversation can call the tools, is only visible from inside the client: ask it to
run ae_get_skill({}) and then ae_project_info({}).
First calls from the agent
ae_get_skill({}): the skill index.ae_get_skill({ name: "ae-clean-rig" }): the entry skill. It routes to references such asreferences/sliders.mdand to companion skills.ae_project_info({}): what is open. This is the live connection test.ae_catalog({}), thenae_catalog({ category: "layer" }): exact operations and parameters.ae_do({ operation: "layer.create_text", args: { comp: "Main", text: "Hello", name: "Title" } }).ae_render_frame({ compNameOrId: "Main", time: 1, outPath: "/tmp/check.png" }), then look at it.ae_save_project({}).
The twelve tools are listed in docs/TOOLS.md. Operations are not tools;
the agent discovers them through ae_catalog at runtime.
Skills
Skill | Load it for |
| Every task. Inspect first, build native and editable, animate sparsely, verify by rendering, save where intended. Routes to nine references: construction, reference motion, typography, effects, media, editable rigs, sliders, validation, scripting. |
| Timing, easing, anticipation and settle, reveals, expressions, motion proof. |
| Interface layouts: static design first, tokens, component anatomy. |
| Parallax, 3D layers and cameras, shadows, glass surfaces. |
| Reusable A-to-B transitions with a progress control. |
| How the transport works, policy switches, error codes, recovery after timeouts. |
Skills live in skills/, are described by skills/manifest.json, and are verified by hash
before being served. See docs/SKILLS.md to edit or add one.
Safety
Every
ae_docall is one undo group.batch.runis one undo group too, but not a transaction: earlier steps stay applied if a later one fails.A
TIMEOUTmay mean the change already applied. The skills tell the agent to inspect before retrying a mutation.AE_MCP_READONLY=1withholds saving and importing and limitsae_doto read operations.AE_MCP_ALLOW_CATEGORIESnarrows the catalog. Arbitrary ExtendScript (eval.run) is off unlessAE_MCP_ENABLE_EVAL=1.Operations that change After Effects application settings (not the project) require
confirm: true.The connection test and the doctor never mutate the project. The live smoke test (
npm run smoke) refuses to run in anything but a fresh, empty, unsaved project.
Environment
Variable | Meaning |
| After Effects to use: |
| Extra folders to probe for an install ( |
|
|
| Comma-separated operation categories to allow. |
|
|
| Move the request/response mailbox (keep it per-user). |
Without an override, After Effects is found in this order: a running After Effects process,
then installed copies under Program Files, the Windows registry, Start Menu shortcuts,
/Applications, ~/Applications, a Spotlight bundle-id query, and DSRUPT_AE_SEARCH_DIRS.
Newest year wins; locate-ae shows every candidate and what was probed.
Development
npm run check # skills check, typecheck, lint, format, JSX ES3 lint, docs drift
npm run test:offline # 300+ tests, no After Effects needed
npm test # adds the e2e suites, which self-skip without a running AE
npm run smoke # live demo in a fresh empty project; writes runtime/dsrupt-smoke/
npm run test:package # pack, install to a temp prefix, start the server from thereInternals, error codes and how to add an operation are in CONTRIBUTING.md. The comparison with the upstream project and the reference fork is in docs/COMPARISON.md; what has actually been verified, and where, is in docs/VALIDATION.md.
License
MIT. Copyright (c) 2026 kumo.productions, Inc. (upstream runtime) and Dsrupt Technologies (modifications). Adobe and Adobe After Effects are trademarks of Adobe Inc.; this project is independent and not affiliated with or endorsed by Adobe.
Available Tools
12 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_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, timeoutMs.
ae_get_skillAfter Effects skillsARead-only
Read the bundled After Effects skills, one document at a time, without touching After Effects or the network. No arguments: the index (skill names, one-line descriptions, reference lists). { name }: that skill's entry document. { name, reference }: one reference listed by the entry. Start every AE task with ae_get_skill({ name: 'ae-clean-rig' }); load references only when the task needs them.
Inputs: name, reference.
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_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), colorManaged, +1 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 12 tools
Most tools are clearly scoped by AE object level (project/comp/layer) or function (render, save, import/export). ae_context and ae_project_info overlap somewhat in ambient/project state, and ae_version_info/ae_context both ask to be called at session start, but descriptions distinguish them sufficiently.
The ae_ prefix and snake_case are consistent, with an info suffix for read-only inspectors and verb_noun names for actions. The generic ae_do and noun-only ae_context/ae_catalog deviate slightly from a strict verb_noun pattern, but the convention is still predictable.
12 tools is well within the ideal range and each tool serves a meaningful role in the AE workflow. The count feels appropriately scoped without redundancy or bloat.
The set covers inspection at project/comp/layer levels, mutation through ae_do, visual verification via ae_render_frame, persistence, and full JSON round-tripping. Minor gaps like an explicit undo/redo tool or direct project lifecycle operations exist, but they are largely addressable through ae_do/operations.
Maintenance
Related MCP Connectors
Build and run visual creative-production workflows from your AI agent.
Connect AI assistants to your approved computer for files, commands, browser and desktop tasks.
Generate and edit images, video, voice, lip-sync and 3D models from your AI agent.
AI video editor your agent can drive: plan scenes, edit a multi-track timeline, and render MP4s.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to control Adobe After Effects for project inspection, composition creation, and layer manipulation via a hardened bridge panel.-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to control Adobe After Effects to create videos programmatically, with commands for comps, layers, effects, and rendering.13 npm27MIT
- 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
- 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.85MIT