animate-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ANIMATE_MCP_RUNS_DIR | No | Working directory. | ~/.animate-mcp/runs |
| ANIMATE_MCP_TIMEOUT_MS | No | Execution timeout in milliseconds. | 30000 |
| ANIMATE_MCP_LAUNCH_COMMAND | No | Custom command to open the .jsfl file. | OS default |
| ANIMATE_MCP_PROCESS_PATTERN | No | Custom process pattern to detect Animate. | OS default |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Read and write Adobe Animate timeline scripts as files.
Basic flow:
Run export_scripts to export the active document. Read index.md, then each structure.md, then the scripts.
Edit the exported .as / .js files (an empty file deletes that frame's script).
Run apply_scripts to apply them. The .fla is not saved; the user saves it.
To add a script to a frame with none, create /as/.as (or .js for HTML Canvas), avoid tween spans, and run apply_scripts.
Use edit_timeline for layer or frame structure changes. shiftLayerFrames moves one layer's content later without shifting other layers. Always run export_scripts again before editing or applying scripts; delete operations require confirm: true.
If a frame changed in Animate before you applied, Export is refused and Apply skips that frame. Export again to pull in the change.
Notes:
When several documents are open, document is required. get_document_info returns the name.
AS3 and HTML5 Canvas have different APIs. Check the document type before trying things with run_jsfl.
Runtime errors appear in Animate's Output panel. Run fl.outputPanel.save(FLfile.platformPathToURI("")) with run_jsfl and read the saved file (saving under ~/.animate-mcp/ is recommended; write the path in the usual form for the OS).
When a script fails with a null error, first check the layer's frame length and instance names with run_jsfl.
If you add debug traces, always remove them after checking and Apply again.
run_jsfl runs arbitrary code. Ask the user before any operation that modifies the document.
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 |
|---|---|
| run_jsflC | Execute arbitrary JSFL code inside Adobe Animate. This runs arbitrary code and may modify documents or files. |
| get_document_infoA | Get the active Animate document's name, size, frame rate and timeline names. |
| export_scriptsA | Export the active Animate document's scene and library-symbol Timeline scripts (AS3 / HTML5 Canvas) to files, with index.md and per-timeline structure.md. Default dir: ~/.animate-mcp/exports//. Refuses to overwrite edits not yet applied unless force is true; files of the previous Export are replaced. |
| edit_timelineA | Edit layers (addLayer, deleteLayer, moveLayer, renameLayer, setLayerType) and frames (insertFrames, removeFrames, insertKeyframe, clearKeyframe, setLabel, setSpanLength, shiftLayerFrames) in order. Layer references use a name and optional zero-based index; frame numbers are 1-based. shiftLayerFrames moves one layer's full content later without shifting other layers; it uses cut/paste (overwrites the clipboard, and if it fails midway the layer may be left changed: undo in Animate). Stops at the first failed op. deleteLayer and removeFrames require confirm: true. Tween interiors reject frame insertion/removal/keyframe changes. Always run export_scripts again before editing or applying scripts. |
| apply_scriptsA | Apply edited Timeline scripts from an export_scripts directory back to the Animate document (scenes and library symbols). Empty file deletes the frame script. Frames changed in Animate since Export are not overwritten. Does not save the .fla. |
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 5 tools
Each tool has a distinct role: document inspection, export, apply, timeline editing, and an arbitrary-code escape hatch. The only overlap is that run_jsfl can theoretically perform any of the other operations, but its description clearly frames it as arbitrary-code execution while the others are targeted workflows.
All five tools use snake_case verb_noun naming (run_jsfl, get_document_info, export_scripts, edit_timeline, apply_scripts). The pattern is predictable and easy to scan.
Five tools is well scoped for a focused Adobe Animate automation server. Each tool corresponds to a meaningful operation (inspect, export, edit, apply, arbitrary execution) without padding.
The surface covers inspection, script export/apply, timeline editing, and arbitrary JSFL escape, which is strong lifecycle coverage for this domain. Minor gaps exist around explicitly saving the .fla or document-level operations, though run_jsfl provides a workaround.