AgentSkillsCN

pixellab-mcp

检查任务是否已完成,验证开发服务器的状态与端口,检查 TypeScript 编译状态,确认所需依赖已安装,并提前加载所有必要的技能。在每项任务开始时使用此技能,以确保环境配置得当,避免无谓的精力浪费。

SKILL.md
--- frontmatter
name: pixellab-mcp
description: Generate pixel art game assets (characters, animations, tilesets) directly from code using PixelLab MCP Server. Use when creating game assets, character sprites, animations, or tilesets for game development.
tags: [game-development, pixel-art, assets, sprites, tilesets, animations, godot, unity]

PixelLab MCP Server

Generate pixel art game assets (characters, animations, tilesets) directly from code using the PixelLab MCP Server.

Overview

The PixelLab MCP Server provides tools for generating pixel art game assets programmatically. All creation operations are non-blocking - they return immediately with job IDs and process in the background (typically 2-5 minutes).

Server URL: https://api.pixellab.ai/mcp

Setup

The MCP server is already configured and enabled. You can call these tools directly - they will be available in your tool list.

Non-Blocking Operations

CRITICAL CONCEPT: All creation tools return immediately with job IDs - they process in the background (2-5 minutes):

  • Submit request → Get job ID instantly
  • Process runs in background
  • Check status with corresponding get_* tool
  • Download when ready (UUID serves as access key)
  • No authentication needed for downloads - share download links freely

This means you should:

  1. Submit creation requests
  2. Continue with other work or check status periodically
  3. Download assets when status indicates completion

Available Tools

Character Tools

  • create_character - Create a new character sprite
  • animate_character - Add animations to an existing character
  • get_character - Get character status and download URLs
  • list_characters - List all your characters
  • delete_character - Delete a character

Top-Down Tileset Tools

  • create_topdown_tileset - Create a top-down tileset (16 Wang tiles)
  • get_topdown_tileset - Get tileset status and download URLs
  • list_topdown_tilesets - List all your top-down tilesets
  • delete_topdown_tileset - Delete a tileset

Sidescroller Tileset Tools

  • create_sidescroller_tileset - Create a sidescroller tileset
  • get_sidescroller_tileset - Get tileset status and download URLs
  • list_sidescroller_tilesets - List all your sidescroller tilesets
  • delete_sidescroller_tileset - Delete a tileset

Isometric Tile Tools

  • create_isometric_tile - Create an isometric tile
  • get_isometric_tile - Get tile status and download URLs
  • list_isometric_tiles - List all your isometric tiles
  • delete_isometric_tile - Delete a tile

Character Creation Workflow

Basic Character Creation

python
# Create a character with 4 directions
character = create_character(
    description="A brave knight with red armor and a sword",
    n_directions=4,  # or 8 for more directions
    size=48,  # Canvas size in pixels
    proportions='{"type": "preset", "name": "heroic"}'
)
# Returns: { "character_id": "uuid", "status": "processing" }

Direction Options

  • 4 directions: south, west, east, north
  • 8 directions: adds south-east, north-east, north-west, south-west

Character Sizing

  • Canvas size: Character will be ~60% of canvas height
  • Example: 48px canvas = ~29px tall character
  • Common sizes: 32px, 48px, 64px

Proportions

Use preset proportions or custom:

  • '{"type": "preset", "name": "heroic"}' - Heroic proportions
  • '{"type": "preset", "name": "chibi"}' - Chibi/cute proportions
  • Custom proportions can be specified as JSON

Adding Animations

Queue animations immediately after creation:

python
# Create character first
character_id = create_character(...)["character_id"]

# Queue walk animation
animate_character(character_id, 'walk')

# Other animation templates:
# - 'walk'
# - 'running-8-frames'
# - 'jumping-1'
# - And more...

Checking Status

python
# Check if character is ready
status = get_character(character_id)
# Returns: { "status": "completed", "download_url": "...", ... }

Character Storage

  • Characters are stored permanently and can be reused
  • Characters created via MCP appear in web interfaces (Character Creator) if using same account
  • Use list_characters() to see all your characters

Tileset Creation

Top-Down Tilesets

Creates 16 Wang tiles for seamless terrain:

python
tileset = create_topdown_tileset(
    lower_description="Grassy terrain with small rocks",
    upper_description="Dirt path with stones"
)
# Returns: { "tileset_id": "uuid", "status": "processing" }

Use Cases:

  • Overworld maps
  • Strategy games
  • RPGs with top-down view
  • Seamless terrain generation

Chain tilesets for consistency:

python
# Create base tileset
base = create_topdown_tileset(...)

# Create related tileset using base for consistency
related = create_topdown_tileset(
    lower_description="Sandy beach",
    upper_description="Ocean water",
    base_tile_id=base["tileset_id"]  # Links to base for visual consistency
)

Sidescroller Tilesets

For 2D platformers:

python
tileset = create_sidescroller_tileset(
    lower_description="Stone platform with cracks",
    transition_description="Grass-to-stone transition"
)
# Returns: { "tileset_id": "uuid", "status": "processing" }

