Skip to main content
Glama

MCP After Effects

An MCP (Model Context Protocol) server that lets Claude (or any MCP client) control Adobe After Effects via natural language.

How It Works

Claude ──MCP──► mcp-after-effects ──ExtendScript──► Adobe After Effects

The server bridges Claude to AE using one of three mechanisms (selected automatically based on your OS):

Mode

OS

Mechanism

applescript

macOS

osascript → AE's DoScript

com

Windows

VBScript COM automation

aerender

Any

AE command-line renderer (aerender)


Related MCP server: after-effects-mcp

Prerequisites

  • Node.js ≥ 18

  • Adobe After Effects (any recent version — CC 2019+)

  • After Effects must be open for applescript/com modes, or aerender must be on your PATH for aerender mode


Installation

npm install
npm run build

Configuration

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "after-effects": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-ae/dist/index.js"],
      "env": {
        "AE_BRIDGE_MODE": "auto"
      }
    }
  }
}

Environment Variables

Variable

Default

Description

AE_BRIDGE_MODE

auto

Bridge mode: auto, applescript, com, or aerender

AE_RENDER_PATH

(OS default)

Full path to aerender binary when using aerender mode

aerender Paths (defaults)

  • macOS: /Applications/Adobe After Effects 2024/aerender

  • Windows: C:\Program Files\Adobe\Adobe After Effects 2024\Support Files\aerender.exe


Available MCP Tools

Project & Composition

Tool

Description

ae_get_project_info

Get info about the open project

ae_list_compositions

List all compositions

ae_get_composition_layers

List all layers in a composition

ae_create_composition

Create a new composition

Layers

Tool

Description

ae_add_text_layer

Add a text layer

ae_add_solid_layer

Add a solid color layer

ae_add_null_layer

Add a null/control layer

ae_import_file

Import a file (video, image, audio, AEP)

Animation

Tool

Description

ae_set_layer_property

Set a layer property value (with or without keyframe)

ae_add_keyframe

Add a keyframe to a layer property

ae_apply_effect

Apply an effect to a layer by match name

Render & Save

Tool

Description

ae_add_to_render_queue

Add a composition to the render queue

ae_start_render

Start rendering all queued items

ae_save_project

Save the current project

Advanced

Tool

Description

ae_run_script

Execute raw ExtendScript in After Effects


Example Prompts

Once connected to Claude, you can say things like:

  • "List all compositions in my After Effects project"

  • "Create a 1920×1080 composition called 'Intro' at 24fps, 5 seconds long"

  • "Add a white text layer saying 'Hello World' at 72px font size, centered"

  • "Set the opacity of layer 'Title' to 0 at t=0 and 100 at t=1 second"

  • "Apply a Gaussian Blur to the background layer"

  • "Add the 'Main' composition to the render queue and save to /tmp/output.mp4"

  • "Run this ExtendScript: app.project.activeItem.name"


Property Paths

Use dot notation for nested properties with ae_set_layer_property and ae_add_keyframe:

Transform.Position       → [x, y]
Transform.Scale          → [x, y] (percentage, e.g. [100, 100])
Transform.Rotation       → degrees
Transform.Opacity        → 0-100
Transform.Anchor Point   → [x, y]

Common Effect Match Names

Effect

Match Name

Gaussian Blur

ADBE Gaussian Blur 2

Drop Shadow

ADBE Drop Shadow

Glow

ADBE Glo2

Hue/Saturation

ADBE HUE SATURATION

Levels

ADBE Levels2

Fractal Noise

ADBE Fractal Noise

Linear Wipe

ADBE Linear Wipe

Fill

ADBE Fill

Find all match names by running: ae_run_script with:

var e = app.effects;
var r = [];
for (var i=0; i<e.length; i++) r.push(e[i].matchName);
return r.join("\n");

Development

npm run dev    # Run with tsx (no build step)
npm run build  # Compile TypeScript → dist/
npm run watch  # Watch mode

Architecture

src/
├── index.ts              # MCP server, tool definitions
├── ae-bridge.ts          # OS-level AE communication
└── scripts/
    └── common-effects.ts # Effect names & property path constants

Available Tools

72 tools
ae_add_cameraB

Add a camera layer to a composition

Inputs: comp_name (required), preset, camera_name.

ae_add_expressionC

Add an expression to a layer property

Inputs: comp_name (required), expression (required), layer_name (required), property_path (required).

ae_add_keyframeC

Add a keyframe to a layer property at a specific time

Inputs: time (required), value (required), comp_name (required), layer_name (required), +1 more.

ae_add_keyframe_sequenceB

Add multiple keyframes at once to a layer property

Inputs: comp_name (required), keyframes (required), layer_name (required), property_path (required).

ae_add_lightB

Add a light layer to a composition

Inputs: comp_name (required), color_b, color_g, color_r, +3 more.

ae_add_null_layerA

