@engine-room/after-effects-mcp 0.1.1 → 0.2.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 CHANGED
@@ -1,25 +1,90 @@
1
+ <div align="center">
2
+
3
+ <img src="https://raw.githubusercontent.com/Engine-Room-Games/after-effects-mcp/main/demo/engine-room-title.gif" alt="Engine Room — After Effects MCP" width="720">
4
+
1
5
  # After Effects MCP
2
6
 
3
- **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 editable afterwards like anything you would make by hand.
7
+ **Control Adobe After Effects with AI.**
4
8
 
5
- Works with Claude and other MCP clients, on macOS and Windows.
9
+ 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.
6
10
 
7
- Requires After Effects 2026 and [Node.js 20+](https://nodejs.org).
11
+ [![npm](https://img.shields.io/npm/v/@engine-room/after-effects-mcp?logo=npm&color=cb3837)](https://www.npmjs.com/package/@engine-room/after-effects-mcp)
12
+ [![CI](https://github.com/Engine-Room-Games/after-effects-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/Engine-Room-Games/after-effects-mcp/actions/workflows/ci.yml)
13
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](https://github.com/Engine-Room-Games/after-effects-mcp/blob/main/LICENSE)
14
+ [![After Effects 2026](https://img.shields.io/badge/After%20Effects-2026-9999ff?logo=adobeaftereffects&logoColor=white)](https://www.adobe.com/products/aftereffects.html)
15
+ ![Platforms](https://img.shields.io/badge/platform-macOS%20%7C%20Windows-lightgrey)
16
+ [![MCP](https://img.shields.io/badge/MCP-server-000000)](https://modelcontextprotocol.io)
8
17
 
9
- ## Getting started
18
+ Works with **Claude**, **Cursor**, **VS Code**, **Codex**, **Windsurf** and any other MCP client.
10
19
 
11
- ### 1. Create a project folder
20
+ </div>
12
21
 
13
- In a terminal:
22
+ ---
14
23
 
15
- ```bash
16
- npx @engine-room/after-effects-mcp init my-video
17
- cd my-video
18
- ```
24
+ ## ✨ What it builds
25
+
26
+ Six scenes from one quarterly-report sequence, each in a different visual style. Every layer, keyframe and effect below was built through these tools.
27
+
28
+ <table>
29
+ <tr>
30
+ <td width="50%" align="center">
31
+ <img src="https://raw.githubusercontent.com/Engine-Room-Games/after-effects-mcp/main/demo/sc01-title.gif" width="100%" alt="Dark title card: Global Macro Fund, Q3 FY2026 performance review, with a rule that draws in under the heading">
32
+ <br><sub><b>Title card</b> — engine dark</sub>
33
+ </td>
34
+ <td width="50%" align="center">
35
+ <img src="https://raw.githubusercontent.com/Engine-Room-Games/after-effects-mcp/main/demo/sc02-kpi-grid.gif" width="100%" alt="Editorial KPI grid: four figures counting up, with a risk-budget bar filling to 68 percent">
36
+ <br><sub><b>KPI grid</b> — editorial</sub>
37
+ </td>
38
+ </tr>
39
+ <tr>
40
+ <td width="50%" align="center">
41
+ <img src="https://raw.githubusercontent.com/Engine-Room-Games/after-effects-mcp/main/demo/sc03-nav-curve.gif" width="100%" alt="Amber CRT terminal: a NAV curve drawing on across twelve months with a typed command line above it">
42
+ <br><sub><b>NAV curve</b> — CRT terminal</sub>
43
+ </td>
44
+ <td width="50%" align="center">
45
+ <img src="https://raw.githubusercontent.com/Engine-Room-Games/after-effects-mcp/main/demo/sc04-allocation.gif" width="100%" alt="Brutalist allocation breakdown: a stacked colour bar splitting into six labelled sector cards">
46
+ <br><sub><b>Allocation</b> — brutalist</sub>
47
+ </td>
48
+ </tr>
49
+ <tr>
50
+ <td width="50%" align="center">
51
+ <img src="https://raw.githubusercontent.com/Engine-Room-Games/after-effects-mcp/main/demo/sc05-monthly-pl.gif" width="100%" alt="Aurora glass monthly profit and loss: twelve bars growing from a zero line over a soft gradient background">
52
+ <br><sub><b>Monthly P&amp;L</b> — aurora glass</sub>
53
+ </td>
54
+ <td width="50%" align="center">
55
+ <img src="https://raw.githubusercontent.com/Engine-Room-Games/after-effects-mcp/main/demo/sc06-outro.gif" width="100%" alt="Minimal print outro on off-white: a single large net return figure resolving into place">
56
+ <br><sub><b>Outro</b> — minimal print</sub>
57
+ </td>
58
+ </tr>
59
+ </table>
60
+
61
+ ---
62
+
63
+ ## 🚀 Getting started
64
+
65
+ Three steps, and you only do the first two once.
19
66
 
20
- Open that folder in your AI client. It contains everything the client needs to find the tools.
67
+ **You'll need:** After Effects 2026, on macOS or Windows.
21
68
 
22
- *If your client uses one global configuration file rather than per-folder settings* — Claude Desktop, for example — add this to it instead. On macOS it is `~/Library/Application Support/Claude/claude_desktop_config.json`:
69
+ ### 1️⃣ Install
70
+
71
+ Pick the row that matches how you work, and open it for the steps.
72
+
73
+ <details>
74
+ <summary><b>🖥️ Claude Desktop</b> — one click, nothing else to install</summary>
75
+
76
+ <br>
77
+
78
+ Download [the latest `.mcpb` file](https://github.com/Engine-Room-Games/after-effects-mcp/releases/latest) and open it. Claude Desktop takes it from there — no terminal, nothing else to install.
79
+
80
+ </details>
81
+
82
+ <details>
83
+ <summary><b>⚡ Cursor, VS Code, Claude Code, Codex, Windsurf</b> — if you have Node 22+</summary>
84
+
85
+ <br>
86
+
87
+ Add this to your client's MCP configuration:
23
88
 
24
89
  ```json
25
90
  {
@@ -32,49 +97,134 @@ Open that folder in your AI client. It contains everything the client needs to f
32
97
  }
33
98
  ```
34
99
 
35
- Restart the client afterwards.
100
+ VS Code uses a slightly different shape — put this in `.vscode/mcp.json`:
101
+
102
+ ```json
103
+ {
104
+ "servers": {
105
+ "after-effects": {
106
+ "type": "stdio",
107
+ "command": "npx",
108
+ "args": ["-y", "@engine-room/after-effects-mcp"]
109
+ }
110
+ }
111
+ }
112
+ ```
113
+
114
+ Restart your client afterwards.
115
+
116
+ </details>
36
117
 
37
- ### 2. Connect After Effects
118
+ <details>
119
+ <summary><b>📦 Any client, without Node</b> — a standalone download</summary>
38
120
 
39
- Open After Effects, then ask the AI:
121
+ <br>
122
+
123
+ Download the build for your machine from [the latest release](https://github.com/Engine-Room-Games/after-effects-mcp/releases/latest), unzip it anywhere, and point your client at the executable inside:
124
+
125
+ ```json
126
+ {
127
+ "mcpServers": {
128
+ "after-effects": {
129
+ "command": "/Users/you/Applications/after-effects-mcp/after-effects-mcp"
130
+ }
131
+ }
132
+ }
133
+ ```
134
+
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
+ </details>
140
+
141
+ <details>
142
+ <summary><b>🔌 Claude Code plugin</b> — adds skills and slash commands</summary>
143
+
144
+ <br>
145
+
146
+ This repository doubles as a plugin marketplace:
147
+
148
+ ```
149
+ /plugin marketplace add Engine-Room-Games/after-effects-mcp
150
+ /plugin install after-effects@engine-room
151
+ ```
152
+
153
+ </details>
154
+
155
+ ### 2️⃣ Set up After Effects
156
+
157
+ **Quit After Effects if it's open**, then ask your assistant:
40
158
 
41
159
  > Set up After Effects.
42
160
 
43
- It installs a small panel inside After Effects, then tells you to quit and reopen it. Ask it to check the setup again to confirm.
161
+ 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. 🎉
44
162
 
45
- This is a one-time step per machine. Until it is done, every tool reports that it cannot reach After Effects.
163
+ <sub>Prefer to leave After Effects open? That works too you'll just be asked to restart it at the end.</sub>
46
164
 
47
- ### 3. Start working
165
+ ### 3️⃣ Start animating
48
166
 
49
- With After Effects open and your project folder open in your client, describe what you want:
167
+ Open the project you want to work on, then say what you want:
50
168
 
51
169
  > Build a lower third that says Chapter One, sliding in from the left.
52
170
 
53
- The AI reads the current state of your comp, makes the change, and can take a screenshot to check the result.
171
+ 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.
172
+
173
+ Two commands worth knowing, in any client that supports MCP prompts:
174
+
175
+ | Command | What it does |
176
+ |---|---|
177
+ | `/init-after-effects` | 🧭 Walks you through setup and offers to capture your style |
178
+ | `/create-style-guide` | 🎨 Teaches it what your work should look like |
179
+
180
+ ---
181
+
182
+ ## 🎨 Your house style
54
183
 
55
- Day to day, this is the only step you repeat. Create a new folder when you start a new project.
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.
56
185
 
57
- ## Your house style
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.
58
187
 
59
- Each project folder contains `.claude/skills/house-style/SKILL.md`. Fill it in with your colours, fonts and motion defaults, and everything built afterwards follows them.
188
+ > ⚠️ Your project needs to have been saved at least once, or there's no folder to put it in.
60
189
 
61
- A quick way to write it: build one piece the way you want it, then ask the AI to read that comp and write it up in the house-style skill.
190
+ <details>
191
+ <summary><b>What goes in it, and project folders</b></summary>
62
192
 
63
- Keep one folder per client or series. To apply the same style everywhere instead, put the skill in `~/.claude/skills/house-style/`.
193
+ <br>
64
194
 
65
- Updating the tools never touches this file.
195
+ 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.
66
196
 
67
- ## Updating
197
+ 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:
68
198
 
69
- Two things to update: the tools, and the panel inside After Effects. The panel does not update on its own.
199
+ ```bash
200
+ npx @engine-room/after-effects-mcp init my-video
201
+ ```
70
202
 
71
- Restart your AI client — it picks up the current version of the tools. Then, with After Effects open, ask:
203
+ Updating the tools never touches either file.
72
204
 
73
- > Update the After Effects panel.
205
+ </details>
74
206
 
75
- It reinstalls the panel and tells you to restart After Effects. Ask it to check the setup afterwards, which reports whether the panel matches the current version.
207
+ ---
76
208
 
77
- ## Tools
209
+ ## 🔄 Updating
210
+
211
+ Two pieces update separately, and **the After Effects panel does not update itself**.
212
+
213
+ 1. **The tools** — reinstall the `.mcpb`, download the new standalone build, or just restart your client if you're on `npx`.
214
+ 2. **The panel** — quit After Effects, then say:
215
+
216
+ > Update the After Effects panel.
217
+
218
+ Reopen After Effects and it's running the new version.
219
+
220
+ 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.
221
+
222
+ ---
223
+
224
+ <details>
225
+ <summary><b>🧰 All 67 tools</b></summary>
226
+
227
+ <br>
78
228
 
79
229
  | Group | Tools |
80
230
  |---|---|
@@ -92,31 +242,52 @@ It reinstalls the panel and tells you to restart After Effects. Ask it to check
92
242
  | Batch (1) | `run_batch` |
93
243
  | Explore (2) | `get_project_summary`, `find_layers` |
94
244
  | Raw (1) | `run_jsx` |
245
+ | House style (2) | `get_house_style`, `set_house_style` |
95
246
  | Jobs (3) | `await_job`, `get_job`, `cancel_job` |
96
- | Setup (2) | `check_setup`, `setup_panel` |
247
+ | Setup (3) | `check_setup`, `setup_panel`, `init_project` |
248
+ | Guidance (1) | `ae_guide` |
249
+ | Issues (3) | `list_known_issues`, `log_issue`, `mark_issue_reported` |
250
+
251
+ A few behave differently from the rest:
252
+
253
+ - **`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.
254
+ - **`run_batch`** runs many operations in a single pass and counts as one undo step. Long batches stream progress.
255
+ - **`screenshot_frame`** and **`screenshot_layer`** are for occasional checks, not for reviewing motion frame by frame. On large comps, `downsample: 2` renders at half resolution.
256
+ - **`run_jsx`** runs arbitrary ExtendScript for anything the other tools don't cover.
257
+ - **`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.
97
258
 
98
- A few notes on the ones that behave differently from the rest:
259
+ </details>
99
260
 
100
- - `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.
101
- - `run_batch` runs many operations in a single pass and counts as one undo step. Long batches stream progress.
102
- - `screenshot_frame` and `screenshot_layer` are for occasional checks, not for reviewing motion frame by frame. On large comps, `downsample: 2` renders at half resolution, which is faster and keeps the image small.
103
- - `run_jsx` runs arbitrary ExtendScript for anything the other tools do not cover.
261
+ <details>
262
+ <summary><b>🩺 When something goes wrong</b></summary>
104
263
 
105
- ## Troubleshooting
264
+ <br>
106
265
 
107
- Ask the AI to check the After Effects setup. It reports which part is broken and what to do about it.
266
+ Start here: **ask your assistant to check the After Effects setup.** It reports which part is broken and what to do about it.
108
267
 
109
268
  | Symptom | Cause and fix |
110
269
  |---|---|
111
- | "Cannot reach the After Effects panel" | AE is not running, or the panel is not installed. Ask the AI to set up After Effects, then restart AE. |
112
- | Tools worked before, now fail inside AE | The tools were updated but the panel was not. Ask the AI to update the panel, then restart AE. |
113
- | Panel never loads, setup looks correct | On macOS, reboot once. Some builds cache the Adobe setting until a restart. |
114
- | A panel answers but the setup check reports none installed | An older install is still serving. Remove it from the CEP extensions folder, reinstall the panel, restart AE. |
115
- | Need the panel's own log | In AE: Window Extensions AE MCP Bridge. |
270
+ | "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. |
271
+ | "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. |
272
+ | "…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. |
273
+ | Panel never loads, but setup looks correct | On macOS, reboot once. Some builds cache the Adobe setting until a restart. |
274
+ | 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. |
275
+ | "No project folder to write to" | Your client didn't tell the server where it's working. Say which folder you want. |
276
+ | Style guide can't be saved | The After Effects project has never been saved. Save it, then try again. |
277
+ | You need the panel's own log | In After Effects: **Window → Extensions → AE MCP Bridge**. |
116
278
 
117
- ## Platforms
279
+ **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.
118
280
 
119
- macOS and Windows. Two things differ, and are handled for you:
281
+ **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.
282
+
283
+ </details>
284
+
285
+ <details>
286
+ <summary><b>💻 Platforms and limitations</b></summary>
287
+
288
+ <br>
289
+
290
+ macOS and Windows — the only two platforms After Effects runs on. Two things differ, and both are handled for you:
120
291
 
121
292
  | | macOS | Windows |
122
293
  |---|---|---|
@@ -125,14 +296,21 @@ macOS and Windows. Two things differ, and are handled for you:
125
296
 
126
297
  macOS is the more exercised of the two; [issue reports](https://github.com/Engine-Room-Games/after-effects-mcp/issues) are welcome.
127
298
 
128
- ## Limitations
299
+ **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.
300
+
301
+ **Limitations.**
129
302
 
130
- - The panel is unsigned, so loading it requires Adobe's `PlayerDebugMode`, which the setup step enables. This is Adobe's documented path for unsigned extensions.
303
+ - 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.
131
304
  - `saveFrameToPng` is community-known rather than officially documented. It works, but alpha edges can be imperfect on some comps.
132
305
  - A long synchronous loop in `run_jsx` will freeze the After Effects UI. Use `run_batch` for bulk work.
133
306
  - Not covered: the render queue, footage import and replacement, and application preferences.
134
307
 
135
- ## Development
308
+ </details>
309
+
310
+ <details>
311
+ <summary><b>🛠️ Development</b></summary>
312
+
313
+ <br>
136
314
 
137
315
  ```bash
138
316
  git clone https://github.com/Engine-Room-Games/after-effects-mcp.git
@@ -144,18 +322,25 @@ npm run doctor
144
322
 
145
323
  | Command | Purpose |
146
324
  |---|---|
147
- | `make build` | Compile TypeScript and the ExtendScript bundle |
325
+ | `make build` | Compile TypeScript, the guides and the ExtendScript bundle |
148
326
  | `make jsx` | Rebuild `bundle.jsx` and hot-reload it into a running After Effects |
149
327
  | `make watch` | TypeScript watch mode |
150
328
  | `make doctor` | Diagnose the install |
151
- | `make verify` | Build, check version strings agree, dry-run the package |
152
- | `make release` | Bump the patch version, tag, and publish |
153
- | `make release 1.1.0` | Set an explicit version, tag, and publish |
329
+ | `make verify` | Build, check version strings and generated files agree, dry-run the package |
330
+ | `make artifacts` | Build the `.mcpb` and standalone binaries without releasing |
331
+ | `make release` | Bump the patch version, build and sign every artifact, tag, and publish |
332
+ | `make release 1.1.0` | The same with an explicit version |
154
333
 
155
334
  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.
156
335
 
157
- See [CLAUDE.md](CLAUDE.md) for the architecture, the ExtendScript conventions, and the known-fragile areas.
336
+ 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.
337
+
338
+ 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, the ExtendScript conventions, and the known-fragile areas.
339
+
340
+ </details>
158
341
 
159
- ## License
342
+ ---
160
343
 
161
- [MIT](LICENSE)
344
+ <div align="center">
345
+ <sub>Built by <a href="https://github.com/Engine-Room-Games">Engine Room</a></sub>
346
+ </div>