Aseprite MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ASEPRITE_MCP_PORT | No | The port for the local WebSocket server used to communicate with the Aseprite bridge (default is 32123). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| aseprite_statusB | Returns connection status with Aseprite, open document details, dimensions, color mode, layers, frames, active layer/frame, and revision. |
| get_sprite_infoA | Returns complete structural information about the active sprite, including dimensions, color mode, layers hierarchy, animation frames, active layer/frame, and revision. |
| get_canvasB | Renders the active sprite canvas/frame as a crisp PNG image using nearest-neighbor scaling. Returns official MCP image content. |
| get_pixel_gridA | Returns exact pixel values from the canvas or cel in absolute canvas coordinates (0,0 is top-left). Supports hex, rgba, indexed, or token-saving compact format. |
| inspect_spriteA | PRIMARY VISION TOOL: Inspects the active sprite. In a single call returns: crisp PNG image content, sprite dimensions, active layer and frame, revision, and compact pixel matrix. |
| get_pixel_grid_previewB | Generates an enlarged visual inspection PNG with nearest-neighbor scaling, 1px pixel grid separators, X/Y coordinate rulers, and optional highlights. |
| set_pixelsA | PRIMARY DRAWING TOOL: Paints tens to thousands of pixels in a single batch operation and single atomic undo step. Returns modified count, affected bounding box, and optional updated preview. |
| set_pixelA | Paints a single pixel at (x, y) with the specified color within an atomic undo transaction. |
| erase_pixelsB | Erases a list of pixel coordinates by turning them transparent (#00000000) within a single undo transaction. |
| undoA | Undoes the most recent editing tool call or transaction on the active sprite. |
| redoA | Redoes the most recently undone editing operation on the active sprite. |
| new_spriteC | Creates a new blank sprite document in Aseprite with specified dimensions and color mode. |
| open_spriteB | Opens an existing sprite file (.ase, .aseprite, .png) from disk. |
| save_spriteA | Explicitly saves the active sprite to disk. (Saves only when explicitly requested). |
| save_sprite_asC | Saves the active sprite to a specific target file path on disk. |
| export_pngC | Exports the active sprite or frame to a PNG image file on disk. |
| resize_canvasC | Resizes the active sprite canvas dimensions without interpolation or blurring. |
| draw_lineB | Draws a pixel art line from (x1, y1) to (x2, y2) using Bresenham's algorithm in a single undo transaction. |
| draw_rectangleA | Draws a rectangle (outline or filled) on the canvas in a single undo transaction. |
| draw_ellipseB | Draws an ellipse (outline or filled) within a bounding box in a single undo transaction. |
| flood_fillB | Fills a contiguous area of matching pixels starting from (x, y) with color in a single undo transaction. |
| replace_colorC | Replaces all occurrences of fromColor with toColor across the cel or sprite in a single undo transaction. |
| get_changes_sinceA | Differential inspection: returns modified regions and pixel deltas since a specified revision number, avoiding re-reading the entire canvas. |
| list_layersA | Lists all layers in the active sprite with visibility, opacity, blend mode, and hierarchy position. |
| create_layerB | Creates a new image layer in the active sprite. |
| rename_layerC | Renames an existing layer. |
| delete_layerB | Deletes a layer from the active sprite. Requires confirm: true for safety. |
| select_layerC | Sets the active working layer in Aseprite. |
| set_layer_visibilityC | Shows or hides a layer. |
| set_layer_opacityC | Adjusts opacity for a layer (0 to 255). |
| move_layerC | Reorders a layer position in the layer stack. |
| create_groupC | Creates a folder layer group for organizing layers. |
| list_framesA | Lists all animation frames with their frame numbers and durations in milliseconds. |
| select_frameC | Changes active frame number in the editor. |
| create_frameA | Creates a new blank animation frame after the specified frame or at the end. |
| duplicate_frameC | Duplicates an existing frame and its cels. |
| delete_frameB | Deletes an animation frame. Requires confirm: true. |
| set_frame_durationC | Sets duration for a frame in milliseconds. |
| create_tagC | Creates an animation tag for a range of frames (e.g. 'walk', 'idle'). |
| list_tagsB | Lists all animation tags defined in the sprite. |
| get_paletteA | Retrieves all colors in the active sprite's color palette with index, RGBA, and HEX values. |
| set_palette_colorC | Updates the color at a specific palette index. |
| find_palette_colorB | Finds exact or nearest color match in the active palette using Euclidean distance. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| active-sprite-info | |
| active-sprite-palette | |
| active-sprite-preview |
TDQS
Scored across 43 tools
Several inspection tools overlap significantly: aseprite_status and get_sprite_info return nearly identical structural details, and get_canvas, inspect_sprite, and get_pixel_grid_preview all provide visual/pixel inspection with different granularity. Descriptions clarify 'primary' tools, but an agent still faces multiple plausible choices for common tasks like checking sprite state or viewing the canvas.
Names are consistently snake_case and mostly follow a verb_noun pattern (create_frame, list_layers, set_pixel). Minor deviations exist: new_sprite uses 'new' instead of the dominant 'create', aseprite_status is noun-first, and undo/redo are bare verbs.
43 tools is well above the typical 3-15 range and exceeds the 25+ threshold for 'too many' in this rubric. Although Aseprite is feature-rich, several tools are redundant (e.g., get_canvas vs inspect_sprite vs get_pixel_grid; aseprite_status vs get_sprite_info), making the set heavy for an agent to navigate.
Core painting, layer, frame, and file workflows are covered, but several resources lack full lifecycle operations. Tags only support create/list (no delete/rename/update range), palette lacks add/remove/resize operations, and frames have no reorder/move tool, creating notable dead ends for common animation tasks.