pixelart-mcp
The pixelart-mcp server is a local toolkit for creating, editing, animating, and exporting pixel art on PNG files, designed to be AI‑friendly by encoding artistic techniques.\n\n- Canvas Management: Create canvases up to 1024×1024 pixels (transparent or colored), duplicate, resize (grow/crop with 9‑way anchor), scale with nearest‑neighbor sampling, shift (with optional wrapping), flip/rotate, copy/composite regions within or between canvases, and view with optional grid overlays. Get canvas info like dimensions and palette.\n- Drawing & Editing: Draw individual pixels in batch (up to 4096 per call), shapes (lines, rectangles, ellipses, polygons, Bézier curves), flood fill, replace colors, draw from text grids using a color legend, and auto‑outline sprites.\n- Craft & Shading: Build color ramps from a base color, auto‑shade regions into 3D forms (sphere, cylinder, bevel), draw dithered gradients (linear/radial with Bayer or checker patterns), mirror canvases for symmetry, apply curated palettes (sweetie16, pico8, dawnbringer16, slso8, nes), snap colors to a palette, and apply sub‑pixel anti‑aliasing.\n- Animation: Onion‑skin view (up to 3 previous frames), filmstrip view, export animated GIFs with per‑frame durations and ping‑pong mode, export/pack spritesheets, and slice spritesheets back into frames.\n- Export & Preview: Export upscaled PNGs with crisp nearest‑neighbor scaling. Use pixel_batch to combine multiple operations in one call, with preview or preview_diff options to save tokens by only showing changed regions.\n- AI‑Friendly Design: Tools bundle pixel art craftsmanship (shading, anti‑aliasing, palette management) so models can produce high‑quality sprites without being artists.
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., "@pixelart-mcpcreate a 16x16 canvas with a transparent background"
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.
pixelart-mcp
A local MCP server for creating pixel art — no paid software, no external apps. Canvases are ordinary PNG files on disk, edited with Pillow. One canvas pixel is one image pixel; exports upscale with nearest-neighbor so pixels stay crisp.
The server encodes pixel-art craft in its tools, so models — including small
ones — don't have to be artists to produce good sprites: hue-shifted shading
ramps, one-call auto-shading (sphere / cylinder / bevel), dithered gradients,
symmetry mirroring, text-grid drawing and reading, curated palettes, and an
on-demand technique guide (pixel_guide) with a staged workflow
(size → palette → silhouette → flats → shading → details → finish).
Sprites animate the same way: rig one drawing into named parts and the server generates the whole cycle from it, so an 8-frame walk costs one drawing rather than eight.
Tools
Craft (color, shading, knowledge)
Tool | Purpose |
| Technique playbook: workflow, sizing, color, shading, dithering, materials, characters, scenes, animation |
| One base color → professional dark→light ramp (hue-shifted shadows/highlights) |
| Flat regions → shaded 3D form in one call: |
| Linear/radial gradients with ordered dithering ( |
| Draw from a text grid + character→color legend — the reliable way to place shapes |
| Read the canvas back as a labeled character grid with exact coordinates |
| Draw half a symmetric subject, mirror it across an axis |
| Curated, pre-harmonized palettes (sweetie16, pico8, dawnbringer16, slso8, nes) |
| Angular silhouettes from a handful of vertices (hulls, roofs, blades, mountains) |
| Quadratic/cubic Bézier strokes for organic contours (necks, tails, hair, flames) |
| Sub-pixel anti-aliasing: softens diagonal staircases; uses partial alpha on transparent backgrounds |
| Run many drawing operations on one canvas in a single call — the default way to draw |
Drawing
Tool | Purpose |
| New PNG canvas (up to 1024x1024), any background or transparent |
| Batch-set individual pixels, per-point colors supported |
| Shape primitives, filled or outlined |
| Paint-bucket fill of a contiguous region |
| Exact-match palette swap across the canvas |
| Snap all colors to the nearest entry of a given palette |
| Auto 1px outline: |
Canvas surgery
Tool | Purpose |
| Copy/composite a rect within or between canvases ( |
| Shift art by (dx, dy), optionally wrapping at edges |
| Grow/crop canvas bounds with a 9-way anchor, art unscaled |
| Nearest-neighbor rescale (squash-and-stretch friendly) |
| Flip / rotate the whole canvas |
Animation
Tool | Purpose |
| Name the movable parts of a drawn sprite, with a labelled preview that flags art no part covers |
| Generate a whole animation loop from one rigged sprite |
| Built-in cycles: |
| Start the next frame from the current one |
| Current frame over faded ghosts of up to 3 earlier frames |
| Filmstrip contact sheet of many frames in one image |
| Looping GIF with per-frame durations and ping-pong mode |
| Pack frames into a grid PNG for game engines |
| Split an existing sheet back into frame canvases |
Rigging: one drawing, N frames
Nobody draws 240 frames. Draw the character once, name its parts, and let the server composite the cycle:
pixel_define_rig → pixel_render_motion motion='walk' → pixel_export_gifEvery frame is stamped from the source pixels at new offsets, and offsets round to whole pixels — so nothing is resampled, nothing flickers, and re-rendering the same rig is byte-identical. Consistency is arithmetic, not luck.
Draw the limbs in a parts bin beside the sprite rather than on the body. A
part is a rectangle of source pixels, so limbs drawn on top of each other can
never be boxed apart — but a true side view needs them to overlap once placed.
at_x/at_y place a binned part on the body; frame_width/frame_height
keep the bin out of the rendered frames. See
benchmarks/examples/demo_walk.py for a
complete 8-frame walk from a single 48×48 sheet, and
demo_dusk.py for a full 128×96 scene —
parallax, a walking figure, a guttering lantern, flapping birds, a tumbling
leaf and twinkling stars, all 24 frames of it composited from one 224×200
sheet, driving every motion channel.
Loops close seamlessly under two rules: layers that tile scroll exactly one tile period per loop, and sprites that don't tile start and end off-frame, so the wrap lands where nobody can see it.
No arbitrary rotation. Pixel art does not survive being rotated by
anything but a multiple of 90°, so the orientation channels are flip and
rot only. For an in-between limb angle, draw that angle as its own part and
switch to it with the use channel — which is how real sprite work has always
handled it. Motion channels: dx, dy, squash (interpolated), flip,
rot, visible, use (held). Read pixel_guide topic='animation' first.
Inspection & export
Tool | Purpose |
| Render the canvas as an image; |
| Dimensions + palette report without rendering |
| Nearest-neighbor upscaled PNG export |
Mutating tools accept preview: true to return a rendered image of the result
in the same call, and preview_diff: true to return only the region that
changed (roughly 90% fewer image tokens while iterating on a detail; falls back
to the full canvas when the change is large). Colors are hex (#1a1c2c,
#1a1c2cff), CSS names (crimson), or transparent (which erases).
Related MCP server: Pixel Art MCP
Design principle
Describe shapes, don't enumerate pixels. Every tool exists so a model can
express an artistic intent in one call rather than hundreds of coordinates: a
mountain is 5 polygon vertices, a dragon's neck is one Bézier, a sky is one
dithered gradient, a shaded sphere is one pixel_shade_region call. The staged
workflow in pixel_guide (silhouette → flats → shading → details → finish)
mirrors how pixel artists actually construct a piece, and pixel_apply_spaa is
the hand-finishing pass at the end.
Token cost
A finished piece is 20–30 operations. The dominant cost is not the tool schemas (~18k tokens, sent once and cached by the client) but the round trips — every separate call re-sends the whole conversation. So:
pixel_batchis the default way to draw. Send a whole stage as one call. Operations run in order, share the batch'spath, and produce output byte-identical to running them individually.preview_diff: truereturns only the region a call changed, rendered small — roughly 90% fewer image tokens while iterating on a detail.High-level tools over pixel lists. One
pixel_draw_polygoncan place thousands of pixels that would otherwise be enumerated by hand.pixel_canvas_infotakestop_nto trim its palette report.
Client-side knobs matter too and are worth setting: prompt caching (tool schemas are a stable prefix, so they cache well) and per-session tool allow-listing. Deliberately not done here: compressing the tool descriptions. They carry the craft guidance — light direction, material recipes, when to dither — that lets smaller models draw well, so shrinking them trades quality for tokens the client is already caching.
Benchmarks
benchmarks/BENCHMARKS.md defines 20 standard
subjects (detailed apple, glass bottle with water, medieval knight, Spider-Man,
Iron Man in sunlight, campfire, dragon, ice cave, ...) with per-subject
must-haves and a 7-dimension rubric — run them across models or server versions
to measure whether a tooling change actually improves the art.
benchmarks/examples/ holds reference pieces drawn with the craft toolset, and
benchmarks/runs/ holds completed runs with the script for every piece.
Setup
Requires uv. Register with Claude Code:
claude mcp add pixelart -s user -- uv --directory /path/to/pixelart-mcp run -m pixelart_mcpOr in any MCP client config:
{
"mcpServers": {
"pixelart": {
"command": "uv",
"args": ["--directory", "/path/to/pixelart-mcp", "run", "-m", "pixelart_mcp"]
}
}
}Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceA local MCP server for generating and editing images using OpenAI-compatible APIs. It provides text-to-image generation and image editing capabilities with configurable endpoints and saves output directly to local files.Last updated27MIT
- AlicenseBqualityCmaintenanceAn MCP server that generates pixel-art PNGs from text prompts, using a free image backend, and saves them directly to your project directory.Last updated2MIT
- Alicense-qualityDmaintenanceA pixel art animation MCP server for AI agents, enabling scene generation, sprite drawing, and PNG export with zero latency.Last updated312MIT
- Flicense-qualityDmaintenanceAn MCP server that enables AI coding agents to create pixel art programmatically by providing canvas manipulation tools and PNG export.Last updated101
Related MCP Connectors
Generate authentic pixel art - sprites, animations, and tilesets - from any MCP client
MCP server for NanoBanana AI image generation and editing
MCP server for Flux AI image generation
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/light-vp/pixelart-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server