@engine-room/after-effects-mcp 0.5.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +126 -185
- package/bin/server.js +12567 -2478
- package/package.json +8 -8
- package/panel/CSXS/manifest.xml +44 -4
- package/panel/META-INF/signatures.xml +182 -0
- package/panel/client/csinterface.js +32 -0
- package/panel/client/main.js +522 -632
- package/panel/client/panelhash.js +79 -0
- package/panel/client/status.html +27 -0
- package/panel/client/status.js +112 -0
- package/panel/jsx/bundle.jsx +9032 -2393
- package/panel/mimetype +1 -0
- package/panel/node_modules/ws/LICENSE +20 -0
- package/panel/node_modules/ws/README.md +548 -0
- package/panel/node_modules/ws/browser.js +8 -0
- package/panel/node_modules/ws/index.js +22 -0
- package/panel/node_modules/ws/lib/buffer-util.js +131 -0
- package/panel/node_modules/ws/lib/constants.js +19 -0
- package/panel/node_modules/ws/lib/event-target.js +292 -0
- package/panel/node_modules/ws/lib/extension.js +203 -0
- package/panel/node_modules/ws/lib/limiter.js +55 -0
- package/panel/node_modules/ws/lib/permessage-deflate.js +530 -0
- package/panel/node_modules/ws/lib/receiver.js +743 -0
- package/panel/node_modules/ws/lib/sender.js +607 -0
- package/panel/node_modules/ws/lib/stream.js +161 -0
- package/panel/node_modules/ws/lib/subprotocol.js +62 -0
- package/panel/node_modules/ws/lib/validation.js +152 -0
- package/panel/node_modules/ws/lib/websocket-server.js +562 -0
- package/panel/node_modules/ws/lib/websocket.js +1421 -0
- package/panel/node_modules/ws/package.json +74 -0
- package/panel/node_modules/ws/wrapper.mjs +21 -0
- package/panel/package.json +2 -2
- package/panel/client/contactsheet.js +0 -347
- package/panel/client/framecache.js +0 -98
- package/panel/client/framereader.js +0 -248
- package/panel/client/mogrt.js +0 -328
- package/panel/client/pngcodec.js +0 -524
package/README.md
CHANGED
|
@@ -6,24 +6,32 @@
|
|
|
6
6
|
|
|
7
7
|
**Control Adobe After Effects with AI.**
|
|
8
8
|
|
|
9
|
-
Describe the animation you want
|
|
9
|
+
Describe the animation you want 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.
|
|
10
10
|
|
|
11
11
|
[](https://www.npmjs.com/package/@engine-room/after-effects-mcp)
|
|
12
12
|
[](https://github.com/Engine-Room-Games/after-effects-mcp/actions/workflows/ci.yml)
|
|
13
13
|
[](https://github.com/Engine-Room-Games/after-effects-mcp/blob/main/LICENSE)
|
|
14
|
-
[](https://www.adobe.com/products/aftereffects.html)
|
|
15
15
|

|
|
16
|
-
[](https://github.com/sponsors/migus88)
|
|
19
17
|
|
|
20
18
|
</div>
|
|
21
19
|
|
|
22
|
-
|
|
20
|
+
## What you can do with it
|
|
21
|
+
|
|
22
|
+
Talk to your AI assistant the way you'd brief a colleague:
|
|
23
|
+
|
|
24
|
+
> Build a lower third that says *Chapter One*, sliding in from the left.
|
|
25
|
+
|
|
26
|
+
> Make the logo pop in with a little overshoot, then hold for two seconds.
|
|
27
|
+
|
|
28
|
+
> Every layer in this comp should ease in 4 frames later than the one above it.
|
|
23
29
|
|
|
24
|
-
|
|
30
|
+
> Render the main comp into the renders folder.
|
|
25
31
|
|
|
26
|
-
|
|
32
|
+
It reads your comp before it changes anything, makes the change as ordinary After Effects work — keyframes you can drag, effects you can dial in — and can take a screenshot to check its own result. It can also learn your house style, export Motion Graphics templates for Premiere, place sound cues, and render in the background.
|
|
33
|
+
|
|
34
|
+
Six scenes from one sequence, each in a different style — every layer, keyframe and effect built through these tools:
|
|
27
35
|
|
|
28
36
|
<table>
|
|
29
37
|
<tr>
|
|
@@ -58,33 +66,51 @@ Six scenes from one quarterly-report sequence, each in a different visual style.
|
|
|
58
66
|
</tr>
|
|
59
67
|
</table>
|
|
60
68
|
|
|
61
|
-
|
|
69
|
+
## What you need
|
|
70
|
+
|
|
71
|
+
- **After Effects on macOS or Windows.** Tested on After Effects 2026. The panel accepts 2022 or later, but older versions haven't been tested yet.
|
|
72
|
+
- **An AI app that runs tools on your own computer.** The tools talk to After Effects directly on your machine, so they work in any app that can start an MCP server locally: **Claude Desktop, Claude Code, Cursor, VS Code, Codex, Windsurf** and the like.
|
|
62
73
|
|
|
63
|
-
|
|
74
|
+
**Claude in a web browser (claude.ai) and ChatGPT — on the web or in its app — can't use them.** Those connect only to tools hosted on the internet, which have no way to reach the After Effects on your computer.
|
|
75
|
+
|
|
76
|
+
## Getting started
|
|
64
77
|
|
|
65
78
|
Three steps, and you only do the first two once.
|
|
66
79
|
|
|
67
|
-
|
|
80
|
+
### 1. Install the tools
|
|
68
81
|
|
|
69
|
-
|
|
82
|
+
Pick the one that matches your app.
|
|
70
83
|
|
|
71
|
-
|
|
84
|
+
**Claude Desktop** — the easy one. Download the `.mcpb` file from [the latest release](https://github.com/Engine-Room-Games/after-effects-mcp/releases/latest) and open it. Claude Desktop does the rest; there's nothing else to install.
|
|
72
85
|
|
|
73
86
|
<details>
|
|
74
|
-
<summary><b
|
|
87
|
+
<summary><b>Claude Code</b></summary>
|
|
75
88
|
|
|
76
89
|
<br>
|
|
77
90
|
|
|
78
|
-
|
|
91
|
+
Either install the plugin, which also adds skills and slash commands:
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
/plugin marketplace add Engine-Room-Games/after-effects-mcp
|
|
95
|
+
/plugin install after-effects@engine-room
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
or add just the server (needs Node 22 or later):
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
claude mcp add --scope user after-effects -- npx -y @engine-room/after-effects-mcp
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
`--scope user` makes it available in every folder you open Claude Code in, not only the current one.
|
|
79
105
|
|
|
80
106
|
</details>
|
|
81
107
|
|
|
82
108
|
<details>
|
|
83
|
-
<summary><b
|
|
109
|
+
<summary><b>Cursor, Windsurf and other apps</b> (needs Node 22 or later)</summary>
|
|
84
110
|
|
|
85
111
|
<br>
|
|
86
112
|
|
|
87
|
-
Add this to your
|
|
113
|
+
Add this to your app's MCP configuration, then restart the app. In Cursor that's `~/.cursor/mcp.json` (or `.cursor/mcp.json` inside one project); in Windsurf, open its MCP settings and add it there.
|
|
88
114
|
|
|
89
115
|
```json
|
|
90
116
|
{
|
|
@@ -97,7 +123,14 @@ Add this to your client's MCP configuration:
|
|
|
97
123
|
}
|
|
98
124
|
```
|
|
99
125
|
|
|
100
|
-
|
|
126
|
+
</details>
|
|
127
|
+
|
|
128
|
+
<details>
|
|
129
|
+
<summary><b>VS Code</b> (needs Node 22 or later)</summary>
|
|
130
|
+
|
|
131
|
+
<br>
|
|
132
|
+
|
|
133
|
+
Put this in `.vscode/mcp.json`, then restart VS Code:
|
|
101
134
|
|
|
102
135
|
```json
|
|
103
136
|
{
|
|
@@ -111,179 +144,116 @@ VS Code uses a slightly different shape — put this in `.vscode/mcp.json`:
|
|
|
111
144
|
}
|
|
112
145
|
```
|
|
113
146
|
|
|
114
|
-
Restart your client afterwards.
|
|
115
|
-
|
|
116
147
|
</details>
|
|
117
148
|
|
|
118
149
|
<details>
|
|
119
|
-
<summary><b
|
|
150
|
+
<summary><b>Codex</b> (needs Node 22 or later)</summary>
|
|
120
151
|
|
|
121
152
|
<br>
|
|
122
153
|
|
|
123
|
-
|
|
154
|
+
Add this to `~/.codex/config.toml`:
|
|
124
155
|
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
"command": "/Users/you/Applications/after-effects-mcp/after-effects-mcp"
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
156
|
+
```toml
|
|
157
|
+
[mcp_servers.after-effects]
|
|
158
|
+
command = "npx"
|
|
159
|
+
args = ["-y", "@engine-room/after-effects-mcp"]
|
|
133
160
|
```
|
|
134
161
|
|
|
135
|
-
Keep the unzipped folder together — the After Effects panel lives next to the executable.
|
|
136
|
-
|
|
137
|
-
The macOS builds are signed and notarized. The Windows build is unsigned, so SmartScreen may warn the first time you run it.
|
|
138
|
-
|
|
139
162
|
</details>
|
|
140
163
|
|
|
141
164
|
<details>
|
|
142
|
-
<summary><b
|
|
165
|
+
<summary><b>Any app, without Node</b> — a standalone download</summary>
|
|
143
166
|
|
|
144
167
|
<br>
|
|
145
168
|
|
|
146
|
-
|
|
169
|
+
From [the latest release](https://github.com/Engine-Room-Games/after-effects-mcp/releases/latest), download the zip for your machine — `macos-arm64` (Apple silicon), `macos-x64` (Intel Mac) or `windows-x64` — unzip it anywhere, and point your app at the executable inside:
|
|
147
170
|
|
|
171
|
+
```json
|
|
172
|
+
{
|
|
173
|
+
"mcpServers": {
|
|
174
|
+
"after-effects": {
|
|
175
|
+
"command": "/Users/you/Applications/after-effects-mcp-0.5.2-macos-arm64/after-effects-mcp"
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
148
179
|
```
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
```
|
|
180
|
+
|
|
181
|
+
The unzipped folder is named `after-effects-mcp-<version>-<machine>`, so use the name yours actually has. On Windows the executable is `after-effects-mcp.exe`. 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.
|
|
152
182
|
|
|
153
183
|
</details>
|
|
154
184
|
|
|
155
|
-
### 2
|
|
185
|
+
### 2. Set up After Effects
|
|
156
186
|
|
|
157
187
|
**Quit After Effects if it's open**, then ask your assistant:
|
|
158
188
|
|
|
159
189
|
> Set up After Effects.
|
|
160
190
|
|
|
161
|
-
It installs a small panel into After Effects, which is how the tools talk to it.
|
|
162
|
-
|
|
163
|
-
<sub>Prefer to leave After Effects open? That works too — you'll just be asked to restart it at the end.</sub>
|
|
191
|
+
It installs a small panel into After Effects, which is how the tools talk to it. When it's done, open After Effects and you're ready.
|
|
164
192
|
|
|
165
|
-
|
|
193
|
+
**After Effects must be closed while the panel installs.** If it's open, the installation won't work — quit After Effects first, then install, then reopen it. The same goes for updating the panel later.
|
|
166
194
|
|
|
167
|
-
|
|
195
|
+
You never have to open the panel yourself; it starts whenever After Effects does.
|
|
168
196
|
|
|
169
|
-
|
|
197
|
+
### 3. Start animating
|
|
170
198
|
|
|
171
|
-
|
|
199
|
+
Open your project and say what you want. Two prompts are worth knowing, in any app that supports MCP prompts:
|
|
172
200
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
| Command | What it does |
|
|
201
|
+
| Prompt | What it does |
|
|
176
202
|
|---|---|
|
|
177
|
-
| `/init-after-effects` |
|
|
178
|
-
| `/create-style-guide` |
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
## 🎨 Your house style
|
|
183
|
-
|
|
184
|
-
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.
|
|
185
|
-
|
|
186
|
-
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.
|
|
187
|
-
|
|
188
|
-
> ⚠️ Your project needs to have been saved at least once, or there's no folder to put it in.
|
|
189
|
-
|
|
190
|
-
<details>
|
|
191
|
-
<summary><b>What goes in it, and project folders</b></summary>
|
|
203
|
+
| `/init-after-effects` | Walks you through setup and offers to capture your style |
|
|
204
|
+
| `/create-style-guide` | Teaches it what your work should look like |
|
|
192
205
|
|
|
193
|
-
|
|
206
|
+
**One thing to know:** while a dialog box is open in After Effects, nothing else can happen there, so the tools wait and eventually say the panel didn't answer in time. Close the dialog and the work finishes on its own — don't ask for it again, or it gets done twice.
|
|
194
207
|
|
|
195
|
-
|
|
208
|
+
## Your house style
|
|
196
209
|
|
|
197
|
-
|
|
210
|
+
Ask for a style guide and point at a comp you already like. Your colours, fonts, sizes and timing — including how your existing animation eases and staggers — get read off it and saved as `house-style.md` **next to your `.aep`**. Everything built afterwards follows it. It's plain markdown, travels with the project, and works in every app. (The project needs to have been saved once, so there's a folder to put it in.)
|
|
198
211
|
|
|
199
|
-
|
|
200
|
-
npx @engine-room/after-effects-mcp init my-video
|
|
201
|
-
```
|
|
212
|
+
The best style guides are specific — `#131521 at 92% opacity`, not "dark and clean" — and the most useful lines are the rules: "never put text directly on footage", "keep total runtime under 8 seconds".
|
|
202
213
|
|
|
203
|
-
Updating the tools never touches either file.
|
|
214
|
+
You can also ask it to **set up a project folder** for a video, series or client: a brief your assistant reads, a `renders/` folder, and whichever rules file your app reads (`AGENTS.md`, `CLAUDE.md`, `.cursor/rules/` and so on). From a terminal it's `npx @engine-room/after-effects-mcp init my-video`. Updating the tools never touches either file.
|
|
204
215
|
|
|
205
|
-
|
|
216
|
+
## Updating
|
|
206
217
|
|
|
207
|
-
|
|
218
|
+
Two pieces update separately, and **the panel inside After Effects does not update itself**:
|
|
208
219
|
|
|
209
|
-
|
|
220
|
+
1. **The tools** — reinstall the `.mcpb`, download the new standalone build, or just restart your app if you use `npx`. On the Claude Code plugin, run `/plugin marketplace update engine-room` and `/plugin update after-effects@engine-room`, then restart Claude Code.
|
|
221
|
+
2. **The panel** — quit After Effects, ask your assistant to *update the After Effects panel*, then reopen After Effects.
|
|
210
222
|
|
|
211
|
-
|
|
223
|
+
Forget the second step and nothing breaks quietly: your next request stops with a plain explanation of what to do.
|
|
212
224
|
|
|
213
|
-
|
|
214
|
-
2. **The panel** — quit After Effects, then say:
|
|
225
|
+
Afterwards, run `/absorb-release` in your project folder (other apps list it as `absorb-release` in their prompt menu). It tidies up any workarounds earlier sessions wrote into your project notes that the new version makes unnecessary.
|
|
215
226
|
|
|
216
|
-
|
|
227
|
+
## Safety and privacy
|
|
217
228
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
---
|
|
223
|
-
|
|
224
|
-
<details>
|
|
225
|
-
<summary><b>🧰 All 76 tools</b></summary>
|
|
229
|
+
- **Only your own computer can talk to After Effects.** The panel listens on `127.0.0.1` — your machine, never your network — and every request must carry a secret key the panel makes fresh each time After Effects starts. Without it, nothing runs.
|
|
230
|
+
- **Changes are ordinary undo steps.** Cmd/Ctrl+Z works on what your assistant did, just like on your own edits. In apps that support it, deleting a comp, purging unused footage or reverting a comp asks you first.
|
|
231
|
+
- **What your assistant sees goes to the AI model you use** — layer names, text, keyframes, file paths in your project, and screenshots of your comps. If a project is confidential, treat a session with it like pasting it into a chat.
|
|
226
232
|
|
|
227
|
-
|
|
233
|
+
Two optional switches limit what it can do. Both are off unless you turn them on.
|
|
228
234
|
|
|
229
|
-
|
|
|
235
|
+
| Switch | What it does |
|
|
230
236
|
|---|---|
|
|
231
|
-
|
|
|
232
|
-
|
|
|
233
|
-
| Transforms (1) | `set_transform` — position, scale, rotation, anchor, opacity; 2D and 3D; optionally keyframed |
|
|
234
|
-
| Keyframes (6) | `add_keyframe`, `remove_keyframe`, `get_keyframes`, `set_interpolation`, `set_temporal_ease`, `set_spatial_tangents` |
|
|
235
|
-
| Expressions (4) | `get_expression`, `set_expression`, `toggle_expression`, `clear_expression` |
|
|
236
|
-
| Effects (6) | `list_effects`, `add_effect`, `remove_effect`, `set_effect_param`, `set_effect_enabled`, `list_available_effects` |
|
|
237
|
-
| Text (2) | `set_text`, `add_text_animator` |
|
|
238
|
-
| Shapes (3) | `set_shape_path`, `add_shape_content`, `set_shape_property` |
|
|
239
|
-
| Masks (3) | `add_mask`, `set_mask`, `remove_mask` |
|
|
240
|
-
| Markers (2) | `add_marker`, `remove_marker` |
|
|
241
|
-
| Vision (2) | `screenshot_frame`, `screenshot_layer` |
|
|
242
|
-
| Batch (1) | `run_batch` |
|
|
243
|
-
| Footage (3) | `import_footage`, `create_footage_layer`, `purge_unused_footage` — remove the solids (or any footage) no comp uses, with a dry run |
|
|
244
|
-
| Audio (1) | `place_audio_cues` — a whole cue list placed as one undo step |
|
|
245
|
-
| Motion Graphics (1) | `export_mogrt` — export a comp as a `.mogrt` template for Premiere |
|
|
246
|
-
| Explore (2) | `get_project_summary`, `find_layers` |
|
|
247
|
-
| Raw (1) | `run_jsx` |
|
|
248
|
-
| House style (2) | `get_house_style`, `set_house_style` |
|
|
249
|
-
| Jobs (3) | `await_job`, `get_job`, `cancel_job` |
|
|
250
|
-
| Setup (3) | `check_setup`, `setup_panel`, `init_project` |
|
|
251
|
-
| Guidance (1) | `ae_guide` |
|
|
252
|
-
| Issues (4) | `list_known_issues`, `log_issue`, `mark_issue_reported`, `archive_issue` |
|
|
253
|
-
|
|
254
|
-
A few behave differently from the rest:
|
|
255
|
-
|
|
256
|
-
- **`get_layer_full`** returns a layer's transforms with their keyframes and expressions, every effect with every parameter, masks, markers and visible bounds — in one call.
|
|
257
|
-
- **`run_batch`** runs many operations in a single pass. Up to 500 of them that is one undo step; past that it runs in the background, streams progress, and lands as one undo step per chunk — After Effects will not keep a single undo group across a long job, so the result tells the assistant exactly how many steps the work took. Ask for a single undo step at any size with `singleUndo`, at the cost of freezing After Effects until it finishes.
|
|
258
|
-
- **`screenshot_frame`** and **`screenshot_layer`** are for occasional checks, not for reviewing motion frame by frame. To judge movement, `screenshot_frame` takes several times at once and returns them as one labelled contact sheet — one image instead of several. On large comps it renders at reduced resolution unless you ask otherwise.
|
|
259
|
-
- **`import_footage`** checks what After Effects actually produced. An SVG whose `viewBox` asks 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.
|
|
260
|
-
- **`export_mogrt`** writes 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.
|
|
261
|
-
- **`snapshot_comp`** and **`diff_comp`** answer "what did that change actually do" without reading the whole comp back — the assistant fingerprints it before the change and asks afterwards what moved.
|
|
262
|
-
- **`run_jsx`** runs arbitrary ExtendScript for anything the other tools don't cover. Long scripts can be run from a file so they never fill up the conversation.
|
|
263
|
-
- **`ae_guide`** is how the assistant reads its own working guidance — the same text this server publishes as MCP resources and ships to Claude Code as skills.
|
|
264
|
-
|
|
265
|
-
</details>
|
|
237
|
+
| **Read-only mode** | Your assistant can look at your project — list comps and layers, read keyframes, take screenshots — but every tool that changes something is removed. |
|
|
238
|
+
| **Turn off running scripts** | Removes `run_jsx`, the tool that lets your assistant write and run its own After Effects scripts. Everything else still works, rendering included; only jobs no other tool covers (like replacing or relinking footage) become impossible. |
|
|
266
239
|
|
|
267
240
|
<details>
|
|
268
|
-
<summary><b
|
|
241
|
+
<summary><b>How to turn them on</b></summary>
|
|
269
242
|
|
|
270
243
|
<br>
|
|
271
244
|
|
|
272
|
-
|
|
245
|
+
**Claude Desktop:** Settings → Extensions → After Effects, then tick *Read-only mode* or *Turn off running scripts (run_jsx)*.
|
|
273
246
|
|
|
274
|
-
|
|
247
|
+
**Everywhere else:** add the setting to the configuration from step 1, then restart your app. Use either one on its own; read-only mode already includes the second.
|
|
248
|
+
|
|
249
|
+
| App | How |
|
|
275
250
|
|---|---|
|
|
276
|
-
|
|
|
277
|
-
|
|
|
278
|
-
|
|
|
279
|
-
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
| "No project folder to write to" | Your client didn't tell the server where it's working. Say which folder you want. |
|
|
283
|
-
| Style guide can't be saved | The After Effects project has never been saved. Save it, then try again. |
|
|
284
|
-
| You need the panel's own log | In After Effects: **Window → Extensions → AE MCP Bridge**. |
|
|
285
|
-
|
|
286
|
-
**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:
|
|
251
|
+
| Cursor, Windsurf and other `mcpServers` apps | Add `"env": { "AE_MCP_READ_ONLY": "1", "AE_MCP_DISABLE_RUN_JSX": "1" }` next to `"command"` and `"args"`. |
|
|
252
|
+
| VS Code | The same `"env"` block, inside the `after-effects` entry under `"servers"` in `.vscode/mcp.json`. |
|
|
253
|
+
| Codex | Add a section to `~/.codex/config.toml`: <br>`[mcp_servers.after-effects.env]`<br>`AE_MCP_READ_ONLY = "1"` |
|
|
254
|
+
| Claude Code | Re-add the server with the setting: `claude mcp remove after-effects`, then <br>`claude mcp add --scope user --env AE_MCP_READ_ONLY=1 after-effects -- npx -y @engine-room/after-effects-mcp` |
|
|
255
|
+
|
|
256
|
+
For example, in an `mcpServers` app:
|
|
287
257
|
|
|
288
258
|
```json
|
|
289
259
|
{
|
|
@@ -291,47 +261,35 @@ Start here: **ask your assistant to check the After Effects setup.** It reports
|
|
|
291
261
|
"after-effects": {
|
|
292
262
|
"command": "npx",
|
|
293
263
|
"args": ["-y", "@engine-room/after-effects-mcp"],
|
|
294
|
-
"env": {
|
|
264
|
+
"env": {
|
|
265
|
+
"AE_MCP_READ_ONLY": "1",
|
|
266
|
+
"AE_MCP_DISABLE_RUN_JSX": "1"
|
|
267
|
+
}
|
|
295
268
|
}
|
|
296
269
|
}
|
|
297
270
|
}
|
|
298
271
|
```
|
|
299
272
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
**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](https://cli.github.com); without it you get a prefilled link to click.
|
|
273
|
+
A switched-off tool simply isn't there, so your assistant won't try it and will tell you when a request needs it. The switches limit this connection only — they don't lock After Effects, and another assistant connected without them still has every tool.
|
|
303
274
|
|
|
304
275
|
</details>
|
|
305
276
|
|
|
306
|
-
|
|
307
|
-
<summary><b>💻 Platforms and limitations</b></summary>
|
|
308
|
-
|
|
309
|
-
<br>
|
|
310
|
-
|
|
311
|
-
macOS and Windows — the only two platforms After Effects runs on. Two things differ, and both are handled for you:
|
|
312
|
-
|
|
313
|
-
| | macOS | Windows |
|
|
314
|
-
|---|---|---|
|
|
315
|
-
| Panel location | `~/Library/Application Support/Adobe/CEP/extensions` | `%APPDATA%\Adobe\CEP\extensions` |
|
|
316
|
-
| Unsigned-panel setting | `defaults` preference | `HKCU\Software\Adobe\CSXS.*` registry value |
|
|
277
|
+
## If something goes wrong
|
|
317
278
|
|
|
318
|
-
|
|
279
|
+
**Ask your assistant to check the After Effects setup.** It finds which part is broken and tells you what to do, in plain words.
|
|
319
280
|
|
|
320
|
-
|
|
281
|
+
For specific error messages, longer time limits, the issue notebook and how to report a bug, see [Troubleshooting](https://github.com/Engine-Room-Games/after-effects-mcp/blob/main/docs/troubleshooting.md). Bug reports are welcome in [the issues](https://github.com/Engine-Room-Games/after-effects-mcp/issues) — macOS is the more tested of the two platforms, so Windows reports especially.
|
|
321
282
|
|
|
322
|
-
|
|
283
|
+
## Good to know
|
|
323
284
|
|
|
324
|
-
-
|
|
325
|
-
-
|
|
326
|
-
- A long
|
|
327
|
-
-
|
|
285
|
+
- **What's not covered:** replacing or relinking footage (importing it is covered), and After Effects' own preferences.
|
|
286
|
+
- **Screenshots are for spot checks.** Alpha edges can be slightly imperfect on some comps.
|
|
287
|
+
- **A long loop in a custom script freezes After Effects** until it finishes. Bulk work goes through `run_batch`, which doesn't.
|
|
288
|
+
- **The panel is signed**, so After Effects loads it without Adobe's `PlayerDebugMode` setting. Setup still turns that setting on as a fallback; it applies to your whole user account and lets Adobe apps load *any* unsigned panel. A panel installed from a git checkout is unsigned and does need it.
|
|
289
|
+
- **Removing it all:** see [Uninstalling](https://github.com/Engine-Room-Games/after-effects-mcp/blob/main/docs/uninstalling.md), which also covers turning the debug setting back off.
|
|
290
|
+
- **Every tool, listed:** see [the tools](https://github.com/Engine-Room-Games/after-effects-mcp/blob/main/docs/tools.md) — 89 of them, plus the extras some apps show, like an interactive comp timeline.
|
|
328
291
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
<details>
|
|
332
|
-
<summary><b>🛠️ Development</b></summary>
|
|
333
|
-
|
|
334
|
-
<br>
|
|
292
|
+
## For developers
|
|
335
293
|
|
|
336
294
|
```bash
|
|
337
295
|
git clone https://github.com/Engine-Room-Games/after-effects-mcp.git
|
|
@@ -341,27 +299,10 @@ npm run install:panel
|
|
|
341
299
|
npm run doctor
|
|
342
300
|
```
|
|
343
301
|
|
|
344
|
-
|
|
345
|
-
|---|---|
|
|
346
|
-
| `make build` | Compile TypeScript, the guides and the ExtendScript bundle |
|
|
347
|
-
| `make jsx` | Rebuild `bundle.jsx` and hot-reload it into a running After Effects |
|
|
348
|
-
| `make watch` | TypeScript watch mode |
|
|
349
|
-
| `make doctor` | Diagnose the install |
|
|
350
|
-
| `make verify` | Build, check version strings and generated files agree, dry-run the package |
|
|
351
|
-
| `make artifacts` | Build the `.mcpb` and standalone binaries without releasing |
|
|
352
|
-
| `make release` | Bump the patch version, build and sign every artifact, tag, and publish |
|
|
353
|
-
| `make release 1.1.0` | The same with an explicit version |
|
|
354
|
-
|
|
355
|
-
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.
|
|
356
|
-
|
|
357
|
-
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.
|
|
358
|
-
|
|
359
|
-
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](https://github.com/Engine-Room-Games/after-effects-mcp/blob/main/CLAUDE.md) for the architecture and the ExtendScript conventions, and [docs/](https://github.com/Engine-Room-Games/after-effects-mcp/tree/main/docs) for the known-fragile areas and the verification recipes.
|
|
360
|
-
|
|
361
|
-
</details>
|
|
302
|
+
`make help` lists the rest (`make jsx` hot-reloads the ExtendScript bundle into a running After Effects; `make release` builds, signs and publishes). Start with [CLAUDE.md](https://github.com/Engine-Room-Games/after-effects-mcp/blob/main/CLAUDE.md) for the architecture, the conventions and how to add a tool, and [docs/](https://github.com/Engine-Room-Games/after-effects-mcp/tree/main/docs) for the fragile areas and the live verification recipes. Agent guidance is written once in `packages/mcp-server/src/{guides,prompts}/*.md` and generated everywhere else — never edit the generated copies. Forks that build their own binaries get unsigned ones; macOS will refuse them until they're signed with your own Developer ID.
|
|
362
303
|
|
|
363
304
|
---
|
|
364
305
|
|
|
365
306
|
<div align="center">
|
|
366
|
-
<sub>Built by <a href="https://github.com/Engine-Room-Games">Engine Room</a></sub>
|
|
307
|
+
<sub>Built by <a href="https://github.com/Engine-Room-Games">Engine Room</a> · free and open source — if it saves you time, <a href="https://github.com/sponsors/migus88">sponsor its development</a></sub>
|
|
367
308
|
</div>
|