Skip to content
Conduit

mcp server

adobe-animate-mcp-server

Model Context Protocol server for Adobe Animate - allows AI to control and automate Adobe Animate through natural language commands. Includes 46 tools for document creation, drawing, animation, Action

CFalcon075/adobe-animate-mcp-servercommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • Node.js 20 or newer
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "adobe-animate-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "adobe-animate-mcp-server"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 25, 2026

Overview

adobe-animate-mcp-server is a local Model Context Protocol server that lets an AI assistant control Adobe Animate through JSFL, Adobe Animate's scripting system.

Instead of manually writing and running JSFL scripts, you can ask your assistant to create documents, draw shapes, manage timelines, add ActionScript, inspect symbols and layers, read compiler output, and export/publish work. The server translates those requests into JSFL, runs them in Adobe Animate, and returns structured results back to the assistant.

This is especially useful for animation prototyping, Flash/Animate game workflows, repetitive authoring tasks, and debugging timeline or ActionScript projects.

Highlights

  • Create new Animate documents with custom dimensions and frame rates.
  • Draw rectangles, ovals, text, and imported image assets.
  • Add layers, keyframes, classic tweens, and symbols.
  • Add ActionScript 2.0 or 3.0 to frames, instances, and named symbols.
  • Inspect the current project name, file path, save state, layers, and library items.
  • Run custom JSFL and return structured JSON back to the AI assistant.
  • Check compiler/debug output and trigger test movie workflows.
  • Export or publish Animate projects from natural language commands.

Requirements

  • Adobe Animate 2020 or later.
  • Node.js 18 or later.
  • An MCP-compatible client, such as Cursor, Claude Desktop, or another MCP host.
  • Windows or macOS. The current executor includes Windows-oriented Animate paths, but the JSFL concepts are cross-platform.

Quick Start

Install dependencies and build the server:

npm install
npm run build

Start the server locally:

npm start

For development, rebuild and start in one command:

npm run dev

MCP Client Setup

Add the server to your MCP client configuration. Replace the example path with the absolute path to your local dist/index.js.

{
  "mcpServers": {
    "adobe-animate": {
      "command": "node",
      "args": [
        "C:/path/to/adobe-animate-mcp-server/dist/index.js"
      ]
    }
  }
}

On Windows, forward slashes are recommended inside JSON paths:

C:/Users/YourName/projects/adobe-animate-mcp-server/dist/index.js

After saving the config, restart your MCP client so it reloads the server.

How It Works

flowchart LR
  userPrompt["Natural language request"] --> mcpClient["MCP client"]
  mcpClient --> server["Adobe Animate MCP Server"]
  server --> toolRouter["Tool router"]
  toolRouter --> jsflGenerator["JSFL generator"]
  jsflGenerator --> animate["Adobe Animate"]
  animate --> outputFile["Structured output file"]
  outputFile --> server
  server --> mcpClient
  1. You ask your assistant to do something in Adobe Animate.
  2. The MCP client sends a tool call to this server.
  3. The server chooses the matching tool and generates JSFL.
  4. The JSFL runs in Adobe Animate.
  5. Results are written to a temporary output file and returned to the assistant.

Example Prompts

Create a document:

Create a new Adobe Animate document that's 1280x720 at 30fps.

Draw artwork:

Draw a dark blue rectangle that fills the background, then add white title text in the center.

Set up a game scene:

Create layers named Background, Player, Enemies, UI, and Actions.

Organize the timeline:

Create a clean game timeline folder structure with Actions, UI, Player, Enemies, World, Background, and Audio folders.

Inspect the current project:

What is the current Animate project name and where is the FLA saved?

Debug ActionScript:

Test my movie and show me any compiler errors or warnings.

Run custom JSFL and return data:

Run custom JSFL that returns the current document name and layer count.

Tool Reference

Document And Drawing

ToolWhat It Does
create_new_documentCreates a new Animate document with dimensions and frame rate.
save_documentSaves the current .fla file to a specific path.
add_layerAdds a new timeline layer.
draw_rectangleDraws a rectangle on the stage.
draw_ovalDraws an oval or ellipse on the stage.
add_textAdds editable text to the stage.
import_imageImports an image to the stage or library.
export_moviePublishes or exports the current animation.

Animation

ToolWhat It Does
create_keyframeInserts a keyframe at a specific frame.
create_motion_tweenCreates a classic motion tween between frames.
convert_to_symbolConverts selected artwork into a movie clip, button, or graphic symbol.

