aseprite-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DEBUG | No | Set 'true' for verbose stderr logging. | |
| ASEPRITE_PATH | No | Path to Aseprite executable. Auto-detected if not set. |
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_spriteB | Create a new Aseprite sprite file |
| open_spriteA | Open a sprite file and return its metadata |
| save_spriteC | Save/convert a sprite to a different format or path |
| get_sprite_infoA | Get detailed sprite metadata: dimensions, layers, frames, tags, palette, slices |
| resize_spriteC | Resize a sprite to new dimensions |
| crop_spriteB | Crop a sprite to given bounds |
| add_layerB | Add a new layer to a sprite |
| remove_layerB | Remove a layer from a sprite by name |
| list_layersA | List all layers in a sprite with their properties |
| set_layer_propertiesB | Set properties on a layer (visibility, opacity, blend mode, name) |
| add_frameC | Add new frame(s) to a sprite |
| remove_frameA | Remove a frame from a sprite |
| set_frame_durationB | Set the duration of a frame in milliseconds |
| list_framesA | List all frames in a sprite with durations |
| create_tagB | Create an animation tag on a range of frames |
| remove_tagB | Remove an animation tag by name |
| list_tagsB | List all animation tags in a sprite |
| draw_pixelsB | Draw individual pixels on a specific layer and frame |
| draw_rectB | Draw a rectangle on a specific layer and frame |
| draw_circleC | Draw a circle on a specific layer and frame |
| draw_lineB | Draw a line between two points on a specific layer and frame |
| draw_ellipseC | Draw an ellipse on a specific layer and frame using Aseprite's native ellipse tool |
| fill_areaB | Flood fill an area starting from a point using Aseprite's native paint bucket tool |
| replace_colorB | Replace all occurrences of one color with another in a sprite |
| flip_spriteA | Flip the entire sprite canvas horizontally or vertically |
| rotate_spriteB | Rotate the sprite canvas by 90, 180, or 270 degrees |
| flatten_layersB | Flatten all layers in a sprite into a single layer |
| merge_downB | Merge a layer with the one below it |
| outlineB | Add an outline around non-transparent pixels on a layer |
| get_paletteC | Get all colors in a sprite's palette |
| set_palette_colorsB | Set colors in a sprite's palette |
| load_paletteC | Load a palette from a file into a sprite |
| resize_paletteB | Resize a sprite's palette to a new number of entries |
| move_celB | Move a cel to a new position |
| set_cel_opacityC | Set the opacity of a cel |
| clear_celB | Clear (delete) a cel at a specific layer and frame |
| export_sprite_sheetB | Export a sprite as a sprite sheet image with optional JSON data |
| export_frameA | Export a single frame as an image file |
| export_layersB | Export each layer as a separate image file |
| create_sliceB | Create a named slice region in a sprite |
| remove_sliceB | Remove a slice by name |
| run_scriptB | Execute an arbitrary Lua script in Aseprite (for advanced operations) |
| get_aseprite_versionA | Get Aseprite version information |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 43 tools
Most tools have clearly distinct targets and actions, but a few boundaries blur: open_sprite and get_sprite_info both return metadata, get_sprite_info aggregates data also available from list_layers/list_frames/get_palette, and draw_circle/draw_ellipse are mathematically similar. Descriptions are clear enough that agents can mostly avoid misselection, but occasional overlap remains.
The tool set consistently uses snake_case verb-first names with predictable prefixes like list_, remove_, set_, and export_. Minor deviations prevent a perfect score: create_sprite/create_tag/create_slice versus add_layer/add_frame, plus bare action names like merge_down and outline.
43 tools is well above the typical well-scoped range and passes the 25+ threshold, creating a heavy action-selection burden for agents. While Aseprite is a broad editor, the count could be reduced by consolidating similar drawing and export operations.
The surface covers the full core sprite-editing lifecycle: sprite create/open/save/transform, layer/frame/cel management, palette and tag operations, drawing primitives, multiple export modes, and run_script as an advanced escape hatch. Workflows have no obvious dead ends for typical Aseprite tasks.