Add a null (control) layer to a composition

Inputs: comp_name (required), layer_name (required).

ae_add_shape_layerA

Add a shape layer with a rectangle or ellipse to a composition

Inputs: comp_name (required), layer_name (required), width, fill_b, +8 more.

ae_add_solid_layerC

Add a solid color layer to a composition

Inputs: comp_name (required), layer_name (required), width, height, +3 more.

ae_add_text_layerB

Add a text layer to a composition

Inputs: text (required), comp_name (required), color_b, color_g, +4 more.

ae_add_to_render_queueC

Add a composition to the After Effects render queue

Inputs: comp_name (required), output_path (required).

ae_apply_effectB

Apply an effect to a layer using its match name (e.g. 'ADBE Gaussian Blur 2')

Inputs: comp_name (required), layer_name (required), effect_match_name (required).

ae_batch_apply_effectB

Apply an effect to all layers (or filtered by type) in a composition

Inputs: comp_name (required), effect_match_name (required), skip_locked, layer_type_filter.

ae_batch_create_compositionsB

Create multiple compositions based on a common size/fps template

Inputs: compositions (required), width, height, frame_rate, +1 more.

ae_batch_importB

Import multiple files into the After Effects project at once

Inputs: file_paths (required), destination_folder, import_as_sequence.

ae_batch_renderB

Queue multiple compositions for rendering in a single operation

Inputs: jobs (required), start_render.

ae_batch_set_propertyA

Set a property value on multiple layers in a composition at once

Inputs: value (required), comp_name (required), layer_names (required), property_path (required), +1 more.

ae_clear_render_queueA

Remove all items from the render queue (skips items currently rendering)

Inputs: no named parameters.

ae_close_projectB

Close the current After Effects project

Inputs: save.

ae_collect_filesC

