aseprite-mcp
Provides tools for creating, editing, and exporting pixel art sprites, animations, and sprite sheets using Aseprite's scripting API. Allows AI assistants to perform drawing operations, manage layers and frames, apply transformations, and export assets.
Click on "Install 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., "@aseprite-mcpcreate a 32x32 blue square sprite"
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.
aseprite-mcp
An MCP server for Aseprite — create, edit, and export pixel art sprites, animations, and sprite sheets from any AI assistant.
Drawn and animated entirely via aseprite-mcp tools — no manual pixel editing!
Features
43 tools across 11 categories
Native drawing with configurable brush thickness via
app.useTool()Pixel-perfect algorithms (Bresenham line, midpoint circle) for thin strokes
Cross-platform — Windows, macOS, Linux
Secure — Lua injection prevention, sandboxed execution
Zero runtime dependencies beyond
@modelcontextprotocol/sdk
Tool Overview
Category | Tools | Examples |
Sprites | 6 |
|
Layers | 4 |
|
Frames | 4 |
|
Tags | 3 |
|
Drawing | 7 |
|
Transform | 5 |
|
Palette | 4 |
|
Cels | 3 |
|
Export | 3 |
|
Slices | 2 |
|
Utility | 2 |
|
📖 Full parameter reference: docs/API.md
Related MCP server: LibreSprite MCP
Quick Start
Requirements
Node.js ≥ 18
Aseprite ≥ 1.3 (aseprite.org)
Install
# npm global
npm install -g aseprite-mcp
# or from source
git clone https://github.com/ayigityol/aseprite-mcp.git
cd aseprite-mcp && npm install && npm run buildConfigure
{
"mcpServers": {
"aseprite": {
"type": "local",
"command": "node",
"tools": ["*"],
"args": ["/path/to/aseprite-mcp/build/index.js"],
"env": { "ASEPRITE_PATH": "/path/to/aseprite" }
}
}
}{
"mcpServers": {
"aseprite": {
"command": "node",
"args": ["/path/to/aseprite-mcp/build/index.js"],
"env": { "ASEPRITE_PATH": "/path/to/aseprite" }
}
}
}{
"servers": {
"aseprite": {
"command": "node",
"args": ["/path/to/aseprite-mcp/build/index.js"],
"env": { "ASEPRITE_PATH": "/path/to/aseprite" }
}
}
}{
"mcpServers": {
"aseprite": {
"command": "aseprite-mcp"
}
}
}Environment Variables
Variable | Description |
| Path to Aseprite executable. Auto-detected if not set. |
| Set |
Auto-detection searches standard install paths on all platforms, plus system PATH.
Architecture
sequenceDiagram
participant Client as MCP Client
participant Server as aseprite-mcp
participant Aseprite as Aseprite CLI
Client->>Server: Tool call (JSON-RPC via stdio)
Server->>Server: Generate Lua script
Server->>Aseprite: aseprite -b --script temp.lua
Aseprite->>Aseprite: Execute Lua (headless)
Aseprite-->>Server: stdout: __RESULT__{"success":true, ...}
Server->>Server: Parse JSON, cleanup temp file
Server-->>Client: Tool resultgraph LR
A[Tool Call] --> B{Thickness > 1?}
B -->|Yes| C[app.useTool<br/>Native Brush]
B -->|No| D[image:drawPixel<br/>Pixel Algorithms]
C --> E[Save & Return]
D --> EAll operations run headless — no GUI window is opened.
Docker
# Build
docker build -t aseprite-mcp .
# Run (mount your Aseprite binary + working directory)
docker run --rm -i \
-v /path/to/aseprite:/usr/local/bin/aseprite:ro \
-v ./sprites:/sprites \
aseprite-mcp
# Or use Docker Compose
docker compose upAseprite must be mounted into the container. The image packages only the MCP server.
Development
npm run build # Compile TypeScript
npm run watch # Recompile on changes
npm test # Run 74 unit tests (vitest)
npm run test:watch # Watch mode
npm run inspector # MCP Inspector for interactive testingSecurity
luaEscape()— prevents Lua injection by escaping\,",\n,\rluaPath()— normalizes and escapes file pathsexecFile()— argument arrays, no shell interpolationpcall()wrapping — all generated Lua scripts have error handlersLocal only — no data sent to external services
Troubleshooting
Problem | Solution |
"Aseprite executable not found" | Set |
Tool returns Aseprite error | Set |
"Layer not found" / "Tag not found" | Names are case-sensitive — use |
Sprite won't save | Ensure the output directory exists |
License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ayigityol/aseprite-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server