pixelart-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pixel_create_canvasA | Create a new pixel art canvas saved as a PNG file. The canvas is true-size (one canvas pixel = one image pixel); keep sprites small (e.g. 16x16, 32x32, 64x64) and upscale later with pixel_export_png. Parent directories are created automatically. Refuses to replace an existing file unless overwrite=true. Returns: JSON {"canvas", "width", "height", "background"}; plus a rendered image of the canvas when preview=true. On failure returns "Error: ...". |
| pixel_draw_pixelsA | Set individual pixels on a canvas in one batch. Each point may carry its own color; points without one use the batch
default Returns: JSON {"canvas", "pixels_drawn", "skipped_out_of_bounds"?}; plus a rendered image when preview=true. On failure returns "Error: ...". |
| pixel_draw_lineA | Draw a straight line between two points on a canvas. Endpoints may lie outside the canvas; the visible segment is drawn. Drawing 'transparent' erases. Returns JSON {"canvas", "line", "color"}; plus a rendered image when preview=true. On failure returns "Error: ...". |
| pixel_draw_rectA | Draw a filled or outlined rectangle on a canvas. (x, y) is the top-left corner; width/height are in pixels. Drawing 'transparent' erases the region. Returns JSON {"canvas", "rect", "color", "filled"}; plus a rendered image when preview=true. On failure returns "Error: ...". |
| pixel_draw_ellipseA | Draw a filled or outlined ellipse inside a bounding box on a canvas. (x, y) is the bounding box's top-left corner; equal width and height give a circle. Drawing 'transparent' erases. Returns JSON {"canvas", "ellipse", "color", "filled"}; plus a rendered image when preview=true. On failure returns "Error: ...". |
| pixel_flood_fillB | Flood-fill the contiguous region containing (x, y), like a paint bucket. Fills all connected pixels that exactly match the seed pixel's color. Returns JSON {"canvas", "seed", "color"}; plus a rendered image when preview=true. On failure returns "Error: ...". |
| pixel_replace_colorB | Replace every pixel of one exact color with another across the canvas. Useful for palette swaps and recoloring sprites. Matching is exact RGBA. Returns JSON {"canvas", "find", "replace", "pixels_changed"}; plus a rendered image when preview=true. On failure returns "Error: ...". |
| pixel_transform_canvasA | Flip or rotate the entire canvas in place. Operations: flip_horizontal, flip_vertical, rotate_90_cw, rotate_90_ccw, rotate_180. 90-degree rotations swap the canvas dimensions. Returns JSON {"canvas", "operation", "width", "height"}; plus a rendered image when preview=true. On failure returns "Error: ...". |
| pixel_view_canvasA | Render a canvas as an image so you can see its current state. Small canvases are upscaled with nearest-neighbor (crisp pixels) to about 512px on the long edge unless an explicit scale is given. Use this after a series of edits to check your work. Returns a text summary plus the rendered image. On failure returns "Error: ...". |
| pixel_canvas_infoA | Report a canvas's dimensions and color palette without rendering it. Returns JSON: {"canvas", "width", "height", "unique_colors", "has_transparency", "top_colors": [{"color", "count"}, ...]} with the up to 16 most-used colors (fully transparent pixels reported as 'transparent'). On failure returns "Error: ...". |
| pixel_export_pngA | Export a canvas as an upscaled PNG with crisp nearest-neighbor pixels. The source canvas is untouched; the export is written to out_path (parent directories are created). Use scale 1 for game-ready true-size assets and larger scales for display or sharing. Returns JSON {"source", "exported", "scale", "width", "height"}. On failure returns "Error: ...". |
| pixel_export_gifA | Combine same-size canvas PNGs into a looping animated GIF. Frames play in the order given at duration_ms per frame (or per-frame durations_ms). ping_pong=true plays forward then backward for seamless bounce/idle loops. Transparency is preserved as GIF binary transparency (alpha <= 128 becomes transparent). Source canvases are untouched. Returns JSON {"exported", "frames", "frames_played", "scale", "width", "height"}. On failure returns "Error: ...". |
| pixel_export_spritesheetA | Pack same-size canvas PNGs into a single spritesheet PNG grid. Frames are placed left-to-right, top-to-bottom, |
| pixel_duplicate_canvasA | Copy a canvas to a new file — the standard way to start the next animation frame from the current one, then edit only what moves. Refuses to replace an existing file unless overwrite=true. Returns JSON {"source", "canvas", "width", "height"}. On failure returns "Error: ...". |
| pixel_copy_regionA | Copy a rectangular region from one canvas onto another (or within the same canvas) — for moving limbs between frames, stamping repeated parts, or compositing a sprite onto a background. mode='over' (default) respects transparency like layering; mode='replace' overwrites the destination rect including alpha. Destination coordinates may be negative or overhang; the region clips to the destination canvas. Returns JSON {"source", "canvas", "region", "pasted_at", "mode"}; plus a rendered image of the destination when preview=true. On failure returns "Error: ...". |
| pixel_shift_canvasA | Shift the whole canvas by (dx, dy) pixels — quick motion between animation frames (bobbing, jumping, sliding). Without wrap, pixels shifted past the edge are lost and vacated space is transparent; with wrap=true they re-enter from the opposite edge (good for scrolling backgrounds). Returns JSON {"canvas", "shift", "wrap"}; plus a rendered image when preview=true. On failure returns "Error: ...". |
| pixel_resize_canvasA | Change the canvas bounds without scaling the art — grow the canvas (new space is transparent) or crop it, with the existing art held at the chosen anchor. Pixel sizes are unchanged; use pixel_scale_canvas to actually rescale art. Example: after squashing a sprite, resize back to the original height with anchor='bottom' to keep it grounded. Returns JSON {"canvas", "width", "height", "anchor"}; plus a rendered image when preview=true. On failure returns "Error: ...". |
| pixel_scale_canvasA | Rescale the canvas and its art to new dimensions with nearest-neighbor sampling (no blurring). Integer multiples or divisors keep pixels perfectly crisp; other ratios will distort — useful deliberately for squash-and-stretch animation frames. Returns JSON {"canvas", "width", "height"}; plus a rendered image when preview=true. On failure returns "Error: ...". |
| pixel_apply_paletteA | Snap every opaque pixel to the nearest color in a given palette — enforce a consistent game palette across sprites or clean up stray colors. Nearest match is by RGB distance; each pixel's alpha is preserved and fully transparent pixels are untouched. Returns JSON {"canvas", "palette_size", "pixels_changed"}; plus a rendered image when preview=true. On failure returns "Error: ...". |
| pixel_outline_spriteA | Draw a 1px outline around all opaque art on the canvas — the classic finishing pass that makes sprites pop against any background. The outline occupies transparent pixels adjacent to the art; the art itself is untouched. If the sprite touches the canvas edge, grow the canvas first with pixel_resize_canvas so the outline has room. Returns JSON {"canvas", "color", "pixels_outlined"}; plus a rendered image when preview=true. On failure returns "Error: ...". |
| pixel_onion_viewA | Render the current frame over faded ghosts of up to 3 earlier frames — onion-skinning, the standard way to judge motion between animation frames. List previous_paths most-recent first; ghosts fade with distance (35%, 20%, 12% opacity). Pass a tint color to show ghosts as silhouettes when frame colors overlap too much. Nothing is written to disk. Returns a text summary plus the rendered image. On failure returns "Error: ...". |
| pixel_view_framesA | Render several same-size canvases side by side as one filmstrip image — review a whole animation or sprite set at a glance. Frames are laid out left-to-right, top-to-bottom on a neutral gray backdrop with thin separators, in the order given. Nothing is written to disk. Returns a text summary naming each frame position plus the rendered image. On failure returns "Error: ...". |
| pixel_slice_spritesheetA | Split a spritesheet PNG into individual frame canvases — the way to bring existing game assets in for editing or re-animation. Tiles are read left-to-right, top-to-bottom on a strict frame_width x frame_height grid (partial tiles at the right/bottom edges are ignored) and written to out_dir as '_f00.png', '_f01.png', .... Fully transparent tiles are skipped unless skip_empty=false. Returns JSON {"source", "out_dir", "frames_written", "skipped_empty", "frame_paths"}. On failure returns "Error: ...". |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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