ssyubix-pixelart-mcp
Draw pixel-art tiles and tilesets for 2D games, with PNG+metadata export for Unity.
What can you do with ssyubix-pixelart-mcp?
pixelart_create_canvas,pixelart_import_canvas,pixelart_set_pixel,pixelart_draw_line,pixelart_draw_rect,pixelart_draw_circle,pixelart_draw_polygon,pixelart_flood_fillpixelart_clear_canvas,pixelart_flip_canvas,pixelart_duplicate_canvas,pixelart_get_canvas_info,pixelart_get_canvas_preview,pixelart_delete_canvas,pixelart_list_canvasespixelart_generate_palette,pixelart_extract_palettepixelart_suggest_tile_size,pixelart_suggest_tilemap_layoutpixelart_create_tileset,pixelart_set_tile,pixelart_export_tileset,pixelart_delete_tileset,pixelart_list_tilesets
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
ssyubix-pixelart-mcpclaude mcp add ssyubix-pixelart-mcp -- uvx ssyubix-pixelart-mcp==0.1.1
{
"mcpServers": {
"ssyubix-pixelart-mcp": {
"command": "uvx",
"args": [
"ssyubix-pixelart-mcp==0.1.1"
]
}
}
}
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
- ssyubix-pixelart-mcp
- Installation
- Running
- Connecting to Claude Desktop / Claude Code
- Tools List (24)
- Terminology: Tile vs Tileset vs Tilemap
- Typical Workflow
- Running Tests
- Structure
- If unity-mcp-server is Not Available
- For AI Agents Maintaining/Developing This Project
- License
- Publishing to PyPI & MCP Registry
- SDK Version Notes
ssyubix-pixelart-mcp
MCP server (Python) for drawing pixel art and assembling 2D game tilesets.
Built with MCP Python SDK v1.x
(stable), stdio transport, designed to be used alongside
unity-mcp-server in a single agent session.
Installation
From PyPI:
pip install ssyubix-pixelart-mcp
Or from source:
git clone https://github.com/syuaibsyuaib/ssyubix-pixelart-mcp
cd ssyubix-pixelart-mcp
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -e .
Running
python -m pixelart_mcp.server
# or, if installed from PyPI:
ssyubix-pixelart-mcp
Connecting to Claude Desktop / Claude Code
Add to claude_desktop_config.json (Claude Desktop) or via
claude mcp add (Claude Code):
{
"mcpServers": {
"pixelart": {
"command": "/path/to/ssyubix-pixelart-mcp/venv/bin/python",
"args": ["-m", "pixelart_mcp.server"]
}
}
}
Tools List (24)
Drawing
pixelart_create_canvas,pixelart_import_canvas,pixelart_set_pixel,pixelart_draw_line,pixelart_draw_rect,pixelart_draw_circle,pixelart_draw_polygon,pixelart_flood_fill
Canvas Management
pixelart_clear_canvas,pixelart_flip_canvas,pixelart_duplicate_canvas,pixelart_get_canvas_info,pixelart_get_canvas_preview,pixelart_delete_canvas,pixelart_list_canvases
Color Palette
pixelart_generate_palette,pixelart_extract_palette
Size Suggestion
pixelart_suggest_tile_size,pixelart_suggest_tilemap_layout
Tileset
pixelart_create_tileset,pixelart_set_tile,pixelart_export_tileset,pixelart_delete_tileset,pixelart_list_tilesets
Terminology: Tile vs Tileset vs Tilemap
These are easy to conflate and doing so produces broken/tiny output — a real bug that happened in production: an agent asked for a "tilemap" got back a single 32x32 canvas (that's a tile size) and shipped it as the whole map, which looked broken when used at real scale.
- Tile: one small square (e.g. 16x16px) —
pixelart_create_canvas. - Tileset: a sheet of many distinct tiles arranged in a grid (e.g. grass,
path, water tile types) —
pixelart_create_tileset+pixelart_set_tile+pixelart_export_tileset. - Tilemap: a full level/map, composed of many tiles placed across a grid (built the same way as a tileset, but every slot is filled to represent the actual level layout) — never a single tile-sized canvas.
Typical Workflow
For a single asset/tile:
pixelart_suggest_tile_size(optional) — ask for ideal tile size based on object category or screen resolution.pixelart_generate_palette— create color palette according to style/mood.pixelart_create_canvas→pixelart_set_pixel/draw_line/draw_rect/draw_circle/flood_fill— draw a single tile.pixelart_get_canvas_preview— view the result (upscaled PNG) before proceeding.
For a tileset or a full tilemap/level:
pixelart_suggest_tilemap_layout— get the grid (columns/rows) and total pixel size needed, from either an explicit tile count or a target screen/level size.pixelart_create_tilesetwith that grid →pixelart_set_tilefor every slot →pixelart_export_tileset.- The result of
export_tilesetis PNG + JSON metadata (tile size, grid, PPU) — the agent can then callunity-mcp-servertools to slice/import into a Unity project.
Running Tests
sh claude_tools/run_tests.sh
Structure
pixelart_mcp/
server.py # entry point, registers 23 tools
canvas.py # pixel drawing primitives
palette.py # palette generator
sizing.py # tile size heuristics
tileset.py # tileset assembly & export
models.py # Pydantic input models
tests/ # 58 unit tests
claude_tools/ # helper script (dump schema, run tests)
task.md # status & work notes
PUBLISHING.md # guide to publish to PyPI & official MCP Registry
If unity-mcp-server is Not Available
pixelart_mcp is not technically dependent on unity-mcp-server —
all tools above work fully without it. The difference is only in the final step:
without unity-mcp-server, the result of pixelart_export_tileset (PNG +
JSON metadata) must be imported manually into Unity Editor. Here are the steps
(based on official Unity Manual), to guide an AI when helping a non-technical user:
- Copy the exported PNG file to the
Assetsfolder (or a subfolder likeAssets/Sprites) within your Unity project. - In the Project window, click on the PNG file. In the Inspector panel:
- Texture Type →
Sprite (2D and UI) - Sprite Mode →
Multiple(because it contains many tiles in one sheet) - Pixels Per Unit → enter the
ppuvalue from the JSON metadata file - Filter Mode →
Point (no filter)— to keep pixel art sharp, not blurred - Compression →
None— to prevent color corruption - Click Apply.
- Texture Type →
- Click the Sprite Editor button in the Inspector to open the Sprite Editor.
- In the Sprite Editor, click the Slice dropdown, select Grid By Cell Size,
then enter the Pixel Size with
tile_widthxtile_heightfrom the JSON metadata. - Click Slice, then click Apply in the Sprite Editor toolbar.
- Done — each tile is now a separate sprite that can be dragged directly into the Scene or used in a Tilemap.
All required values (tile_width, tile_height, ppu) are automatically
available in the .json file generated by pixelart_export_tileset
— the AI does not need to calculate them, just read them and guide the user
through the steps above.
For AI Agents Maintaining/Developing This Project
Read AGENTS.md first — it contains the architecture map, mandatory conventions,
checklist for adding new tools, and the workflow for handling user feedback/feature requests.
License
Apache License 2.0 — see LICENSE and NOTICE files.
Publishing to PyPI & MCP Registry
See PUBLISHING.md for complete guide (exact commands, requires personal
credentials — PyPI token & GitHub OAuth login).
SDK Version Notes
This server is built on top of v1.x MCP Python SDK (stable, recommended for production). SDK v2 is still pre-release as of July 2026 — not used here per policy of "only stable/current official references".
Frequently asked questions
What is ssyubix-pixelart-mcp?
Draw pixel-art tiles and tilesets for 2D games, with PNG+metadata export for Unity.
How do I install ssyubix-pixelart-mcp?
It runs on your machine. In Claude Code: claude mcp add ssyubix-pixelart-mcp -- uvx ssyubix-pixelart-mcp==0.1.1. For other clients, paste the JSON configuration from this page into their MCP settings.
Does ssyubix-pixelart-mcp need an API key?
Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.
Is ssyubix-pixelart-mcp open source?
Yes. Its code is on GitHub under the Apache-2.0 license.
Who maintains ssyubix-pixelart-mcp?
It is published by syuaibsyuaib. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.