ActionScript 2.0 And 3.0

ToolWhat It Does
get_actionscript_infoReports document ActionScript version, document class, source/class paths, publish profile data, and AS2/AS3 capability warnings.
set_actionscript_versionAttempts to set the document ActionScript version through safe JSFL properties and reports if the host blocks it.
add_actionscript_to_frameAdds AS2, AS3, or auto-detected ActionScript to a specific timeline frame.
add_actionscript_to_instanceAdds AS2, AS3, or auto-detected ActionScript to the selected instance.
add_actionscript_to_symbol_by_nameFinds a named symbol instance and adds AS2, AS3, or auto-detected ActionScript.
set_document_classSets the AS3 document class. AS2 does not use AS3 document classes.
add_stop_actionAdds stop(); to a frame.
add_gotoAndPlay_actionAdds gotoAndPlay(...) frame navigation.
add_gotoAndStop_actionAdds gotoAndStop(...) frame navigation.
add_as2_keyboard_controlsAdds AS2 Key.isDown(...) movement controls for a player instance.
add_as2_button_handlerAdds an AS2 button handler such as onRelease.
add_as2_frame_loopAdds an AS2 onEnterFrame loop.
add_as3_keyboard_controlsAdds AS3 KeyboardEvent.KEY_DOWN movement controls for a player instance.
add_as3_button_handlerAdds an AS3 MouseEvent.CLICK button handler.
add_as3_document_class_stubCreates an AS3 Main.as-style class file and sets it as the document class.
create_actionscript_fileCreates an external AS2 or AS3 .as file beside the .fla or in a provided folder.
scan_actionscript_usageScans frame and instance scripts and classifies likely AS2 vs AS3 syntax.
test_movie_and_reportStarts Test Movie and returns ActionScript/project metadata plus compiler-output guidance.

Inspection And Debugging

ToolWhat It Does
get_document_infoReturns document dimensions, timeline state, layers, and project name fields.
get_project_infoReturns project name, file path, save state, document class, timeline summary, and library summary.
get_compiler_errorsReads document/debug status or starts a test movie compile check.
clear_output_panelClears the Adobe Animate output panel.
get_library_itemsLists symbols, bitmaps, sounds, fonts, and other library items.
get_layers_infoReturns detailed layer information.
get_timeline_treeReturns the timeline as folder/layer metadata.
select_layer_by_nameSelects a layer by name.

Utilities

ToolWhat It Does
select_allSelects all elements on the current frame.
delete_selectionDeletes the current selection.
run_custom_jsflRuns custom JSFL for advanced workflows.

ActionScript 2.0 And 3.0 Support

This MCP has version-aware ActionScript tooling. It can insert, inspect, template, scan, and manage both AS2-style and AS3-style code.

There is one important product limitation: modern Adobe Animate supports AS3, while AS2 is legacy/deprecated and may require an older Flash/Animate host to compile. The MCP does not hide that limitation. When you request AS2, tools return capability warnings if the current document/app does not report AS2 support.

Use get_actionscript_info before adding larger scripts:

Check the current ActionScript version and tell me whether this FLA can compile AS2 or AS3.

Add AS2 frame code:

Add AS2 keyboard controls for the player instance named player.

Add AS3 frame code:

Add AS3 keyboard controls for the player instance named player.

Create an external AS3 document class:

Create an AS3 document class stub named Main and set it as the document class.

Create an external AS2 class/helper file:

Create an AS2 ActionScript file named GameController beside the FLA.

Scan for mixed script styles:

Scan this FLA for ActionScript and tell me whether it looks like AS2, AS3, or mixed.

Supported version modes:

as2   Legacy ActionScript 2.0 code and templates.
as3   Modern ActionScript 3.0 code and templates.
auto  Infer the likely version from the code and document metadata.

Timeline Folder Organization

ToolWhat It Does
create_layer_folderCreates a timeline folder layer with optional placement, visibility, and lock settings.
create_timeline_folder_structureCreates a reusable folder/layer structure for game projects.
move_layer_to_folderMoves a layer into a folder block using Animate's timeline ordering APIs.
set_folder_expandedExpands or collapses one folder, or all folders with folderName: "*"
rename_layer_or_folderRenames an existing layer or folder by name.
delete_layer_or_folderDeletes a layer or folder, optionally including the folder's child layer block.

Timeline Folder Workflow

Timeline folders help keep a Flash or Animate game project readable. A clean game timeline might look like this:

