After Effects MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AE_MCP_BRIDGE_DIR | No | Override both sides of the shared folder used by the bridge (defaults to %LOCALAPPDATA%\ae-mcp-bridge on Windows, or the appropriate platform-specific location). Useful when the default path conflicts with OneDrive or other sync tools. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| run-scriptB | Run a read-only script in After Effects |
| get-resultsA | Get results from the last script executed in After Effects |
| get-helpB | Get help on using the After Effects MCP integration |
| create-compositionC | Create a new composition in After Effects with specified parameters |
| create-adjustment-layerA | 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-effectC | 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-effectsA | 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-propertyB | 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-presetsB | List available After Effects .ffx presets from common or provided folders. |
| search-presetsC | Search After Effects .ffx presets by name or path. |
| apply-presetC | Apply an After Effects .ffx preset file to a layer. |
| mcp_aftereffects_get_effects_helpB | Get help on using After Effects effects |
| run-bridge-testA | Run the bridge test effects script to verify communication and apply test effects |
| remove-effectA | Remove one specific effect (or all effects) from a layer. |
| add-markerC | 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-levelsB | 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 an 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. Uncompressed PCM WAV is read natively; any other format (mp3, m4a/aac, ogg, flac, a video file's audio track, ...) is transcoded on the fly via ffmpeg if it is installed and on PATH (override its location with the AE_FFMPEG_PATH env var). |
| animate-to-audioA | Generate After Effects keyframes for a layer property directly from an audio file's waveform, in one call - no need to call analyze-audio-waveform and compute keyframes by hand first. Two modes: 'waveform' follows the amplitude envelope continuously (a VU-meter style effect - glow intensity, scale, or opacity riding the music), one keyframe per analyzed sample. 'peaks' pulses the property at each detected transient/beat and decays back to baseline (a beat-pop style effect - e.g. a logo scaling up on every kick). Accepts any audio format ffmpeg supports (mp3, m4a/aac, ogg, flac, ...) the same way analyze-audio-waveform does; uncompressed WAV needs no extra dependency. Targets a plain layer property (e.g. 'ADBE Opacity') by default, or an effect's property when effectIndex/effectName/effectMatchName is given. |
| animate-from-dataA | Generate After Effects keyframes for a layer property directly from an arbitrary numeric data series - stock prices, sensor readings, scores, survey results, or any other time-ordered numbers (not audio; see animate-to-audio for that). Provide either |
| 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 |
| localize-compA | Create a localized duplicate of a composition: swap in translated text for one or more text layers, auto-detecting Arabic and applying right-to-left direction/alignment (same logic as create-text-layer). Every other layer, effect, and animation is preserved unchanged because the whole composition is duplicated first. Text layers nested inside precompositions are reachable too via |
| 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-layerB | 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/omar-hesham/after-effect-mcp-with-claude'
If you have feedback or need assistance with the MCP directory API, please join our Discord server