/ Directory / Playground / after-effects-mcp
● Community Dakkshin ⚡ Instant

after-effects-mcp

by Dakkshin · Dakkshin/after-effects-mcp

Drive After Effects from chat — create comps, add layers, keyframe properties, set expressions — via an ExtendScript bridge panel.

after-effects-mcp by Dakkshin wraps Adobe AE's ExtendScript via an auto-run bridge panel. Once installed, the MCP can create compositions, add text/shapes/solids/cameras/nulls, set keyframes and expressions, and manipulate masks — all from MCP clients like Claude Code. AE 2022+ and Node 14+ required.

Why use it

Key features

Live Demo

What it looks like in practice

after-effects.replay ▶ ready
0/0

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "after-effects": {
      "command": "npx",
      "args": [
        "-y",
        "after-effects-mcp"
      ],
      "_inferred": true
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "after-effects": {
      "command": "npx",
      "args": [
        "-y",
        "after-effects-mcp"
      ],
      "_inferred": true
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "after-effects": {
      "command": "npx",
      "args": [
        "-y",
        "after-effects-mcp"
      ],
      "_inferred": true
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "after-effects": {
      "command": "npx",
      "args": [
        "-y",
        "after-effects-mcp"
      ],
      "_inferred": true
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "after-effects",
      "command": "npx",
      "args": [
        "-y",
        "after-effects-mcp"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "after-effects": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "after-effects-mcp"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add after-effects -- npx -y after-effects-mcp

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use after-effects-mcp

Generate template-based lower thirds from a CSV

👤 Motion graphics artists making 10+ lower thirds per episode ⏱ ~20 min intermediate

When to use: You have a CSV of names/titles and don't want to type each into a comp.

Prerequisites
  • After Effects 2022+ with the bridge panel installed — npm run install-bridge, then open mcp-bridge-auto.jsx and tick 'Auto-run commands'
  • MCP added via .mcp.json — Point to build/index.js and restart your client
Flow
  1. Create the base comp
    Create a composition 'LT_01' 1920x1080 29.97 5s black background.✓ Copied
    → Comp appears in AE
  2. Add name + title text layers
    Add text layer 'Dr. Jane Doe' bottom-left at (120, 900) 72pt. Add text layer 'Lead Scientist' below at (120, 960) 36pt.✓ Copied
    → Layers visible
  3. Add in/out animation with keyframes
    Set position keyframes: both text layers slide in from x=-400 between frames 0-15 and slide out from frames 120-135.✓ Copied
    → Animated lower third

Outcome: A working lower third template you can duplicate/edit per row in the CSV.

Pitfalls
  • Bridge panel isn't checked 'Auto-run' — commands queue forever — Open the panel and verify the checkbox every time AE relaunches
  • Too many commands at once causes AE UI freeze — Batch via batchSetLayerProperties rather than 100 individual calls
Combine with: filesystem

Build an expression-driven data visualization

👤 Motion designers doing infographics ⏱ ~20 min advanced

When to use: You want shapes that animate from a data array without keyframing each.

Flow
  1. Create base shape
    Create a shape layer 'bar_01' — rectangle, center-anchored, 80x0 at (200,900).✓ Copied
    → Shape at zero height
  2. Attach expression
    On bar_01 Scale.y, set expression that grows from 0 to [value] over 30 frames, eased.✓ Copied
    → Expression applied, plays correctly

Outcome: One shape + expression that you can replicate per data point via a loop.

Duplicate a base layer and tweak properties per copy

👤 Anyone replicating a design across N items ⏱ ~10 min beginner

When to use: You have one styled logo and need 12 variations positioned around a circle.

Flow
  1. Duplicate N times
    Duplicate layer 'logo_base' 12 times, name them logo_00 through logo_11.✓ Copied
    → 12 layers present
  2. Position each
    For each logo_NN, set position to a point on a 400px radius circle around (960,540), angle = NN * 30 degrees.✓ Copied
    → Ring of logos

Outcome: A cleanly arranged group in seconds.

Combinations

Pair with other MCPs for X10 leverage

after-effects + davinci-resolve

Build motion graphics in AE, finish edit in Resolve

Build a 6-second title card in After Effects, render to ~/renders/title.mov, then import it at the head of the active Resolve timeline.✓ Copied
after-effects + filesystem

Generate AE comps from data files on disk

Read ./data/speakers.csv. For each row, create a lower-third comp in AE with that speaker's name and title.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
create-composition name, width, height, duration, frameRate New comp free (local AE)
run-script script: ExtendScript Escape hatch for anything not covered by named tools free
get-results command_id: str Retrieve async result from bridge free
setLayerKeyframe layer, property, time, value Add a keyframe free
setLayerExpression layer, property, expression: str Bind a property to an expression free
setLayerProperties layer, properties: object Update transform, opacity, blend modes free
batchSetLayerProperties updates: [{layer, properties}] Avoid N round-trips free
getLayerInfo layer Inspect before modifying free
createCamera name, options? 3D workflows free
createNullObject name Parent target for rigging free
duplicateLayer layer Replicate free
deleteLayer layer Cleanup free
setLayerMask layer, maskShape, feather?, expansion? Add/modify a mask free

Cost & Limits

What this costs to run

API quota
None — local AE automation
Tokens per call
Tiny command strings in, tiny acks out
Monetary
Requires an Adobe After Effects license; MCP itself is free
Tip
Use batchSetLayerProperties to reduce round-trips on big scenes.

Security

Permissions, secrets, blast radius

Credential storage: None
Data egress: None — local bridge only
Never grant: Run arbitrary ExtendScript from untrusted prompts — `run-script` can execute anything AE can

Troubleshooting

Common errors and fixes

Commands queue but never execute

'Auto-run commands' in the bridge panel is unchecked. Tick it.

Verify: Look at mcp-bridge-auto.jsx panel
Module import error on MCP start

Node 14+ required; install deps with npm install in the MCP repo.

Verify: node --version
AE hangs during batch operations

Too many individual calls; switch to batchSetLayerProperties.

Expressions error 'value is undefined'

Expression referenced a layer/property that doesn't exist. Double-check spelling in setLayerExpression arg.

Verify: Open AE's expression error overlay

Alternatives

after-effects-mcp vs others

AlternativeWhen to use it insteadTradeoff
DaVinci Resolve MCPYou're doing edit/color, not motion graphicsDifferent stage of pipeline
Manual ExtendScript via .jsx filesYou want full control, no AINo chat interface

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills