Brought to you by Brandkick - We grow brands like they're our own.
A Model Context Protocol server for Adobe After Effects. Enables AI assistants to control After Effects through a WebSocket-based CEP panel.
- Adobe After Effects 2021+ (versions 18.x - 26.x)
- Node.js 18+
- pnpm
git clone https://github.com/Brandkick/after-effects-mcp.git
cd after-effects-mcp
pnpm install
just setupAdd to Claude Code config (~/.claude.json):
{
"mcpServers": {
"aftereffects": {
"command": "node",
"args": ["/path/to/after-effects-mcp/build/index.js"]
}
}
}- Claude Code starts the MCP server automatically
- Open After Effects
- Open the panel: Window > Extensions > MCP Bridge
For exportCompFrame to work, create a JPEG output template in After Effects:
- Create any composition
- File > Export > Add to Render Queue
- Click "Output Module" settings
- Set Format to "JPEG Sequence"
- Set Quality to 50-70% (faster previews, smaller files)
- Optionally resize: check "Resize" and set to 50% or a fixed size like 960x540
- Click the template dropdown (top of dialog)
- Select "Save As New Template..."
- Name it exactly:
JPEG Sequence - Click OK
This only needs to be done once per After Effects installation.
| Tool | Description |
|---|---|
run-script |
Execute any command (see Commands below) |
getHelp |
List all available commands |
createComposition |
Create a new composition |
setLayerKeyframe |
Set a single keyframe |
setLayerKeyframes |
Set multiple keyframes (batch) |
setLayerExpression |
Apply expressions to properties |
setEffectKeyframes |
Animate effect properties (batch) |
importFootage |
Import files into project |
addToRenderQueue |
Queue composition for render |
exportCompFrame |
Export single frame as PNG for visual verification |
All commands can be called via run-script. Use getHelp to see full documentation.
getProjectInfo,newProject,saveProject,saveProjectAs,closeProjectcreateFolder,moveProjectItem,deleteProjectItemimportFootage,importPlaceholder,replaceFootage
listCompositions,getActiveComposition,createCompositionsetCompSettings- Modify duration, work area, frame rate, motion blur
createTextLayer,createShapeLayer,createSolidLayer,addLayerToCompgetLayerInfo,setLayerProperties- Name, transform, timingsetLayerFlags- Visibility, solo, shy, locked, motion blur, 3DdeleteLayer,duplicateLayer,reorderLayer,precomposeLayersetParentLayer,setTrackMattesetTextProperties- Font, size, color, justification
setLayerKeyframe,setLayerKeyframes(batch)setLayerExpressiongetKeyframes,deleteKeyframe,deleteKeyframes(batch)setKeyframeEasing,setKeyframesEasing(batch)copyKeyframes
applyEffect,applyEffectTemplatelistEffects,listAvailableEffects,getEffectPropertiessetEffectKeyframe,setEffectKeyframes(batch)
setLayerTime- In/out point, start time, stretchenableTimeRemapping,setTimeRemapaddMarker,getMarkers,removeMarker
createCamera,createLightsetCameraProperties,setLightPropertiesset3DLayer,setMaterialOptions
addMask,setMaskPath,setMaskProperties,deleteMaskaddShapePath,setShapePathVertices,addShapeModifier
addToRenderQueue,renderQueue,queueInAMEgetRenderQueueStatus,clearRenderQueueexportCompFrame- Visual verification
getSelection,setSelectionbeginUndoGroup,endUndoGroup,getUndoGroupStatusgetPropertyInfo,listFonts
| Resource | Description |
|---|---|
aftereffects://compositions |
List all compositions |
aftereffects://workflow-guide |
Visual verification workflow guide |
just setup # Build and install CEP panel with debug mode
just build # Build only
just start # Start MCP server (for testing)
just clean # Remove build directoryClaude Code <--stdio--> MCP Server <--WebSocket:8765--> CEP Panel <--CSInterface--> ExtendScript
See ARCHITECTURE.md for design principles.
after-effects-mcp/
├── src/
│ ├── index.ts # MCP server, tool definitions
│ ├── websocket-server.ts # WebSocket server
│ ├── logger.ts # Logging utility
│ ├── shared/
│ │ ├── commands.ts # Command registry (single source of truth)
│ │ └── config.ts # Configuration and timeouts
│ └── cep/ # CEP extension
│ ├── CSXS/manifest.xml
│ ├── index.html
│ ├── js/main.js # WebSocket client
│ └── jsx/modules/ # ExtendScript (modular)
│ ├── 00-polyfills.jsx
│ ├── 01-helpers.jsx
│ ├── 10-project.jsx
│ ├── 11-layer.jsx
│ ├── 12-keyframe.jsx
│ ├── 13-time.jsx
│ ├── 14-render.jsx
│ ├── 15-camera.jsx
│ ├── 16-mask.jsx
│ ├── 17-shape.jsx
│ ├── 18-selection.jsx
│ ├── 19-discovery.jsx
│ └── 99-dispatcher.jsx
├── scripts/
│ ├── install-cep.js
│ ├── build-jsx.ts # Concatenates JSX modules
│ └── generate-cep-config.ts
├── tests/
├── justfile
└── package.json
MIT
