Skip to content

Releases: sloplink/aseprite-mcp

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 18 Sep 11:47

Needs the MCP Bridge extension 0.7.0 for the sprite guard and aseprite_sprites; with older
extensions everything else keeps working as before (without the guard).

Added

  • Sprite guard: the server remembers which sprite it works on (the one it created or opened, or
    the active one after aseprite_status). If the artist switches to another sprite, drawing
    commands stop with a clear message instead of drawing into the wrong sprite.
  • aseprite_sprites: lists open sprites and switches to one of them.
  • Automatic backups: a few seconds after the assistant changes a sprite, a copy is saved as
    .aseprite to ~/.config/aseprite-mcp/autosave (newest 5 per sprite, ASEPRITE_MCP_AUTOSAVE
    to move or disable it). Original files are never touched. aseprite_backups lists the copies,
    and the Backups… button in the MCP Bridge window opens one directly. Copies are named
    <file name>/<local date time>.aseprite; copies older than 14 days are deleted and all copies
    together stay below 200 MB (ASEPRITE_MCP_AUTOSAVE_DAYS, ASEPRITE_MCP_AUTOSAVE_MB).
  • aseprite_status shows whether autosave works and where the copies go.
  • When the server adopts the active sprite on its own (first command after a restart), the result
    says which sprite it is working on.

Changed

  • Once connected, the MCP Bridge window only shows the status and its buttons; Settings…
    brings back token, port and the Lua option.
  • aseprite_batch pins the active frame for all ops without a frame, so playing the animation
    in Aseprite during a batch no longer spreads the ops over several frames.

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 17 Sep 04:11

Needs the MCP Bridge extension 0.6.0 for aseprite_selection, aseprite_changes and
rect: "selection"; everything else still works with extension 0.4.0.

Added

  • aseprite_view with critique: true: one small sheet with colour, grayscale, silhouette,
    true 1x size and optionally a colour-blindness (deutan) panel, for self-review.
  • aseprite_selection and rect: "selection" (read_pixels, view, clear, copy, outline,
    palette from_image): work on whatever the artist has selected.
  • aseprite_changes: watch mode – returns only the pixels the artist changed since the last
    call, as a pixel map (. unchanged, - erased).
  • aseprite_palette action ramp: hue-shifted shading ramps from base colours.
  • aseprite_outline (also in aseprite_batch): selective outline ("sel-out") or a solid
    outline, outside or inside the shapes.
  • Smaller tool list (~2,700 characters less per session): integer and colour checks are done by
    the server instead of being repeated in every schema.
  • Compatibility: tool schemas no longer use tuples, const or propertyNames (rejected by
    some MCP clients such as Gemini); new aseprite_help returns the usage guide for clients that
    ignore server instructions; aseprite_view is rendered by the server for images up to
    128×128 px, so it also works when Aseprite runs in a sandbox with its own /tmp.
  • Security: file only reads your own .json files from the temp directory or
    ASEPRITE_MCP_FILE_DIRS and never repeats their characters in errors; aseprite_open /
    aseprite_save only accept absolute paths with image formats; rows are limited to 4096
    characters; the critique sheet is capped in size; GitHub Actions are pinned to commits.
  • Ramps and selective outlines are computed in OKLCH (perceptual lightness), so pale colours
    get muted shadows instead of saturated orange, and yellow shadows turn warm, not green.

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 17 Sep 03:12

Server-only release: the MCP Bridge extension stays at 0.4.0 – no need to reinstall it.

Changed

  • Server and extension are versioned separately. The server only warns when the installed
    extension is older than the version it needs (currently 0.4.0), so server-only releases
    work with the installed extension.

Added

  • Stamps: aseprite_pixel_map and aseprite_animation accept stamps (reusable pixel maps)
    and place ([name, x, y, flip?]), so repeated parts are sent only once.
  • file: aseprite_pixel_map and aseprite_animation can read their drawing data from a
    .json file, so generated art does not have to be pasted into the conversation.

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 17 Sep 02:43

Includes everything since 0.2.0 (0.3.0 was never released).

Added

  • aseprite_read_pixels: read pixels back in the pixel_map format (palette + text rows),
    from one layer or the visible frame, optionally only a rectangle.
  • aseprite_copy: copy or mirror (flip) a region to another position, layer or frame.
  • aseprite_animation: draw several frames in one call; missing frames are created,
    later frames can be deltas of the previous one.
  • aseprite_palette: save, list and delete named palettes, or collect one from the image.
    paletteName works in pixel_map, read_pixels and animation.
  • aseprite_view takes a rect to zoom into a detail.
  • aseprite_pixel_map and aseprite_batch (all drawing operations in one call).
  • The server sends usage instructions (instructions.md) to the MCP client.
  • aseprite_status reports the server and extension version and warns when they differ.
  • aseprite_frame action new accepts frame (insert after that frame).
  • Integration tests that run the extension handlers inside a real Aseprite (aseprite -b).

Fixed

  • Indexed sprites: new sprites got an all-black palette, so every drawn color became black;
    colors are now matched against the sprite palette and never map to the transparent index.
  • Indexed sprites: new_sprite background and clear used the wrong pixel value.
  • aseprite_view and aseprite_frame report a clear error for frames that do not exist.
  • aseprite_open no longer opens a modal error dialog in Aseprite for missing files.
  • aseprite_save no longer blocks on export option dialogs (e.g. "GIF Options");
    the user's "don't show again" settings are left unchanged.
  • Numbers from the server are passed to the handlers as integers where they are whole
    (error messages said "Frame 5.0"); fractional values such as durations stay intact.
  • Error messages no longer start with the Lua source location.

Changed

  • Requires Node.js 20 or newer (Node.js 18 is end-of-life).
  • Tool results are compact JSON (fewer tokens).
  • Protocol: the extension sends its version in hello (backwards compatible).

v0.2.0

Choose a tag to compare

@sloplink sloplink released this 16 Sep 19:55

First public release