Collect all project assets into a single folder (like AE's 'Collect Files' command)

Inputs: output_folder (required).

ae_create_compositionC

Create a new composition in the current After Effects project

Inputs: name (required), width, height, duration, +2 more.

ae_create_folderB

Create a folder in the After Effects project panel

Inputs: name (required), parent_folder.

ae_delete_compositionA

Permanently delete a composition from the project

Inputs: comp_name (required).

ae_delete_keyframeA

Delete a specific keyframe from a layer property by index (1-based)

Inputs: comp_name (required), layer_name (required), property_path (required), keyframe_index (required).

ae_delete_layerB

Delete a layer from a composition

Inputs: comp_name (required), layer_name (required).

ae_delete_project_itemB

Delete an item from the After Effects project panel

Inputs: item_name (required).

ae_duplicate_compositionC

Duplicate a composition

Inputs: comp_name (required), new_name.

ae_duplicate_layerB

Duplicate a layer within a composition

Inputs: comp_name (required), layer_name (required).

ae_easy_ease_keyframesA

Apply Easy Ease to all keyframes of a property (smooth in/out easing)

Inputs: comp_name (required), layer_name (required), property_path (required), ease_type.

ae_enable_time_remapB

Enable time remapping on an AV layer

Inputs: comp_name (required), layer_name (required).

ae_export_framesA

Export a range of frames from a composition to the render queue as still images

Inputs: end_time (required), comp_name (required), start_time (required), output_folder (required), +2 more.

ae_get_composition_layersA

Get all layers in a specific After Effects composition

Inputs: comp_name (required).

ae_get_composition_settingsA

Get all settings of a composition (size, fps, duration, bg color, work area, etc.)

Inputs: comp_name (required).

ae_get_keyframesA

List all keyframes for a layer property

Inputs: comp_name (required), layer_name (required), property_path (required).

ae_get_layer_propertiesB

Get the current transform and basic properties of a layer

Inputs: comp_name (required), layer_name (required).

ae_get_project_infoB

Get information about the currently open After Effects project

Inputs: no named parameters.

ae_get_render_queueB

Get the current state of the After Effects render queue

Inputs: no named parameters.

ae_import_fileA

Import a file (video, image, audio, AEP) into the current After Effects project

Inputs: file_path (required).

ae_list_compositionsB

List all compositions in the current After Effects project

Inputs: no named parameters.

ae_list_output_templatesA

List all available output module templates in After Effects

Inputs: no named parameters.

ae_list_project_itemsA

List all items in the After Effects project panel (compositions, footage, folders)

Inputs: no named parameters.

ae_list_render_templatesA

List all available render settings templates in After Effects

Inputs: no named parameters.

ae_modify_compositionA

Modify settings of an existing composition (width, height, duration, frame rate, pixel aspect)

Inputs: comp_name (required), width, height, duration, +2 more.

ae_move_to_folderB

Move a project item into a folder

Inputs: item_name (required), folder_name (required).

ae_new_projectA

Create a new blank After Effects project (closes the current one)

Inputs: no named parameters.

ae_open_projectA

Open an existing After Effects project file (.aep or .aepx)

Inputs: file_path (required).

ae_parent_layerA

Set the parent of a layer to another layer (for hierarchical transforms)

Inputs: comp_name (required), layer_name (required), parent_layer_name (required).

ae_precompose_layersB

Precompose a set of layers into a new nested composition

Inputs: comp_name (required), layer_names (required), new_comp_name (required), move_all_attributes.

ae_remove_expressionA

Remove an expression from a layer property

Inputs: comp_name (required), layer_name (required), property_path (required).

ae_remove_render_queue_itemA

Remove an item from the render queue by its index

Inputs: index (required).

ae_rename_compositionB

Rename a composition

Inputs: new_name (required), comp_name (required).

ae_rename_layerB

Rename a layer in a composition

Inputs: new_name (required), comp_name (required), layer_name (required).

ae_render_headlessA

Render a composition directly via aerender (command-line, no UI required). After Effects does NOT need to be open.

Inputs: comp_name (required), output_path (required), project_path (required), end_frame, +4 more.

ae_reorder_layerA

Move a layer to a different position in the layer stack (1 = top)

Inputs: comp_name (required), new_index (required), layer_name (required).

ae_replace_footageA

Replace the source file of a footage item in the project (all uses update automatically)

Inputs: footage_name (required), new_file_path (required).

ae_run_scriptB

Execute a raw ExtendScript snippet directly in After Effects

Inputs: script (required).

ae_save_projectA

Save the current After Effects project

Inputs: output_path.

ae_set_comp_background_colorB

Set the background color of a composition

Inputs: color_b (required), color_g (required), color_r (required), comp_name (required).

ae_set_comp_motion_blurB

Enable or disable motion blur for a composition

Inputs: enabled (required), comp_name (required), shutter_angle, shutter_phase.

ae_set_keyframe_interpolationC

Set the interpolation type (easing) for a keyframe

Inputs: comp_name (required), layer_name (required), property_path (required), keyframe_index (required), +2 more.

ae_set_layer_3dB

Enable or disable 3D mode on a layer

Inputs: enabled (required), comp_name (required), layer_name (required).

ae_set_layer_blend_modeB

Set the blending mode of a layer

Inputs: comp_name (required), blend_mode (required), layer_name (required).

ae_set_layer_propertyC

Set a property value on a layer. Use dot notation: 'Transform.Opacity', 'Transform.Position', etc.

Inputs: value (required), comp_name (required), layer_name (required), property_path (required), +1 more.

ae_set_layer_qualityB

Set the render quality of a layer (best, draft, wireframe)

Inputs: quality (required), comp_name (required), layer_name (required).

ae_set_layer_timeB

Set the in point, out point, or start time of a layer

Inputs: comp_name (required), layer_name (required), in_point, out_point, +1 more.

ae_set_output_moduleC

Configure the output module for a render queue item (format, codec, output path)

Inputs: queue_index (required), output_path, template_name.

ae_set_project_settingsB

Configure After Effects project settings (color depth, linear blending)

Inputs: linear_blending, bits_per_channel.

ae_set_render_settingsB

Apply a render settings template to a render queue item

Inputs: queue_index (required), template_name, time_span_start, time_span_duration.

ae_set_work_areaA

Set the work area (render region) start and end time of a composition

Inputs: end (required), start (required), comp_name (required).

ae_start_renderB

Start rendering all queued items in the After Effects render queue

Inputs: no named parameters.

ae_toggle_layer_lockC

Lock or unlock a layer

Inputs: locked (required), comp_name (required), layer_name (required).

ae_toggle_layer_soloB

Enable or disable solo on a layer

Inputs: solo (required), comp_name (required), layer_name (required).

ae_toggle_layer_visibilityB

Show or hide a layer (toggle the eye icon)

Inputs: visible (required), comp_name (required), layer_name (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 72 tools

    Disambiguation4/5

    Most tools map cleanly to a distinct resource and action, and descriptions clarify cardinality such as single versus batch. However, the rendering/queue family has some overlapping paths—ae_add_to_render_queue, ae_batch_render, ae_export_frames, ae_start_render, and ae_render_headless—that could lead an agent to choose the wrong operation.

    Naming Consistency5/5

    All tools share the ae_ prefix and follow a consistent snake_case verb_noun pattern. The get/list distinction is used predictably, and batch variants are uniformly marked with batch_, making the naming scheme highly predictable.

    Tool Count1/5

    72 tools is an extreme count for an MCP server. Many are micro-tools such as individual layer toggles, keyframe helpers, and batch wrappers that could be consolidated into fewer parameterized actions without losing clarity.

    Completeness4/5

    The tool surface covers project, composition, layer, keyframe, effect application, import, and render-queue workflows with no major dead ends. Minor gaps remain, such as no effect parameter editing, no text content modification, and no mask or track-matte operations.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers