pixel-art-mcp
Server Details
Turn images into pixel art, extract and remap palettes, and upscale sprites without blur.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- comficker/pixel-art-mcp
- GitHub Stars
- 0
- Server Listing
- pixel-art-mcp
TDQS
Scored across 5 tools
Each tool has a distinct operation: extracting a palette from an image, listing built-in palettes, converting an image to pixel art, remapping an existing pixel art image to a palette, and upscaling pixel art. The boundary between pixelate_image and remap_palette is clear because one creates pixel art from a larger image while the other recolours an existing pixel art image.
All tool names follow a consistent verb_noun snake_case pattern: extract_palette, list_palettes, pixelate_image, remap_palette, upscale_pixel_art. There are no mixed conventions or vague names.
Five tools is well-scoped for a focused pixel art utility server. Each tool covers a meaningful step in the palette/pixel-art workflow without obvious redundancy.
The surface covers palette discovery, extraction, pixelation, palette remapping, and upscaling, which are core operations for this domain. Minor gaps such as dithering options, explicit resizing/cropping, or format conversion are not present but can be worked around or are outside the focused scope.
Available Tools
5 toolsextract_paletteExtract paletteAInspect
Pull the main colours out of an image (median cut). Returns hex codes plus a GIMP/Aseprite .gpl palette.
| Name | Required | Description | Default |
|---|---|---|---|
| colors | No | How many colours to extract | |
| image_url | No | Public http(s) URL of a PNG or JPEG (max 4 MB, 2048x2048) | |
| image_base64 | No | PNG or JPEG as base64 (or a data: URL), if there is no public URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose the algorithm and the return artifact, which is useful. However it says nothing about whether the operation mutates state, whether the result is stored or ephemeral, how failures (unreachable URL, oversized image) surface, or any cost/rate considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler, front-loading the action and following with the output format. Nothing needs trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by naming both return artifacts (hex codes and a .gpl file). Combined with the fully documented schema, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with three fully documented parameters, including defaults, bounds, and the URL-vs-base64 fallback, so the schema does the heavy lifting. The description adds no parameter-level meaning beyond noting the output palette format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Pull the main colours out of an image') and names the algorithm (median cut) plus the output artifact (hex codes and a .gpl palette). It is clearly distinct from remap_palette and list_palettes, though it never explicitly contrasts itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the tool is for extracting a new palette rather than applying an existing one. There is no explicit statement of when to choose this over remap_palette or how it relates to list_palettes, and no preconditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_palettesList built-in palettesAInspect
List the built-in pixel art palettes and their colours.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the burden. It makes clear the result set is fixed ('built-in') and includes colour values, which is useful. It does not state whether the listing is paginated, how many palettes exist, or the shape of each entry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. The resource and its contents are stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, the description covers what the tool returns (palettes plus colour data). It stops short of describing the entry format or overall count, which an agent composing a follow-up call might want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline applies. The stated return content ('palettes and their colours') is a useful hint about what each entry contains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (list) and resource (built-in pixel art palettes) with the payload ('their colours'). It implicitly separates itself from extract_palette by scoping to 'built-in', but never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'built-in' hints that this is the reference/enumeration tool rather than a palette-derivation tool, but there is no explicit when-to-use or when-not, and it doesn't route the agent to extract_palette or remap_palette.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pixelate_imageImage to pixel artAInspect
Turn a photo or illustration into pixel art: shrink it to a pixel grid and reduce it to a few colours (or a named palette). Returns the PNG.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Nearest-neighbour upscale of the returned PNG, capped at 1024 px | |
| width | No | Width of the pixel grid in pixels (height keeps the aspect ratio) | |
| colors | No | Number of colours when no palette is given | |
| palette | No | Palette name (pico-8, sweetie-16, endesga-32, game-boy, 1-bit) or hex colours like "#1a1c2c,#5d275d" | |
| image_url | No | Public http(s) URL of a PNG or JPEG (max 4 MB, 2048x2048) | |
| image_base64 | No | PNG or JPEG as base64 (or a data: URL), if there is no public URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the core behavior (downscale to grid, quantize colors, return PNG). However, it omits that at least one of image_url/image_base64 must be supplied, what happens if both are provided, and any error/failure behavior — meaningful gaps for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence describing the transform plus a short return statement — zero waste, and the output declaration is placed where an agent will see it immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All six parameters are schema-documented and the return type is stated, so the basics are covered. But with zero required parameters, an agent could call this with no image input at all, and the description never clarifies that a source image is mandatory or how URL vs base64 inputs interact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (scale, width, colors, palette, image_url, image_base64) is already fully documented with ranges and defaults. The description adds only the vague notion of a 'named palette' and otherwise repeats schema content, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete transformation verb chain ('shrink to a pixel grid and reduce to a few colours') and states the output ('Returns the PNG'), so an agent knows exactly what the tool produces. It does not explicitly distinguish itself from siblings like remap_palette or upscale_pixel_art, which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by 'Turn a photo or illustration into pixel art' — there is no explicit when-to-use, no when-not, and no pointer to siblings such as extract_palette or remap_palette for related workflows. The parenthetical '(or a named palette)' hints at a palette-based variant but doesn't route the agent to the palette tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remap_paletteRecolour to a paletteAInspect
Recolour an existing pixel art image so every pixel uses a colour from the given palette (e.g. PICO-8 or Game Boy). Size is kept. Returns the PNG.
| Name | Required | Description | Default |
|---|---|---|---|
| palette | Yes | Palette name (pico-8, sweetie-16, endesga-32, game-boy, 1-bit) or hex colours like "#1a1c2c,#5d275d" | |
| image_url | No | Public http(s) URL of a PNG or JPEG (max 4 MB, 2048x2048) | |
| image_base64 | No | PNG or JPEG as base64 (or a data: URL), if there is no public URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it usefully discloses that size is preserved and the return is a PNG, which are genuine behavioral facts. However it omits what happens with transparency/alpha, whether dithering occurs, how the two image source parameters interact, and any size or rate limits (those live only in the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences totalling under 30 words: operation first, then the invariant (size kept), then the return value. Every sentence earns its place and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with full schema coverage and no output schema, the description covers purpose, the key invariant, and the return type. The one real gap is that the mutual exclusivity of image_url and image_base64 is not stated anywhere, which could lead to a malformed call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in detail, including palette format examples and image constraints. The description's '(e.g. PICO-8 or Game Boy)' only loosely echoes the schema's palette list and adds no new constraint semantics, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (recolour) and resource (pixel art image) with the target resource (a palette), and clarifies the operation is a remap onto a constrained colour set. It is clearly not palette extraction or listing, though it never names the sibling tools to cement the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'an existing pixel art image' implies the precondition (you must already have an image, unlike generation-style siblings), but there is no explicit when-to-use/when-not, and no mention of extract_palette or list_palettes as the alternatives for palette discovery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upscale_pixel_artUpscale without blurAInspect
Scale pixel art up by a whole number with nearest neighbour, so pixels stay sharp. Output is capped at 1024 px.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| image_url | No | Public http(s) URL of a PNG or JPEG (max 4 MB, 2048x2048) | |
| image_base64 | No | PNG or JPEG as base64 (or a data: URL), if there is no public URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does add real behavioral disclosure: the resampling method (nearest neighbour, so no blurring) and a hard output constraint of 1024 px. It omits failure behavior, permissions, and what the response contains, but the two disclosed traits are the ones that most affect correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the algorithm and the sharpness benefit front-loaded and the output cap as the closing constraint. Nothing repeats the title or name verbatim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description should say what comes back — the description gives only a size cap (1024 px) without output format, delivery (URL vs inline data), or how the two input parameters interact. It is adequate but leaves gaps an agent would hit at call time.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so baseline is 3. The description reinforces that scale must be a whole number but never states the permitted 2–64 range or the default of 8, and it says nothing about choosing image_url versus image_base64 — leaving the mutually exclusive input path entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (scale up), resource (pixel art), and the exact algorithm (nearest neighbour, whole-number factor), which distinguishes it from the sibling pixelate_image at a glance. An agent can select this tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by 'Scale pixel art up' — the agent must infer that this applies to already-pixelated input rather than photographic images. No explicit when-to-use, when-not-to-use, or reference to alternatives such as pixelate_image or remap_palette.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- First observed
extract_palette - First observed
list_palettes - First observed
pixelate_image - First observed
remap_palette - First observed
upscale_pixel_art
Related MCP Connectors
Generate, edit, style-match, turn, and animate game-ready pixel art at exact sizes.
Generate pixel art sprites, animations, 8-direction rotations and palettes for games.
Game-ready pixel art: generate sprites, animate them, pixelate images, remove backgrounds.
Generate game sprite sheets and animations from an image, and clean up sprite backgrounds.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI assistants to procedurally generate, edit, quantize, and export 2D retro pixel art textures and tilesets for game development, with built-in palettes, dithering, and pixel-level manipulation tools.14MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to create, inspect, edit, and export pixel art, sprites, animations, and spritesheets using headless Aseprite, and to convert arbitrary images into indexed pixel art.MIT
- AlicenseBqualityCmaintenanceEnables AI agents to run headless pixel-art conversion and stylization, extract or import palettes, detect pixel grids, export sprite sheets and tilesets, convert video, and analyze motion, progress-bar fills, and stroke drawing through JSON-RPC tools.15MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to create layered pixel-art sprites and animations, inspect pixels, and export images, spritesheets, GIFs, APNGs, and TrueType pixel fonts. Documents and edits stay local, accessible over stdio MCP or callable directly from a shell.26MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.