after-effects-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ae_healthA | Check After Effects bridge status only. Never runs scripts in AE (no 'Executing script…' popup). If disconnected, restart AE once or call ae_reconnect once. |
| ae_reconnectA | USER-INITIATED ONLY. Runs AfterFX -r once (shows a brief 'Executing script…' dialog). Prefer restarting AE instead for a silent Startup load. 30s cooldown. |
| ae_list_instancesA | List live After Effects instances reporting heartbeats to the file bridge. |
| ae_get_project_infoA | Get the open AE project summary: name, path, bits, and composition index. Prefer this over dumping the full project tree. |
| ae_list_compositionsA | List compositions in the open project (name, size, fps, duration, layer count). |
| ae_get_compositionB | Get composition settings and layer index. Use response_format=detailed for layer list. |
| ae_create_compositionA | Create a new composition. Defaults: 1920x1080, 30fps, 5 seconds. bgColor is RGB 0–1 floats, e.g. [0,0,0]. |
| ae_get_layerA | Get layer details (transforms, timing, effects). Prefer layer_name; use layer_index if names collide. |
| ae_create_layerA | Create a layer in a composition. type: text|solid|shape|null|camera|light|adjustment. For text pass text/fontSize/fillColor. Colors are RGB 0–1. Position is [x,y] or [x,y,z]. |
| ae_set_layer_propertiesC | Set transform/timing/name/parent on a layer. position [x,y], scale [x,y] percent, rotation degrees, opacity 0-100. |
| ae_delete_layerA | Delete a layer. DESTRUCTIVE — requires confirm=true. |
| ae_duplicate_layerB | Duplicate a layer; optionally rename the copy. |
| ae_set_keyframesB | Set keyframes on a layer property. property uses path aliases: Transform/Position, Transform/Scale, Transform/Rotation, Transform/Opacity (or matchNames). keyframes: [{time: seconds, value: number|array}]. |
| ae_set_expressionA | Set or clear an expression on a layer property. Pass expression string, or empty string/null to clear. Example: wiggle(2, 30). |
| ae_apply_effectB | Apply an effect by display name or matchName (e.g. "Gaussian Blur" or "ADBE Gaussian Blur 2"). |
| ae_set_effect_propertyC | Set a property on an effect instance. Identify effect by effect_name or effect_index (1-based). |
| ae_list_effectsA | List effects on a layer (name, matchName, index). |
| ae_remove_effectB | Remove an effect from a layer by effect_name or effect_index. |
| ae_searchA | Search project items and layers by name substring. Prefer this over listing everything in large projects. |
| ae_capture_frameA | Render a still PNG of a composition at a given time (seconds) and return it as an image when possible. Use after visual changes so you can verify the result. Defaults to current CTI time. |
| ae_run_jsxA | Escape hatch: run a Function-body of ExtendScript. Receives |
| ae_create_subtitleA | Add a subtitle/caption text layer. DEFAULT: white text + black stroke for readability — NEVER adds a black bar/plate behind text unless background_bar=true (only when the user explicitly asks). Prefer this over solids for captions. |
| ae_import_footageB | Import a video/image/audio file into the AE project from an absolute path. |
| ae_analyze_cutsA | Analyze a video with ffmpeg silencedetect and return KEEP segments (content) vs silence to remove. Use this BEFORE cutting — never guess random cut points. Requires ffmpeg on PATH. Prefer ae_transcribe_video + ae_transcript_to_cuts when you need to remove stutters/fillers (speech-aware). |
| ae_transcribe_videoA | Transcribe a video/audio file with timestamps (segments + word-level when available). Saves JSON under ~/.ae-mcp/transcripts/. Requires Python + faster-whisper (or openai-whisper) and ffmpeg. Use result with ae_transcript_to_cuts for filler/stutter removal edits. |
| ae_transcript_to_cutsA | From a timed transcript, remove fillers (um/uh/like/you know/…) and stutters (repeated words), then build KEEP timeline segments with pad_before/pad_after so cuts have a little breathing room. Pass segments to ae_build_smart_edit. Also returns cleaned text + SRT for subtitles (use ae_create_subtitle — no black bars). |
| ae_create_editorial_planA | Create an explainable YouTube edit plan from a timed transcript. Scores natural cut points, identifies a hook, suggests chapters and visuals, and returns a reviewable plan before any AE mutation. |
| ae_audit_editorial_planA | Run a pre-build quality audit on a YouTube editorial plan. Reports hook, pacing, coverage, chapter, and unsafe short-cut issues without mutating After Effects. |
| ae_list_motion_templatesA | List the reusable motion-graphics templates the agent can use when planning a YouTube video. |
| ae_create_motion_blueprintB | Create a canonical, explainable motion-graphics video blueprint without mutating After Effects. The blueprint is the shared source of truth for scenes, brand, timing, templates, QA, and rendering. |
| ae_validate_motion_blueprintB | Run explainable coherence checks on a motion blueprint without mutating After Effects. |
| ae_audit_motion_coverageA | Check whether a motion blueprint requests real object choreography, impact beats, scene variation, and readable settle moments instead of a fade-led card sequence. |
| ae_repair_motion_blueprintB | Apply deterministic safe repairs to scene timing, template ids, and graphic text limits, then return the before/after coherence audit. |
| ae_build_motion_videoB | One-shot motion-graphics workflow: validate and repair a blueprint, build deterministic named scenes in After Effects, capture QA frames, render a preview or final output, and create an approval review. |
| ae_create_motion_templateC | Create a reusable, brand-aware motion graphic directly in an After Effects composition. |
| ae_capture_framesA | Capture multiple composition frames for visual QA and return a frame manifest. |
| ae_render_compositionB | Render a composition with an automatic export preset. The render must still be visually reviewed before delivery. |
| ae_create_reviewB | Create a saved review item with preview frames and optional render metadata. Approval mode should use this before final delivery. |
| ae_list_reviewsA | List pending, approved, and rejected AE MCP review items. |
| ae_decide_reviewB | Approve or reject a saved preview review item with notes. |
| ae_get_workflow_preferencesA | Read the AE MCP workflow mode, edit mode, and brand defaults. Approval mode is the safe default; autonomous mode lets high-level workflows proceed without an extra approval gate. |
| ae_set_workflow_preferencesC | Set autonomous or approval workflow behavior and project brand defaults used by high-level editing workflows. |
| ae_build_smart_editA | Import footage (optional if already in project) and build a sequential edit comp from KEEP segments (from ae_analyze_cuts). Cuts on silence/dead air — not random. Does not add subtitle bars. |
| ae_build_youtube_editB | Analyze a transcript and optionally build a YouTube edit in After Effects. In approval mode it returns a full editorial plan until approved=true; in autonomous mode it builds immediately. Use clean, retention, or story mode. |
| ae_prepare_blender_3d_jobA | MANDATORY first step when user asks for REAL 3D models in AE. Creates an exchange folder and returns (1) paths + (2) Blender Python to run via blender MCP execute_blender_code. AE cannot load .blend meshes natively — Blender must render a transparent PNG sequence (and optional GLB/OBJ). After Blender finishes, call ae_import_3d_from_blender. |
| ae_verify_blender_jobA | VERIFY GATE before AE import. Checks frame count, that frames actually differ (animation rendered), and mesh exports. MUST pass before ae_import_3d_from_blender. Do not claim 3D is done if this fails. |
| ae_import_3d_from_blenderA | Import a finished Blender exchange job into After Effects as a transparent PNG sequence (real 3D render). Runs verify first. Creates a dedicated comp and layer. After import you MUST ae_capture_frame to prove the layer is visible. |
| ae_list_blender_jobsA | List Blender→AE exchange jobs under ~/.ae-mcp/blender-exchange/ |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| create_lower_third | Build a simple lower-third (bar + title + subtitle) with fades |
| kinetic_type_intro | Create a kinetic type intro card |
| debug_comp | Inspect the active or named composition and capture a frame |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| ae-health | Bridge and AE connection status |
| ae-project | Active project summary |
| ae-compositions | Composition index |
| ae-docs-expressions | Expression snippets for agents |
| ae-docs-matchnames | Common property/effect matchNames |
| ae-docs-gotchas | Scripting gotchas and agent workflow rules |
| ae-workflow | Autonomous/approval workflow and brand configuration |
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/HeroicSwan/after-effects-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server