AE-MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_TIMEOUT | No | Timeout in milliseconds for MCP tool calls. A value of 120000 matters: a cold After Effects start plus the first osascript does not fit the default 30 s. | |
| AE_MCP_READONLY | No | Set to 1 for the first experiments on a new machine to run the server in read-only mode. | |
| AE_MCP_ENABLE_EVAL | No | Enables the eval.run operation (arbitrary ExtendScript = file system access). Stays off; keep it off. |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ae_project_infoA | Project-level info: file path, dirty flag, all items with type/summary, active item. Start here. |
| ae_comp_infoA | Detailed comp info: size, fps, duration, work area, motion blur, layer summaries. Pass a comp name or item id — or an ARRAY of them to fetch several comps in one call. |
| ae_layer_infoA | Full layer info: transform, effects, masks, text, shape contents, keyframes. layerIndex accepts one index, an ARRAY of indices, or 'all' — auditing a whole comp is one call. Set includeProperties=false to skip the property tree walk. |
| ae_render_frameA | Render a single frame to PNG. Use to visually verify edits. The agent's 'eyes' — pair with mutations for a visual feedback loop. Headless and deterministic. In color-managed projects (workingSpace != None) the capture applies AE's own display transform via a transient OCIO Display Transform adjustment layer, and the PNG comes back viewer-accurate and sRGB-tagged. Where that layer cannot be used — read-only mode, an AE without the OCIO effect, or a failed capture calibration — the result falls back to a pure-math ACES conversion or to raw values with an explicit colorWarning; check colorPipeline / colorWarning on the response. |
| ae_save_projectA | Save the project. Pass |
| ae_project_export_jsonA | Serialize the entire project to JSON (folders, comps, layers, keyframes, effects, shapes, markers, time remap, solids, file refs). Write to |
| ae_project_import_jsonA | Rebuild the project from JSON (produced by ae_project_export_json). Supports |
| ae_version_infoA | AE version, build, capabilities (saveFrameToPng, app.effects, Socket). Call at session start to know what APIs are available. |
| ae_catalogA | Discover available atomic operations for ae_do. Without args: all categories with their operation names. With a category: detailed params per operation. Only operations this server will actually execute are listed. |
| ae_doA | Execute an atomic operation by name (from ae_catalog). Arguments are validated against the operation's declared parameters before anything reaches AE. Have more than one operation to run? Wrap them in ONE batch.run instead of several ae_do calls — read/verify steps (comp.info, layer.info, render.frame) can ride in the same batch. Every call is automatically wrapped in ONE undo group: a single Ctrl+Z (or project.undo) reverts the entire call, and a batch.run counts as one call. Never call app.beginUndoGroup/endUndoGroup in eval.run code — the wrapper already did. The exception is undo/redo itself (project.undo, command.execute id 16/2035): those run outside the group and cannot ride inside a batch.run. Response includes ambient context (active comp, selected layers, project state) at zero extra round trips. Example: ae_do({ operation: 'keyframe.add', args: { comp: 'Main', layer: 1, property: ['Transform','Position'], time: 2, value: [960,540] } }) |
| ae_contextA | Ambient context: project state, active comp, selected layers, item list, AE.* helpers, ES3 rules, and the undo contract (every call = one auto undo group). Call at session start; then rely on ae_do response context. |
| ae_dialogsA | List the modal dialogs After Effects is showing, or dismiss one by its cancel action (what Escape does: a warning is acknowledged, a 'save changes?' question is cancelled — never answered for the user). Use after a DIALOG_OPEN / TIMEOUT error, or before a step known to pop a dialog. Windows + macOS; on macOS reading the text and dismissing need Accessibility permission for the app that runs this server. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 12 tools
Most tools target clearly distinct actions (render, dialogs, save, import/export, version), but ae_project_info, ae_context, ae_comp_info, and ae_layer_info all return overlapping state, so an agent must read descriptions to choose between the dedicated info tools and the ambient-context tool.
All tools use the same ae_ prefix with snake_case and a predictable resource/action pattern (ae_project_info, ae_save_project, ae_render_frame, ae_do), so the naming is highly consistent.
Twelve tools is well-scoped for a broad After Effects automation server: the dedicated info/render/dialog/save tools cover common workflows, while ae_catalog and ae_do handle the long tail without bloating the surface.
The surface covers the full lifecycle: discover capabilities (ae_version_info, ae_catalog, ae_context), inspect (project/comp/layer info), mutate (ae_do), verify visually (ae_render_frame), handle interruptions (ae_dialogs), and persist (ae_save_project, export/import JSON).