Actions
  Frame Scripts
  Labels
UI
  HUD
  Menus
  Text
Player
  Player Art
  Player Hitbox
  Player Effects
Enemies
  Enemy Art
  Enemy Hitboxes
  Enemy Effects
World
  Platforms
  Pickups
  Triggers
Background
  Sky
  Backdrop
  Parallax
Audio
  Music
  SFX

You can ask the assistant to create that structure in one request:

Create the default game timeline folder structure.

Then inspect it:

Show me the timeline tree and tell me which layers have ActionScript.

The timeline tree response includes folder layers, child layers, visibility, lock state, frame counts, and whether each layer contains ActionScript.

Note: Adobe Animate's JSFL API exposes timeline layers mostly as a flat list. The MCP interprets folder membership as a folder block: the folder layer plus the following non-folder layers until the next folder. This matches the way the new folder tools create and organize game timelines.

Project Metadata Capture

The get_project_info tool is designed for workflows where the assistant needs to understand the active Animate file before making changes.

Typical response fields include:

{
  "projectName": "GLING DING HORROR GAME",
  "documentName": "GLING DING HORROR GAME.fla",
  "fileName": "GLING DING HORROR GAME.fla",
  "path": "C:\\Users\\You\\Documents\\GLING DING HORROR GAME.fla",
  "saved": true,
  "modified": false,
  "dimensions": {
    "width": 640,
    "height": 480,
    "frameRate": 30
  }
}

This helps the assistant avoid guessing which project is open and makes it easier to build game-specific workflows around the active .fla.

Custom JSFL Output

run_custom_jsfl supports structured output. Inside your JSFL, assign a value to __mcpResult and the server will return it to the MCP client:

var doc = fl.getDocumentDOM();

__mcpResult = {
  documentName: doc ? doc.name : null,
  layerCount: doc ? doc.getTimeline().layerCount : 0
};

If custom JSFL throws an error, the MCP response includes the error instead of only saying the script executed.

Example Scripts

The examples/ directory contains standalone JSFL scripts that can be run manually from Adobe Animate:

  • examples/create_bouncing_ball.jsfl
  • examples/create_text_animation.jsfl
  • examples/draw_shapes.jsfl

To run one manually, open Adobe Animate and choose Commands > Run Command..., then select the .jsfl file.

Project Structure

adobe-animate-mcp-server/
├── src/
│   ├── index.ts
│   ├── tools.ts
│   └── jsfl-executor.ts
├── examples/
├── dist/
├── adobe-animate-logo.png
├── package.json
├── tsconfig.json
└── README.md

Key files:

  • src/index.ts starts the MCP server and registers tool handlers.
  • src/tools.ts defines tool schemas and generates JSFL scripts.
  • src/jsfl-executor.ts writes JSFL to disk, launches Animate, captures structured output, and returns it to the MCP client.

Development

Build the TypeScript project:

npm run build

Run the compiled server:

npm start

Run a development cycle:

npm run dev

Troubleshooting

Adobe Animate Must Be Running

Adobe Animate needs to be installed and available for JSFL execution. Some workflows work best when Animate is already open with a document loaded.

Restart Your MCP Client After Changes

If you add a new tool or rebuild the server, restart your MCP client so it reloads the tool list.

Use Forward Slashes In Config Paths

Use this in MCP JSON config:

C:/Users/YourName/projects/adobe-animate-mcp-server/dist/index.js

Avoid unescaped backslashes in JSON:

C:\Users\YourName\projects\adobe-animate-mcp-server\dist\index.js

Manual JSFL Fallback

If automatic execution fails, you can still run generated JSFL manually:

  1. Copy the JSFL script.
  2. Open Adobe Animate.
  3. Choose Commands > Run Command....
  4. Paste or select the script and run it.

You can also place reusable .jsfl commands in:

C:\Users\[YourUsername]\AppData\Local\Adobe\Animate [Version]\en_US\Configuration\Commands\

Resources

Contributing

Contributions are welcome. Good areas to improve include:

  • More game-development helper tools.
  • Better export/publish profile control.
  • More robust cross-platform Animate executable discovery.
  • Additional JSFL examples and templates.
  • End-to-end tests for generated JSFL snippets.

License

MIT License. See LICENSE for details.

Disclaimer

This is an unofficial community project. It is not affiliated with, sponsored by, or endorsed by Adobe. Adobe Animate is a trademark of Adobe Inc.

↑↓ navigate openesc close