mnehmos.aseprite.mcp
Provides tools for creating, inspecting, editing, and exporting pixel art projects using headless Aseprite, including sprites, animations, spritesheets, and conversion of images to indexed pixel art.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mnehmos.aseprite.mcpcreate a 16x16 pixel art coin sprite and export it as a PNG"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mnehmos.aseprite.mcp
MCP server exposing headless Aseprite as five consolidated tools, so AI agents can create, inspect, edit and export pixel art — sprites, animations, spritesheets — and convert arbitrary images (e.g. ComfyUI renders) into indexed pixel art.
Aseprite runs fully batch (aseprite -b --script <lua>); no GUI ever opens.
State lives in .aseprite project files on disk plus a SQLite audit log —
every tool call is one validated headless run that reports the files actually
written.
Tools
Tool | Actions | Purpose |
| new, list, info, palette, frames, layers | Project lifecycle + inspection (incl. flattened pixel grids, capped at 128x128) |
| map, pixels, shape, clear | Drawing — |
| png, gif, sheet | Flattened per-frame PNGs, animated GIF, spritesheets (integer upscaling) |
| convert | Image → indexed pixel art (downscale + color quantization) |
| run | Raw Lua escape hatch (full Aseprite scripting API) |
Safety model
Serialized projects: calls that touch the same
.asepriterun one at a time (per-project mutex) — parallel tool calls can't interleave read-modify- -write cycles and lose pixels.Backups: every mutating action snapshots the project to
<file>.aseprite.bakfirst; the response reports thebackuppath. One slot, newest-wins — recovery from a bad draw is always one rename away.Fresh provenance: exports stat the output directory and only report files written by that run.
aseprite_scriptis the trust boundary: it runs arbitrary Lua with the full scripting API and no path sandboxing — that's what makes it the escape hatch. Run this server only where its Lua privileges are acceptable.
The ASCII pixel-map (why map exists)
Language models draw best when they can read the art. A map is a palette header plus one character per pixel:
PAL:
K #1a1c2c
Y #ffcd75
MAP:
..KKKK..
.KYYYYK.
.KYYYYK.
..KKKK... is always transparent; multiple MAP: sections become successive
animation frames (draw only what changes — new frames copy the previous
cel). The server validates the map (row widths, declared characters, hex
format) before Aseprite ever runs.
Related MCP server: aseprite_mcp
Layout (canonical, env-overridable)
Binary:
F:/ComfyUI/tools/aseprite/aseprite.exe(v1.3.18.3, self-compiled)Projects:
F:/ComfyUI/aseprite_output/projects/*.asepriteExports:
F:/ComfyUI/aseprite_output/(PNGs here load straight into ComfyUILoadImagenodes)Generated scripts:
F:/ComfyUI/aseprite_output/mcp-scripts/(kept for debugging)Audit/provenance DB:
data/aseprite-mcp.db
Setup
npm install
npm run build
npm test # no live Aseprite needed (stubbed runner)
npm run smoke # end-to-end against the real binaryRegister (ZCode cli/config.json → mcp.servers):
"aseprite": {
"command": "<node>",
"args": ["F:\\Github\\mnehmos.aseprite.mcp\\dist\\index.js"],
"env": { "ASEPRITE_BIN": "F:\\ComfyUI\\tools\\aseprite\\aseprite.exe" },
"enabled": true
}Environment
Var | Default |
|
|
|
|
|
|
|
|
|
|
|
|
Design notes
Stateless runs, durable state. Each call loads the
.asepritefresh, mutates in memory, saves explicitly. Destructive Aseprite commands are safe on the in-memory copy (e.g.infoflattens a throwaway copy to read pixels).Report reality. Export actions stat the files on disk after the run and return those paths/sizes — Aseprite occasionally renames sequence outputs.
API choices validated against the binary, not guessed:
Frame.duration(notframeDuration),Color{index=},ColorQuantization{maxColors},json.encodemarker payloads, and flatten-to-new-sprite for deterministic single-frame PNGs (baresaveAs('*.png')writes numbered sequences on multi-frame sprites). Validation scripts live inF:/ComfyUI/aseprite_output/scripts/.
This server cannot be deployed
Maintenance
Related MCP Connectors
- AnimGenOAuthcom.animgen
Create AI animations and export transparent sprite sheets, alpha video, frames, and game assets.
AI game assets for agents: consistent sprites, 2D animations, tiles, maps, music and engine exports.
Video, audio, and image processing for AI agents: convert, transcribe, upscale - 150+ operations.
Generate authentic pixel art - sprites, animations, and tilesets - from any MCP client
Related MCP Servers
- AlicenseCqualityBmaintenanceEnables AI assistants to control Aseprite for drawing and editing images through its API.59505MIT
- AlicenseAqualityCmaintenanceEnables AI sprite generation and semantic tools for Aseprite, allowing LLMs to create pixel art, add animations, and manage projects with visual feedback.61GPL 3.0
- AlicenseCqualityCmaintenanceEnables AI assistants to control Aseprite for creating pixel art and animated sprites, with 104 tools covering canvas, drawing, animation, palettes, effects, and more.100MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI to create pixel art in Aseprite through pixel-level drawing primitives, read canvas screenshots, and iterate until satisfied.7MIT