Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ASEPRITE_MCP_PORTNoWebSocket port (default 9123)9123
ASEPRITE_MCP_TOKENNoAuthentication token to use instead of the token file. Must match the token configured in the Aseprite MCP Bridge extension.
ASEPRITE_MCP_TIMEOUTNoPer-command timeout in milliseconds (default 15000)15000
ASEPRITE_MCP_ALLOW_LUANoSet to '1' to enable the aseprite_run_lua tool. This is an additional opt-in; the MCP Bridge window must also allow arbitrary Lua code.
ASEPRITE_MCP_TOKEN_FILENoLocation of the token file. Default is ~/.config/aseprite-mcp/token (or $XDG_CONFIG_HOME).

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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
aseprite_statusA

Checks the connection and returns info about the active sprite: size, color mode, layers, frames, active layer/frame. Coordinates start at (0,0) in the top-left corner.

aseprite_helpA

Returns the short usage guide (efficient workflow, pixel_map format, stamps, pixel-art tips). Read it once before drawing if your client did not show the server instructions.

aseprite_openA

Opens a file (.aseprite, .png, .gif, ...) as the active sprite.

aseprite_new_spriteB

Creates a new sprite and makes it active. Returns the sprite status.

aseprite_pixel_mapA

Most token-efficient way to draw many exact pixels: a palette of single-character keys and one text row per pixel row. '.' and space leave the pixel unchanged; map a key to '#00000000' to erase. One undo step. Example: palette {"k":"#222034","y":"#fbf236"}, rows ["..kk..", ".kyyk.", "kyyyyk"]. Repeated parts: define stamps once and draw them with place. Generated art: write the data to a .json file and pass file.

aseprite_set_pixelsA

Sets individual pixels exactly, as a single undo step. The color '#00000000' erases a pixel. For more than a few pixels prefer aseprite_pixel_map (far fewer tokens).

aseprite_drawA

Uses an Aseprite tool like a mouse stroke. line/rectangle/filled_rectangle/ellipse/filled_ellipse take 2 points (start, end; inclusive). pencil/eraser/spray take any number of points (freehand path). paint_bucket takes 1 point. curve takes 4 points. polygon/contour take the corner points.

aseprite_clearB

Clears the whole layer in the frame, or only a rectangle.

aseprite_layerB

Create (new, becomes active), activate (select), delete, rename, or show/hide (visible) a layer. Returns the sprite status.

aseprite_frameA

Animation: create a frame after the given/active one (new, copies it by default, becomes active), activate (select), delete, or set its duration (in seconds). To draw several frames at once use aseprite_animation. Returns the sprite status.

aseprite_copyA

Copies a rectangle of pixels, optionally flipped, to another position, layer or frame (one undo step). Without x/y it writes back in place, so flip='h' mirrors the region where it is. Symmetry example on a 16px-wide sprite: rect [0,0,8,16], flip 'h', x 8 mirrors the left half onto the right half.

aseprite_animationA

Draws several frames in ONE call, each as a pixel map, creating missing frames automatically. With copyPrevious (default) a new frame starts as a copy of the previous one, so each entry only needs the changed rows (use x/y and '.' to leave pixels unchanged; '.' never erases, map a key to '#00000000' for that). Parts that repeat across frames (head, body …) belong in stamps, placed per frame with place: [name, x, y]. For generated animations write frames/palette/stamps to a .json file and pass file. Returns the sprite status.

aseprite_outlineA

Adds a 1px outline around (outside) or on the edge of (inside) everything opaque on a layer, in one undo step. style 'selout' (default) derives each outline pixel from the colour it borders: darker and cooler on the shadow side, lighter on the side facing the top-left light – the classic selective outline. style 'solid' uses one colour. Works on sprites up to 128x128 (or pass rect). Semi-transparent pixels (alpha < 128) count as empty.

aseprite_historyC

Undoes or redoes steps.

aseprite_saveA

Saves the active sprite. Without path the existing file is overwritten. With copy=true only a copy is exported (e.g. as .png).

aseprite_batchA

