Aseprite AI Artist

Draws, animates and exports pixel art inside a running Aseprite window, one undo step per action

By Pebbly TypeScript Local · stdio DesignMedia

67 popularity score ★ 628 ↓ 797/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

FirstTerminal
npx @pebbly/aseprite-ai-artist install-extension
Claude CodeTerminal
claude mcp add aseprite-ai-artist -- npx -y @pebbly/aseprite-ai-artist serve
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "aseprite-ai-artist": {
      "command": "npx",
      "args": [
        "-y",
        "@pebbly/aseprite-ai-artist",
        "serve"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "aseprite-ai-artist": {
      "command": "npx",
      "args": [
        "-y",
        "@pebbly/aseprite-ai-artist",
        "serve"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "aseprite-ai-artist": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@pebbly/aseprite-ai-artist",
        "serve"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.aseprite-ai-artist]
command = "npx"
args = ["-y", "@pebbly/aseprite-ai-artist", "serve"]
Gemini CLITerminal
gemini mcp add --scope user aseprite-ai-artist npx -- -y @pebbly/aseprite-ai-artist serve

Settings 5

ASEPRITE_AI_HEADLESS Optional: Set to 1 to have the server run its own windowless Aseprite instead of using the open window.
ASEPRITE_PATH Optional: Path to the Aseprite executable for headless mode, when it is not in a standard or Steam location.
ASEPRITE_AI_ALLOW_LUA Optional: Set to 1 to expose run_lua; in a live window, Aseprite itself also needs this variable.
ASEPRITE_AI_PLUGIN_PORT Optional: Local port the Aseprite extension connects to (9931 by default).
ASEPRITE_AI_CONTROL_PORT Optional: Local control port of the bridge (9932 by default).

What it does

Aseprite AI Artist connects a coding agent to the Aseprite pixel-art editor. A small Lua extension inside Aseprite talks to a local bridge, and the MCP server sends the agent's requests through it. The agent edits the document you have open, so you watch each change happen and can undo any action with one Ctrl+Z.

The agent can create and open sprites, set palettes (console presets plus about 2000 Lospec palettes), draw shapes, fills, text and whole frames typed out as character grids, add layers, frames, tags and tweened cels, recolour, and check its work with previews, ASCII read-backs, diffs and a lint pass. It exports PNG, GIF, spritesheets with a JSON atlas, and tilesets for Tiled or Godot 4. The server also serves a pixel-art rulebook (62 chapters) as rules:// resources and its workflows as skill:// resources and MCP prompts. For Claude Code and omp the same repository is a plugin that adds /aseprite:* commands and helper subagents.

The tool reference at the installed version (0.8.2) lists 18 tools. A 19th, run_lua, runs arbitrary Lua inside Aseprite. The server keeps it hidden unless started with --allowLua or ASEPRITE_AI_ALLOW_LUA=1, and in a live window the extension refuses it unless Aseprite itself was started with that variable (docs/TOOLS.md, SECURITY.md). A headless mode (serve --headless) has the server start a windowless Aseprite for batch or CI work.

What it needs

RuntimeNode.js 22+

Aseprite 1.3 or later (a paid app, or built from source) on macOS, Linux or Windows, and Node 22.6+ for npx. Install the Aseprite extension once with `npx @pebbly/aseprite-ai-artist install-extension`, then restart Aseprite. In live mode Aseprite must be open with the extension connected. Headless mode needs the Aseprite executable path (--aseprite or ASEPRITE_PATH) if it is not in a standard place. Local ports 9931 and 9932 must be free, or set others.

Limits

In live mode, tools refuse with not_connected while Aseprite is closed or detached. They do not fall back to editing files on disk. The agent switches to headless mode only when told to. transform acts on one cel at a time, and rotation by angles other than 90° needs allowLossy. tileset needs Aseprite's tileset feature. palette extract works on RGB sprites only (2-256 colours, 16 by default). Codex does not show MCP prompts, so there the skills come only as resources. OpenCode 1.x needs the config entry written by hand. The installer edits agent config files without a lock, so its docs say to run it while the agent is closed.

Who it suits

Suits game developers and pixel artists who already use Aseprite and want an agent to draw, animate and export sprites while they watch and correct it in the open window, or to batch-produce assets in headless mode. It is a poor fit without an Aseprite licence or build, on a machine shared with untrusted local users (the bridge port has no sign-in), or if you want image generation rather than pixel-by-pixel editing.

Tools 19

preflight
Reports connection, mode and active sprite, and switches between live and headless
sprite_info
Returns the full state of the document: size, palette, layers, frames, tags, slices
sprite_manage
Lists, creates, opens, saves, closes and resizes sprites, and manages slices
look
Renders previews, ASCII grids, filmstrips, diffs, onion skins and comparisons
read_pixels
Returns the distinct colours and an index grid of the pixels
draw
Draws pixels, lines, shapes, fills, dithers, gradients, text or a character grid in one undo step
select
Sets or changes the selection that limits draw, transform and recolor
transform
Moves, flips, rotates, scales, outlines or crops one cel
recolor
Shades, snaps, replaces, hue-shifts or desaturates colours
layer
Creates, renames, deletes, orders, groups, merges and duplicates layers
frame
Adds, duplicates, deletes and reorders frames and sets their timing
tag
Creates, updates and deletes animation tags
cel
Moves, copies, links, tweens and oscillates cels
palette
Gets, sets, loads presets, builds ramps, analyses or extracts a palette
validate
Lints palette, stray pixels, outlines, banding, animation and export readiness
reference
Imports a reference image on a locked layer and samples its palette
export
Writes PNG, GIF, frames, a spritesheet with JSON atlas, or an .aseprite file
tileset
Creates tilemap layers, packs a mockup into a tileset and exports it for Tiled, Godot 4 or JSON
run_lua
Runs arbitrary Lua inside Aseprite; hidden unless Lua is turned on

Similar servers