after-effects-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AE_MCP_BRIDGE_DIR | No | Override the shared bridge directory (default: %LOCALAPPDATA%\ae-mcp-bridge on Windows, ~/Library/Logs/ae-mcp-bridge on macOS). Both the server and the bridge must use the same value. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| run-scriptC | Run a read-only script in After Effects |
| get-resultsA | Get results from the last script executed in After Effects |
| get-helpC | Get help on using the After Effects MCP integration |
| create-compositionC | Create a new composition in After Effects with specified parameters |
| create-adjustment-layerB | Create an adjustment layer in the specified composition (or active comp). |
| center-layersB | Center one layer, selected layers, or all layers in a composition. |
| get-layer-clip-framesA | Get a layer's clip start/end frames, source frame range, and duration in frames. |
| setLayerKeyframeB | Set a keyframe for a specific layer property at a given time. |
| setLayerExpressionB | Set or remove an expression for a specific layer property. |
| test-animationC | Test animation functionality in After Effects |
| apply-effectC | Apply an effect to a layer in After Effects |
| add-any-effectB | Add any After Effects effect to a layer by matchName or display name. |
| apply-effect-templateC | Apply a predefined effect template to a layer in After Effects |
| list-layer-effectsC | List effects on a layer, with optional recursive property details. |
| list-available-effectsA | List all effects available in this After Effects installation, with optional text filter. |
| set-effect-propertyC | Set or keyframe any property on an existing layer effect using name/index/path. |
| set-effect-keyframeB | Set an effect property keyframe with optional graph interpolation and easy-ease controls. |
| list-presetsA | List available After Effects .ffx presets from common or provided folders. |
| search-presetsB | Search After Effects .ffx presets by name or path. |
| apply-presetB | Apply an After Effects .ffx preset file to a layer. |
| mcp_aftereffects_get_effects_helpC | Get help on using After Effects effects |
| run-bridge-testB | Run the bridge test effects script to verify communication and apply test effects |
| remove-effectB | Remove one specific effect (or all effects) from a layer. |
| add-markerA | Add a marker to a layer or composition at a specified time. Markers can include a comment, label color, chapter name, URL and duration. |
| set-audio-levelsA | Set the audio levels (in dB) for an audio or AV layer. Supports per-channel control and optional keyframing. |
| get-audio-infoA | Get audio metadata, source file path, existing markers, and audio level keyframes for a layer in After Effects. |
| analyze-audio-waveformA | Analyze a WAV audio file to extract waveform amplitude data and detect peaks/transients. First call get-audio-info to retrieve the sourceFilePath, then pass it here. Returns normalized amplitude values (0-1) at evenly spaced time intervals plus an array of peak times where transients are detected. |
| add-markers-bulkA | Add multiple layer or composition markers at once. Use this after analyze-audio-waveform to place markers at detected peaks, or to add any set of markers in a single call. |
| check-bridgeA | Health check: verify the After Effects MCP Bridge panel is open and responding, report its version, the AE version, the shared bridge folder, and the open project/active comp. Run this FIRST when anything times out or behaves oddly. If it reports a version mismatch, re-run |
| create-text-layerA | Create a text layer with full Arabic / RTL support. Direction is auto-detected from the text by default (Arabic -> right-to-left, right-aligned), or force it with |
| create-cameraA | Create a camera layer in a composition. Select the comp by compName/compIndex (or active comp). |
| duplicate-layerA | Duplicate a layer in a composition, optionally renaming the copy. Target the layer by layerIndex or layerName. |
| delete-layerA | Delete a layer from a composition. Target the layer by layerIndex or layerName. |
| set-layer-maskA | Create or modify a mask on a layer. Provide the shape as maskRect (rectangle shorthand) OR maskPath (array of [x,y] vertices, >= 3). Omit maskIndex to add a new mask, or pass it to modify an existing one. |
| batch-set-layer-propertiesA | Set transform/visibility properties on MANY layers in one call. Each operation targets a layer by layerIndex or layerName and may set any of: threeDLayer, position, scale, rotation, opacity, blendMode, startTime, outPoint. Setting position clears its existing keyframes first. |
| set-composition-propertiesA | Change a composition's settings: duration, frameRate, and/or width+height. Select the comp by compName/compIndex (or active comp). |
| inspect-compA | Map a whole composition: its settings (size, fps, duration, work area) plus every layer with a useful summary - index, id, name, type, enabled/locked/shy/solo, 3D/adjustment/null flags, in/out/start, parent, blend mode, effect count, mask count, has-audio. Use this to navigate a comp and decide what to edit, then call inspect-layer for one layer's full detail. Select the comp by compName/compIndex, or leave both empty for the active comp. |
| inspect-layerA | Deeply inspect ONE layer so you can SEE its exact state before making precise edits: type, enabled/locked/shy/solo, in/out points, parent, blend mode, 3D flag; the full Transform group (each property's value + expression + keyframes with times/values/interpolation); all effects with their property values; masks (mode/inverted/opacity/feather/expansion); markers; source file/dimensions; and text (font/size/fill) for text layers. Select the comp by compName/compIndex (or active comp) and the layer by layerIndex or layerName. |
| execute-scriptA | Run ARBITRARY ExtendScript (the After Effects scripting DOM) inside After Effects and return the result. This is the most powerful tool: use it for anything the dedicated tools do not cover - masks, track mattes, parenting, 3D layers/cameras/lights, blending modes, precomposing, time remapping, layer styles, text animators, puppet pins, importing/replacing footage, batch edits across many layers, project-wide changes, etc. Your code runs as the body of a function, so use |
| see-frameA | SEE what a composition actually looks like: render one or more frames to images and return them so you can visually verify and self-correct (make a change, look, fix). Use this after edits to catch problems the DOM does not reveal - clipped or empty text, blown-out glow, off-frame layers, wrong colors, or Arabic/RTL text that did not shape correctly. Select the comp by name or 1-based index, or leave empty for the active comp. Returns downscaled preview images by default (maxWidth 512) to keep it fast and cheap; pass maxWidth 0 for a native-resolution still. Note: a still is a still - time-based effects like motion blur may look different from playback. |
| contact-sheetA | See a composition's whole timeline at a glance: render N frames sampled across the duration and composite them into ONE labeled thumbnail grid, returned as a single image. Use this to perceive motion, timing, and easing cheaply (one image instead of many). Select the comp by name or 1-based index, or leave empty for the active comp. |
| match-referenceA | Compare a composition against a reference image: renders the current frame, then returns a side-by-side (reference vs current) AND a difference map (bright where they differ) so you can see exactly WHERE the render deviates and converge on a match. Provide the reference as an on-disk image path. Select the comp by name or 1-based index, or leave empty for the active comp. |
| add-to-render-queueA | Add a composition to the After Effects render queue and configure its output. Select the comp by compName (most reliable), compIndex (1-based among compositions), or leave both empty to use the active comp. Templates must already exist in this AE installation. |
| render-queueA | Inspect or manage the After Effects render queue: list items with their status and output path, clear the whole queue, or remove a single item by index. |
| start-renderA | Render all QUEUED items in the After Effects render queue. IMPORTANT: this BLOCKS After Effects until the render finishes - the AE UI is unresponsive during the render. Add items first with add-to-render-queue. For long renders, raise timeoutMs; if the wait times out the render still continues in AE and you can check status later with render-queue. |
| render-aerenderA | Render a composition to a file in the BACKGROUND using aerender (a separate headless After Effects process). Unlike start-render, this does NOT freeze your After Effects UI - you can keep working. REQUIREMENT: the project must be saved to disk (aerender renders the saved .aep). By default it saves the open project first and renders it; pass projectPath to render a specific .aep instead. Returns immediately after starting unless you pass waitMs. Check progress with render-status. |
| render-statusA | Check background aerender renders started with render-aerender: which are still running, which finished, and the tail of each render log. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| list-compositions | List compositions in the current After Effects project |
| analyze-composition | |
| create-composition | Create a new composition with specified settings |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| compositions |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/a-y-ibrahim/after-effects-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server