Runs several operations in ONE call, in order (saves round trips and tokens). Each item is {"op": , ...the same arguments as the tool aseprite_}. Allowed ops: new_sprite, pixel_map, set_pixels, draw, clear, layer, frame, copy, animation, outline, history, save. Stops at the first error; earlier ops stay applied (each op is its own undo step). Returns one short result per op plus the final sprite status if layers/frames changed. Example: [{"op":"layer","action":"new","name":"bg"},{"op":"draw","tool":"filled_rectangle","points":[[0,0],[15,15]],"color":"#5fcde4"},{"op":"layer","action":"new","name":"fg"},{"op":"pixel_map","palette":{"k":"#000"},"rows":["kk"],"x":4,"y":4}]

aseprite_read_pixelsA

Reads pixels back in the same palette + rows format as aseprite_pixel_map, so you can inspect exact colors or copy/modify a region cheaply. '.' = fully transparent; trailing '.' are cut off. Without layer the visible, flattened frame is read; with layer only that layer. Pass the palette (or paletteName) you drew with to get the same keys back. Max 16384 pixels per call.

aseprite_paletteA

Stores named palettes (character -> color) on disk so they can be reused across sprites and sessions via paletteName in aseprite_pixel_map, aseprite_read_pixels, aseprite_animation. Actions: save (name + colors), list (all saved palettes), delete (name), from_image (name; collects the colors of the visible frame, or of layer/rect, and saves them with generated keys), ramp (builds hue-shifted shading ramps – cool, saturated shadows and warm highlights – from base colours; e.g. ramps [{"base":"#d63a3a","keys":"DmrRH"}] gives 5 keys dark->light with the base in the middle; saved when name is given).

aseprite_selectionA

Returns the region the artist has selected in Aseprite ({empty:true} if nothing is selected), so a request like 'improve this part' needs no coordinates. Most tools also accept rect "selection" directly. mask=true adds the exact shape as rows ('#' selected) when it is not a plain rectangle.

aseprite_changesA

Watch mode for drawing together. The first call starts watching the active sprite. Later calls return only the pixels the ARTIST changed since the previous call (your own tool calls are not reported), as a pixel map of the changed region: '.' = unchanged, '-' = erased, other keys = new colours. Feed it to aseprite_pixel_map to build on it. peek=true looks without moving the baseline; reset=true starts over.

aseprite_viewA

Renders the visible, flattened frame as an upscaled PNG so you can look at and check the result yourself. Transparency is shown as a checkerboard. Use rect to zoom into a detail. Call it once after a drawing pass, not after every step. If your client cannot show images, use aseprite_read_pixels instead. critique=true instead returns ONE small sheet for self-review: colour, grayscale (value/contrast check), black silhouette (readability) and true 1x size; add 'deutan' to panels for a colour-blindness check. Max 128x128 px (or pass rect).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.8/5.0

Scored across 21 tools

Disambiguation5/5

Each tool targets a distinct operation: sprite lifecycle (new, open, save), pixel editing (set, map, read, copy, draw, clear), layer/frame management, animation, palette handling, collaboration (changes), and viewing. Overlapping tools like pixel_map vs set_pixels are explicitly differentiated by use case in their descriptions.

Naming Consistency4/5

All tools share the consistent 'aseprite_' prefix and snake_case style, but the remainder mixes verbs (open, clear, draw, copy, view) with nouns (status, layer, frame, palette, animation) and compound names (pixel_map, set_pixels). The pattern is readable but not strictly verb_noun, so it's slightly inconsistent semantically.

Tool Count4/5

At 21 tools, the set is on the heavier side of the typical range, but it's justified by the complexity of the Aseprite domain (sprites, layers, frames, animation, palettes, collaboration, batching). Each tool has a clear role, and the batch tool helps consolidate operations, making the count reasonable.

Completeness5/5

The tool surface covers the full lifecycle of sprite creation, editing, saving, and viewing, plus advanced features like animation, outlines, palettes, and collaborative changes. It includes all core drawing operations (pixel map, draw, copy, clear) and supports undo/redo via history. No obvious dead ends or missing critical functionality.

Maintenance

ActivityMaintained
ResponsivenessNo issues