Use Cases:

  • 2D platformers
  • Side-scrolling games
  • Metroidvania-style games

Isometric Tiles

For 3D-looking game assets:

python
tile = create_isometric_tile(
    description="Medieval stone block with moss",
    size=32,  # Recommended: 32px or larger (24px minimum)
    tile_shape='block'  # Options: 'block', 'floor', etc.
)
# Returns: { "tile_id": "uuid", "status": "processing" }

Use Cases:

  • Isometric games
  • 3D-looking 2D games
  • Strategy games with isometric view

Size Recommendations:

  • Minimum: 24px
  • Recommended: 32px or larger
  • Larger sizes produce better quality

Key Tips and Best Practices

Canvas and Sizing

  • Character canvas size: Character will be ~60% of canvas height (e.g., 48px canvas = ~29px tall character)
  • Tile sizes: Typically 16x16 or 32x32 pixels for tilesets
  • Isometric tiles: Sizes above 24px produce better quality (32px recommended)

Animation Templates

Use template_animation_id parameter with values like:

  • 'walk' - Standard walk cycle
  • 'running-8-frames' - Running animation with 8 frames
  • 'jumping-1' - Jump animation
  • Check available templates in documentation

Download URLs

  • UUID acts as access key - no authentication required for downloads
  • Share download links freely
  • Download URLs are permanent

Integration with Web Interfaces

  • Characters/tilesets created via MCP appear in web interfaces (Character Creator, Map Workshop) if using same account
  • You can continue editing in web interfaces after creation

Chaining Tilesets

  • Use base_tile_id parameters to chain tilesets for visual consistency across terrain types
  • Useful for creating related terrain sets (e.g., grass → dirt → stone transitions)

Status Checking

  • All creation operations are asynchronous
  • Poll get_* tools periodically to check status
  • Typical processing time: 2-5 minutes
  • Status values: "processing", "completed", "failed"

Available Resources

Documentation Resources

Access these via pixellab://docs/ URLs:

  • pixellab://docs/overview - Complete platform overview
  • pixellab://docs/godot/wang-tilesets - Godot 4.x Wang tileset implementation
  • pixellab://docs/godot/sidescroller-tilesets - Godot 4.x sidescroller implementation
  • pixellab://docs/godot/isometric-tiles - Godot 4.x isometric tiles guide
  • pixellab://docs/unity/isometric-tilemaps-2d - Unity 2D isometric tilemap guide
  • pixellab://docs/python/wang-tilesets - Python Wang tileset implementation
  • pixellab://docs/python/sidescroller-tilesets - Python sidescroller implementation

Example Workflows

Complete Character Creation

python
# 1. Create character
character = create_character(
    description="A brave knight with red armor",
    n_directions=8,
    size=48,
    proportions='{"type": "preset", "name": "heroic"}'
)
character_id = character["character_id"]

# 2. Queue animations
animate_character(character_id, 'walk')
animate_character(character_id, 'running-8-frames')

# 3. Check status (poll until ready)
import time
while True:
    status = get_character(character_id)
    if status["status"] == "completed":
        print(f"Download: {status['download_url']}")
        break
    elif status["status"] == "failed":
        print("Creation failed")
        break
    time.sleep(10)  # Wait 10 seconds before checking again

Tileset Chain for Terrain

python
# Create base grass tileset
grass = create_topdown_tileset(
    lower_description="Lush green grass",
    upper_description="Grass with small flowers"
)

# Create dirt tileset linked to grass
dirt = create_topdown_tileset(
    lower_description="Brown dirt path",
    upper_description="Dirt with footprints",
    base_tile_id=grass["tileset_id"]
)

# Create stone tileset linked to dirt
stone = create_topdown_tileset(
    lower_description="Gray stone floor",
    upper_description="Stone with cracks",
    base_tile_id=dirt["tileset_id"]
)

Tool Parameters Reference

create_character

  • description (string, required) - Character description
  • n_directions (int, optional) - Number of directions (4 or 8, default: 4)
  • size (int, optional) - Canvas size in pixels (default: 48)
  • proportions (string, optional) - JSON string with proportions (default: heroic preset)

animate_character

  • character_id (string, required) - Character UUID
  • template_animation_id (string, required) - Animation template name

create_topdown_tileset

  • lower_description (string, required) - Description for lower layer
  • upper_description (string, required) - Description for upper layer
  • base_tile_id (string, optional) - Base tileset ID for visual consistency

create_sidescroller_tileset

  • lower_description (string, required) - Description for lower layer
  • transition_description (string, required) - Description for transition
  • base_tile_id (string, optional) - Base tileset ID for visual consistency

create_isometric_tile

  • description (string, required) - Tile description
  • size (int, optional) - Tile size in pixels (default: 32, minimum: 24)
  • tile_shape (string, optional) - Tile shape type (default: 'block')

Error Handling

  • Check status regularly - operations may fail
  • Failed operations will have status: "failed" in response
  • Retry creation if needed
  • Download URLs are only available when status is "completed"