Skip to main content
Glama
animate-mcp

animate-mcp

by gekkyo

animate-mcp

Edit Adobe Animate scripts and timeline structure from an MCP-compatible AI agent.

English | 日本語

MCP compatible npm license MIT


Overview

animate-mcp is a local Model Context Protocol (MCP) server that lets an AI agent control Adobe Animate through JSFL, Animate's scripting system. Unofficial; not affiliated with Adobe.

It exports frame scripts as plain files, lets the agent edit them, and applies them back to Animate. It can also change layer and frame structure and run arbitrary JSFL.

Related MCP server: AE Bridge MCP

Highlights

  • Export every frame script of scenes and library symbols to files, with a description of the structure.

  • Apply edited files back to Animate. Changes made in Animate after Export are detected as conflicts and never overwritten.

  • Add a new script to a frame that has none, just by creating a file.

  • Add, delete, move, rename, and retype layers (mask, folder, and more).

  • Insert or remove frames, work with keyframes, set labels, adjust tween length, and shift a layer's start.

  • Run arbitrary JSFL and return the result.

  • Supports ActionScript 3 and HTML5 Canvas documents.

Requirements

  • Node.js

  • Adobe Animate (must be running)

  • An MCP-compatible client (Claude Code, Claude Desktop, etc.)

  • Verified only on Animate 2024 / macOS. Other recent versions should work. Windows is untested.

Install

Claude Code

claude mcp add animate -- npx -y animate-mcp@latest

Clients configured with JSON (Claude Desktop, etc.)

{
  "mcpServers": {
    "animate": {
      "command": "npx",
      "args": ["-y", "animate-mcp@latest"]
    }
  }
}

Usage

  1. Start Animate and open the target .fla.

  2. Ask your agent. Examples:

    • "Export the scripts of the open document and find the cause of the stageUp error."

    • "Clean up the button handling in this scene and apply it to Animate."

  3. Behind the scenes:

    1. export_scripts writes the structure and every frame script to ~/.animate-mcp/exports/<document name>/.

    2. The agent edits the files.

    3. apply_scripts writes them back into Animate.

Notes:

  • When several documents are open, specify which one with document.

  • Changes made in Animate after an Export are detected as conflicts on Apply and are not overwritten.

  • Export is refused while unapplied edits exist. Use force: true only when it is fine to discard them.

  • To add a script to a frame with none, create as/<frame>.as in the timeline directory (use .js for HTML5 Canvas), then run apply_scripts; scripts inside tween spans are refused.

  • Use edit_timeline for layer and frame structure changes; shiftLayerFrames moves one layer's content later without shifting other layers. Always run export_scripts again before editing or applying scripts; layer and frame deletions require confirm: true.

  • To save, save manually in Animate.

  • Both ActionScript 3 and HTML5 Canvas documents are supported.

Tools

Tool

Description

export_scripts

Writes the timeline structure and all frame scripts (scenes and library symbols)

edit_timeline

Adds, removes, moves and edits layers and frames in a scene or library symbol

apply_scripts

Writes edited scripts back into the open document

get_document_info

Returns name, size, frame rate and timeline names of the open documents

run_jsfl

Runs arbitrary JSFL and returns the result (primitive values only; objects become strings)

Environment variables

Name

Description

Default

ANIMATE_MCP_TIMEOUT_MS

Execution timeout

30000

ANIMATE_MCP_RUNS_DIR

Working directory

~/.animate-mcp/runs

ANIMATE_MCP_LAUNCH_COMMAND

Custom command to open the .jsfl file

OS default

ANIMATE_MCP_PROCESS_PATTERN

Custom process pattern to detect Animate

OS default

Bug reports

Please open an issue with your Animate version, OS, steps to reproduce and error messages.

Development

npm install && npm run build
npm test

Client config: node /path/to/animate-mcp/server/dist/index.js (stdio).

Manual smoke test (real Animate)

  1. Start Animate with a document open.

  2. Run run_jsfl with fl.trace('hi'); 'ok'. hi appears in the Output panel and the tool returns "ok". Animate comes to the front (known behavior).

  3. Run get_document_info. It returns name, size, frame rate and timeline names.

  4. Close all documents and run get_document_info. It returns "No document open".

  5. Quit Animate and run run_jsfl. It returns "Animate not running".

  6. Unverified: behavior while a modal dialog is open.

Available Tools

5 tools
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.

Inputs: dir (required), document.

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.

Inputs: ops (required), timeline (required), document.

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.

Inputs: dir, force, document.

get_document_infoA

Get the active Animate document's name, size, frame rate and timeline names.

Inputs: no named parameters.

run_jsflC

Execute arbitrary JSFL code inside Adobe Animate. This runs arbitrary code and may modify documents or files.

Inputs: code (required).

Tool Schema Changelog

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

    TDQS

    A3.7/5.0

    Scored across 5 tools

    Disambiguation4/5

    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.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers