Skip to main content
Glama
game-art-mcp

game-art-mcp

by Cuvara

game-art-mcp

AI-driven pixel-art style system and MCP server for 2D RPG game art direction.

Purpose

This repository is the source of truth for the project's art direction. Any AI agent can enter this repository, query the project context via MCP, and understand exactly what "our art style" means — without relying on conversation history.

Related MCP server: Aseprite MCP Server

Architecture

game-art-mcp/
├── project.yaml              # Project config: which style is active
├── style/                    # Version-controlled style definitions
│   └── fantasy_pixel_v1/     # Style v1 (YAML rules + style bible)
├── registry/                 # Asset registry storage
│   ├── assets/               # One YAML file per registered asset
│   └── registry.yaml         # Auto-generated index of all assets
├── memory/                   # Art Memory storage (Phase 3)
│   ├── anchors/              # Style anchor YAML files
│   ├── references/           # Approved reference YAML files
│   ├── rejections/           # Rejection records
│   ├── decisions/            # Art decision records (ADR format)
│   ├── history.yaml          # Style version evolution log
│   └── memory.yaml           # Auto-generated memory index
├── src/
│   ├── style/                # Models, loader, validator
│   ├── assets/               # Asset registry (models + service)
│   │   ├── models/           # Zod schemas + TypeScript types
│   │   └── registry/         # AssetRegistry service (CRUD + query)
│   ├── memory/               # Art Memory (models, service, resolver)
│   │   ├── models/           # Zod schemas for anchors, references, rejections, decisions
│   │   ├── service/          # ArtMemoryService (CRUD + index)
│   │   └── resolver/         # ReferenceResolver (deterministic lookup)
│   ├── qa/                   # Art QA engine (Phase 4)
│   │   ├── models/           # QA types, report schema, rule interface
│   │   ├── rules/            # 13 deterministic rules (7 categories)
│   │   ├── runner/           # QARunner orchestrator
│   │   └── history/          # QA history persistence
│   ├── providers/            # Provider Adapters (Phase 5)
│   │   ├── models/           # ProviderAdapter interface, types, error codes
│   │   ├── adapters/         # Adapter implementations (mock-provider)
│   │   ├── registry/         # ProviderRegistry (adapter lookup + capabilities)
│   │   ├── gateway/          # ProviderGateway (dispatch + artifact storage)
│   │   └── artifacts/        # ArtifactStore (immutable provenance)
│   ├── production/           # Production Orchestrator (Phase 6)
│   │   ├── models/           # Types, state machine, error codes
│   │   ├── orchestrator/     # ProductionOrchestrator (coordinator)
│   │   └── store/            # ProductionStore (YAML manifest persistence)
│   ├── versioning/           # Versioning & Approval (Phase 7)
│   │   ├── models/           # Types, lifecycle states, error codes
│   │   └── services/         # VersioningService (approval, versioning, promotion, audit)
│   ├── context/              # ArtContextService
│   └── mcp/                  # MCP server + tools
│       └── tools/            # art-tools.ts, asset-tools.ts, memory-tools.ts, qa-tools.ts, provider-tools.ts, production-tools.ts, versioning-tools.ts
├── tests/                    # Unit + integration tests
└── docs/                     # Architecture, style system, phases

Quick Start

npm install
npm run build
npm test

Run MCP Server

npm start
# or with custom root:
ART_MCP_ROOT=/path/to/project npm start

Validate Style

npm run validate

MCP Tools

Style Tools (read-only)

Tool

Description

art.get_project_context

Full art context (project + style + all rules)

art.get_style

Active style definition

art.get_style_rules

Specific rule category (pixel_language, outline, etc.)

art.get_palette

Color palette with semantic roles

art.validate_style

Validate style configuration

Asset Tools (read + write)

Tool

Description

art.asset.get

Get asset by ID

art.asset.find

Search/filter assets (type, category, status, tags)

art.asset.exists

Check whether an asset ID is registered

art.asset.register

Register a new asset with full validation

art.asset.update

Update an existing asset (partial patch)

art.asset.deprecate

Mark an asset as deprecated

art.asset.archive

Archive an asset

art.asset.rebuild_index

Rebuild the registry index from asset files

Memory Tools (read + write)

Tool

Description

art.memory.get_summary

Memory overview: anchors, decisions, rejections, reference count

art.memory.explain_style

Full style explanation with rules, anchors, decisions, avoidances

art.memory.resolve_references

Deterministic reference lookup for a given context

art.memory.get_anchor

Get a style anchor by ID

art.memory.find_anchors

Search anchors (category, status, dimension filters)

art.memory.add_anchor

Add a new style anchor

art.memory.get_reference

Get an approved reference by ID

art.memory.find_references

Search references (role, status, asset_id filters)

art.memory.add_reference

Add a new approved reference

art.memory.get_rejection

Get a rejection record by ID

art.memory.find_rejections

Search rejections (type, status, reason filters)

art.memory.add_rejection

Add a new rejection record

art.memory.get_decision

Get an art decision by ID

art.memory.find_decisions

Search decisions (status filter)

art.memory.add_decision

Add a new art decision

art.memory.get_style_history

Get the full style evolution history

QA Tools (read-only)

Tool

Description

art.qa.asset

Run QA checks on a single asset (full report)

art.qa.batch

Run QA checks on multiple assets (batch report)

art.qa.gate

QA gate check — pass/fail verdict for approval workflows

art.qa.list_rules

List all available QA rules with definitions

art.qa.rule

Get the full definition of a specific QA rule by ID

art.qa.explain_failure

Explain why a specific rule failed for an asset

art.qa.history

Get QA run history, optionally filtered by asset ID

Provider Tools (read + write)

Tool

Description

art.provider.list

List all registered providers with metadata

art.provider.get

Get detailed metadata for a specific provider

art.provider.capabilities

Get provider capabilities (operations, formats, limits)

art.provider.health

Check provider health status

art.provider.execute

Execute an art generation operation via a provider

art.provider.cancel

Cancel a running provider operation

art.provider.operation

Get operation status by ID

art.provider.artifact

Get artifact details and provenance by ID

Production Tools (read + write)

Tool

Description

art.production.plan

Create a production plan (preview before executing)

art.production.create

Create a production job (plan + persist, does not start)

art.production.start

Start executing a production job

art.production.status

Get current job status (summary)

art.production.inspect

Get full job details (events, attempts, plan)

art.production.resume

Resume a failed job

art.production.cancel

Cancel a running job

art.production.attempts

Get attempt history for a job

art.production.approve

Approve a job awaiting approval

art.production.list

List all production job IDs

Versioning Tools (read + write)

Tool

Description

art.asset.current

Get the canonical (current) version of an asset

art.asset.inspect_version

Get details of a specific asset version

art.asset.history

Get the full version history of an asset

art.asset.compare

Compare two versions of the same asset

art.asset.provenance

Get version provenance including approval record

art.asset.approval.request

Request approval for a candidate asset

art.asset.approval.inspect

Get an approval record by ID

art.asset.approve

Approve a candidate asset

art.asset.reject

Reject a candidate asset

art.asset.request_changes

Request changes on a candidate asset

art.asset.promote

Promote an approved candidate to canonical version

art.asset.rollback

Rollback canonical to a previous version

art.asset.archive_version

Archive a canonical asset

Style and QA tools are read-only. Asset, memory, provider, production, and versioning tools support both reads and writes.

Asset Registry

The Asset Registry (Phase 2) tracks every art asset in the project with structured metadata. Assets are stored as individual YAML files in registry/assets/ and indexed in registry/registry.yaml.

Key features:

  • Semantic IDs — dot-separated lowercase (e.g. character.goblin.001)

  • Style linkage — every asset references a style ID + version

  • Relationships — variant_of, derived_from, animation_of, etc.

  • Status tracking — draft, approved, rejected, deprecated, archived

  • Full validation — schema, style reference, source file existence, relationships

See docs/ASSET-REGISTRY.md for full documentation and docs/ASSET-METADATA.md for the metadata schema.

Art Memory

The Art Memory system (Phase 3) gives the repository persistent visual knowledge. It remembers what was approved, what was rejected, and why — so agents don't need conversation history to understand the project's art direction.

Key concepts:

  • Style Anchors — canonical visual examples that define the style (see docs/STYLE-ANCHORS.md)

  • Approved References — trusted assets with roles and dimensions

  • Rejections — what does NOT fit, with controlled vocabulary of reasons

  • Art Decisions — ADR-format records of visual direction choices (see docs/ART-DECISIONS.md)

  • Reference Resolver — deterministic lookup returning relevant context for any creation task

See docs/ART-MEMORY.md for full documentation.

Art QA

The Art QA system (Phase 4) provides deterministic, reproducible quality gates for pixel-art assets. Every check is rule-based with expected/actual values and structured remediation — no AI vision, no embeddings, no auto-repair.

Key concepts:

  • 13 rules across 7 categories (technical, dimensions, palette, alpha, pixel, style, memory)

  • 3 profiles — strict (fail on warning), default (fail on error), lenient (fail on critical only)

  • Machine-readable reports — JSON with per-rule results, severity, remediation

  • Style integration — reads canvas sizes, palette limits, pixel rules from active style

  • Memory integration — checks rejected directions and accepted art decisions

  • QA Gate — pass/fail verdict for CI and approval workflows

  • QA History — persistent log of all runs per asset

See docs/ART-QA.md for full documentation.

Provider Adapters

The Provider Adapter system (Phase 5) adds a provider-agnostic interface to external art generation tools. Requests flow through a gateway that validates operations, delegates to registered adapters, and stores generated artifacts with immutable provenance.

Key concepts:

  • ProviderAdapter interface — metadata, capabilities, health, execute, cancel

  • Artifacts — raw provider output with immutable provenance (not yet assets)

  • Capabilities — per-operation detail (formats, max resolution)

  • Dry-run — validate requests without generating output

  • Mock Provider — built-in test adapter with failure/timeout modes

  • No automatic selection — agents must explicitly choose a provider

See docs/PROVIDERS.md for full documentation.

Production Orchestrator

The Production Orchestrator (Phase 6) coordinates the full art asset generation lifecycle: request validation, style/reference/provider resolution, execution, QA, retry, and approval gating.

Key concepts:

  • Coordinator, not source of truth — delegates to style, QA, providers, and registry

  • State machine — 9 statuses with validated transitions (created through completed/failed/cancelled)

  • 11 production stages — REQUEST_VALIDATION through APPROVAL_GATE

  • Bounded retry — configurable max_attempts (default 3) with repair plans on QA failure

  • Approval boundary — stops at awaiting_approval, never auto-approves

  • Plan staleness — detects style version drift before execution

  • YAML persistence — one manifest.yaml per job in production/<job_id>/

  • Event history — append-only log of all state changes per job

See docs/PRODUCTION.md for full documentation.

Versioning & Approval

The Versioning & Approval system (Phase 7) adds immutable asset versioning, explicit approval workflows, and a full audit trail. No version is ever deleted; no asset is ever auto-approved.

Key concepts:

  • Asset lifecycle — 8 states: draft, pending_approval, approved, rejected, changes_requested, promoted, superseded, archived

  • Approval workflow — request, approve, reject, request_changes with structured feedback

  • Approval policy — configurable: requires_qa_pass, allow_agent_approval, requires_human

  • Immutable versions — monotonic increment, parent tracking, full provenance per version

  • Canonical pointer — tracks which version is current; updated on promotion/rollback

  • Promotion — compare-and-swap with QA gate and approval gate

  • Rollback — repoints canonical to a previous version, never deletes history

  • Audit log — 9 event types, append-only, immutable

  • Actor identity — human, agent, system, provider tracked on every record

See docs/VERSIONING.md for full documentation.

Current Phase

Phase 7 — Versioning & Approval (complete)

See docs/PHASES.md for the full roadmap.

Style System

Styles are structured YAML files representing machine-readable art direction:

  • style.yaml — identity, canvas sizes, scaling

  • palette.yaml — colors with semantic roles

  • pixel-rules.yaml — pixel-art constraints

  • outline.yaml — outline rules

  • shape-language.yaml — visual language

  • lighting.yaml — light direction and rules

  • animation.yaml — frame counts, FPS, constraints

See docs/STYLE-SYSTEM.md for details.

Available Tools

126 tools
art.aseprite.exportB

Export a canvas session to Aseprite format. Saves the canvas as PNG and generates the Aseprite CLI command to convert it. Commands are returned for external execution.

Inputs: session_id (required), output_name.

art.aseprite.layersA

Generate a Lua script and Aseprite command to set up standard layer structure. Writes the script to disk and returns the command to execute it.

Inputs: session_id (required), layers.

art.aseprite.spritesheetB

Generate a spritesheet export command for a canvas session. The canvas PNG is saved and a CLI command is returned to produce a packed spritesheet via Aseprite.

Inputs: session_id (required), columns, padding.

art.aseprite.validateB

Generate a validation Lua script and Aseprite command to check sprite constraints (palette size, dimensions). Writes the script to disk and returns the command.

Inputs: width (required), height (required), max_colors (required), session_id (required).

art.asset.approval.inspectB

Get an approval record by ID.

Inputs: approval_id (required).

art.asset.approval.requestC

Request approval for a candidate asset.

Inputs: actor (required), style (required), asset_id (required), candidate_id (required), +3 more.

art.asset.approveC

Approve a candidate asset.

Inputs: actor (required), approval_id (required), reason.

art.asset.archiveB

Archive an asset (remove from active use).

Inputs: id (required).

art.asset.archive_versionC

Archive a canonical asset, removing it from active use.

Inputs: actor (required), asset_id (required).

art.asset.compareB

Compare two versions of an asset.

Inputs: asset_id (required), version_a (required), version_b (required).

art.asset.currentB

Get the canonical (current) version number of an asset.

Inputs: asset_id (required).

art.asset.deprecateC

Mark an asset as deprecated.

Inputs: id (required).

art.asset.existsA

Check whether an asset with the given ID exists in the registry.

Inputs: id (required).

art.asset.findA

Search and filter registered assets. All parameters are optional; omit all to return every asset.

Inputs: tags, type, status, category, +2 more.

art.asset.getA

Get a registered asset by its ID. Returns the full asset record.

Inputs: id (required).

art.asset.historyC

Get the full version history of an asset.

Inputs: asset_id (required).

art.asset.inspect_versionB

Get details of a specific asset version.

Inputs: version (required), asset_id (required).

art.asset.promoteC

Promote an approved candidate to become the canonical version.

Inputs: actor (required), style (required), approval_id (required), artifact_id (required), +7 more.

art.asset.provenanceC

Get version provenance including approval record.

Inputs: version (required), asset_id (required).

art.asset.rebuild_indexA

Rebuild the asset registry index from all registered asset files.

Inputs: no named parameters.

art.asset.registerA

Register a new asset in the registry. Validates schema, style reference, source file, and relationships.

Inputs: id (required), name (required), type (required), style (required), +8 more.

art.asset.rejectC

Reject a candidate asset.

Inputs: actor (required), approval_id (required), reason, feedback.

art.asset.request_changesC

Request changes on a candidate asset.

Inputs: actor (required), feedback (required), approval_id (required), reason.

art.asset.rollbackB

Rollback the canonical version to a previous version.

Inputs: actor (required), asset_id (required), target_version (required), expected_current_version (required).

art.asset.updateC

Update an existing asset. Provide the asset ID and a patch object with fields to change.

Inputs: id (required), patch (required).

art.canvas.analyze_refA

Analyze a reference image: extract dimensions, color palette with counts, and 2D color map.

Inputs: image_path (required).

art.canvas.batch_drawA

Execute multiple draw commands in a single call for efficiency. Each command references a canvas tool name and its params.

Inputs: commands (required), session_id (required).

art.canvas.clearB

Clear the entire canvas, optionally filling with a color.

Inputs: session_id (required), color.

art.canvas.createB

Create a new pixel canvas session for drawing.

Inputs: session_id (required), width, height, asset_id, +1 more.

art.canvas.draw_circleB

Draw a circle on the canvas.

Inputs: cx (required), cy (required), color (required), radius (required), +2 more.

art.canvas.draw_ditherB

Apply a dither pattern to a rectangular region.

Inputs: x (required), y (required), width (required), color1 (required), +4 more.

art.canvas.draw_lineA

Draw a line between two points using Bresenham algorithm.

Inputs: x0 (required), x1 (required), y0 (required), y1 (required), +2 more.

art.canvas.draw_noiseC

Fill a region with random noise using specified colors.

Inputs: x (required), y (required), width (required), colors (required), +3 more.

art.canvas.draw_rectB

Draw a rectangle on the canvas.

Inputs: x (required), y (required), color (required), width (required), +3 more.

art.canvas.fillB

Flood fill an area starting from a point.

Inputs: x (required), y (required), color (required), session_id (required).

art.canvas.get_pixelB

Read the color of a single pixel on the canvas.

Inputs: x (required), y (required), session_id (required).

art.canvas.get_stateA

Get the current canvas state as a color map (2D hex array) or base64 PNG.

Inputs: session_id (required), format.

art.canvas.saveA

Save the current canvas to a PNG file.

Inputs: session_id (required), output_path.

art.canvas.set_pixelB

Set a single pixel on the canvas.

Inputs: x (required), y (required), color (required), session_id (required).

art.critic.evaluateB

Run the art critic to evaluate canvas quality with spatial scoring and issue detection.

Inputs: session_id (required), profile.

art.critic.refineC

Execute refinement actions from a critique to improve canvas quality.

Inputs: actions (required), session_id (required).

art.detail.cavityB

Add cavity details (dark center with light rim) to a region.

Inputs: x (required), y (required), seed (required), count (required), +5 more.

art.detail.clean_clustersC

Cleanup pass: merge orphan/isolated pixels into nearest larger cluster.

Inputs: session_id (required), min_cluster_size.

art.detail.clusterC

Create a pixel cluster on the canvas at a given position with a specified shape.

Inputs: cx (required), cy (required), size (required), color (required), +3 more.

art.detail.crackB

Add crack patterns to a region (stone, ice surfaces).

Inputs: x (required), y (required), seed (required), color (required), +4 more.

art.detail.edge_breakB

Apply edge breakup to avoid perfectly geometric silhouettes.

Inputs: seed (required), amount (required), session_id (required), preserve_outline.

art.detail.executeC

Run the full detail pass pipeline on an existing canvas session. Requires content already drawn on canvas.

Inputs: materials (required), session_id (required), seed, profile.

art.detail.grainA

Add directional grain lines to a region (wood, cloth).

Inputs: x (required), y (required), seed (required), color (required), +5 more.

art.detail.highlightC

Add highlight clusters to a region for specular/light reflection.

Inputs: x (required), y (required), seed (required), color (required), +4 more.

art.detail.materialB

Apply a full material treatment (all texture patterns for that material) to a region.

Inputs: x (required), y (required), seed (required), width (required), +3 more.

art.detail.passC

Run a single named detail pass on a canvas session.

Inputs: materials (required), pass_name (required), session_id (required).

art.detail.planB

Create a detail art plan for an asset, specifying subject, resolution, materials, and detail profile.

Inputs: width (required), height (required), subject (required), materials (required), +2 more.

art.detail.shadowA

Add shadow clusters to a region for depth/occlusion.

Inputs: x (required), y (required), seed (required), color (required), +4 more.

art.detail.speckleA

Add scattered speckle dots to a region (dirt, stone, skin).

Inputs: x (required), y (required), seed (required), width (required), +4 more.

art.detail.textureC

Apply a texture pattern to a rectangular region on the canvas.

Inputs: x (required), y (required), seed (required), width (required), +5 more.

art.get_paletteB

Returns the color palette for the active style.

Inputs: no named parameters.

art.get_project_contextA

Returns the full art context: project config, active style definition, all rule categories, and palette.

Inputs: no named parameters.

art.get_styleA

Returns the active style definition. Optionally specify style_id and version to look up a specific style.

Inputs: version, style_id.

art.get_style_rulesB

Returns the rules for a specific category of the active style.

Inputs: category (required).

art.memory.add_anchorC

Add a new style anchor to the art memory.

Inputs: id (required), name (required), style (required), assets (required), +6 more.

art.memory.add_decisionC

Add a new art decision record to the art memory.

Inputs: id (required), style (required), title (required), reason (required), +6 more.

art.memory.add_referenceC

Add a new approved reference to the art memory.

Inputs: id (required), roles (required), style (required), status (required), +5 more.

art.memory.add_rejectionB

Add a new rejection record to the art memory.

Inputs: id (required), type (required), style (required), status (required), +5 more.

art.memory.explain_styleA

Explain the current or specified style: core rules, canonical anchors, important decisions, things to avoid, and history.

Inputs: style_id, style_version.

art.memory.find_anchorsC

Search for style anchors with optional filters.

Inputs: status, category, style_id, dimension, +1 more.

art.memory.find_decisionsB

Search for art decision records with optional filters.

Inputs: status, style_id, style_version.

art.memory.find_referencesC

Search for approved references with optional filters.

Inputs: role, status, asset_id, style_id, +1 more.

art.memory.find_rejectionsC

Search for rejection records with optional filters.

Inputs: type, reason, status, style_id, +1 more.

art.memory.get_anchorA

Get a style anchor by its ID.

Inputs: id (required).

art.memory.get_decisionA

Get an art decision record by its ID.

Inputs: id (required).

art.memory.get_referenceC

Get an approved reference by its ID.

Inputs: id (required).

art.memory.get_rejectionA

Get a rejection record by its ID.

Inputs: id (required).

art.memory.get_style_historyB

Get the full style evolution history.

Inputs: no named parameters.

art.memory.get_summaryA

Get a summary of the art memory: anchor count, active decisions, active rejections, total references.

Inputs: no named parameters.

art.memory.insightsA

Get style insights derived from approved assets — patterns, preferences, and learned conventions from the asset corpus.

Inputs: no named parameters.

art.memory.negativeA

Get negative patterns (rejected examples) for a type/material — query rejections filtered by type hints in reasons.

Inputs: type, material.

art.memory.resolve_referencesD

Resolve relevant references, anchors, decisions, and rejections for a given context. Returns categorized results.

Inputs: type, category, style_id, dimensions, +1 more.

art.memory.signatureA

Compute a visual signature (deterministic fingerprint) for a canvas session — color distribution, cluster stats, edge complexity, etc.

Inputs: session_id (required).

art.pipeline.analyzeB

Analyze a reference image. Returns palette, silhouette, composition, pixel characteristics. Provide either a file path or reference_id of an already-uploaded reference.

Inputs: pose, facing, subject, category, +2 more.

art.pipeline.planA

Build a 7-stage ArtPlan (silhouette-first) from an ArtSpecification. The plan defines ordered generation stages with QA checkpoints.

Inputs: reference_id (required), max_iterations.

art.pipeline.scoreC

Compute visual quality score for a pixel art asset. Scores silhouette, palette, composition, pixel cleanliness, and style match.

Inputs: asset_path (required), reference_id.

art.pipeline.specB

Build an ArtSpecification from a reference analysis + active style. The spec defines canvas, palette, outline, shading constraints for pixel art generation.

Inputs: reference_id (required), subject, max_colors, canvas_width, +1 more.

art.production.approveB

Approve a production job that is awaiting approval, moving it to completed.

Inputs: job_id (required).

art.production.attemptsB

Get the attempt history for a production job.

Inputs: job_id (required).

art.production.cancelC

Cancel a production job.

Inputs: job_id (required).

art.production.createB

Create a production job (plan + persist, does not start execution).

Inputs: output (required), subject (required), asset_type (required), request_id (required), +5 more.

art.production.inspectC

Get full details of a production job including events, attempts, and plan.

Inputs: job_id (required).

art.production.listB

List all production job IDs.

Inputs: no named parameters.

art.production.planB

Create a production plan for an art asset (inspect before executing).

Inputs: output (required), subject (required), asset_type (required), request_id (required), +5 more.

art.production.resumeA

Resume a failed or interrupted production job.

Inputs: job_id (required).

art.production.startC

Start executing a production job.

Inputs: job_id (required).

art.production.statusC

Get the current status of a production job.

Inputs: job_id (required).

art.provider.analyzeB

Analyze a PNG file using the canvas-analysis provider. Runs local analysis (signature, clusters, palette) without external APIs.

Inputs: operation (required), source_path (required), style, asset_id, +2 more.

art.provider.artifactB

Get details of a generated artifact.

Inputs: artifact_id (required).

art.provider.cancelC

Cancel a running provider operation.

Inputs: operation_id (required).

art.provider.capabilitiesB

Get the capabilities of a specific provider.

Inputs: provider_id (required).

art.provider.executeC

Execute an art generation operation via a provider.

Inputs: style (required), operation (required), provider_id (required), output, +6 more.

art.provider.fallbackC

Execute an art operation with fallback — tries the primary provider, falls back to a secondary on failure.

Inputs: style (required), operation (required), provider_id (required), output, +7 more.

art.provider.getA

Get detailed metadata for a specific provider.

Inputs: provider_id (required).

art.provider.healthB

Check the health status of a specific provider.

Inputs: provider_id (required).

art.provider.health_allA

Check health of all registered providers. Returns a map of provider ID to health status with latency and consecutive failure count.

Inputs: no named parameters.

art.provider.listA

List all registered art providers with their metadata.

Inputs: no named parameters.

art.provider.operationC

Get the status of a provider operation.

Inputs: operation_id (required).

art.qa.assetA

Run QA checks on a single asset. Returns a full QA report with all rule results.

Inputs: asset_id (required), profile.

art.qa.batchA

Run QA checks on multiple assets at once. Returns a batch report with individual results.

Inputs: asset_ids (required), profile.

art.qa.explain_failureA

Explain why a specific QA rule failed for an asset. Returns rule definition, issue details, and context.

Inputs: rule_id (required), asset_id (required).

art.qa.gateB

Run a QA gate check on an asset. Returns pass/fail verdict with full report.

Inputs: asset_id (required), profile.

art.qa.historyC

Get QA run history. Optionally filter by asset ID.

Inputs: asset_id.

art.qa.list_rulesA

List all available QA rules with their definitions.

Inputs: no named parameters.

art.qa.ruleA

Get the full definition of a specific QA rule by its ID.

Inputs: rule_id (required).

art.ref.canonicalA

Get canonical assets for a type/material — filters retrieve results to only canonical status entries.

Inputs: type, material.

art.ref.packB

Build a reference pack for generation — combines style constraints, canonical references, negative examples, and material palette.

Inputs: type, category, material, max_negative, +1 more.

art.ref.retrieveB

Smart ranked reference retrieval — scores and returns top assets by canonical status, style match, material match, and recency.

Inputs: type, category, material, max_results.

art.style.bootstrapA

Get session bootstrap context — assembles project config, style, canonical assets, anti-patterns, and recent decisions into one payload.

Inputs: no named parameters.

art.style.checkA

Run style consistency check on a canvas session — compares canvas content against compiled style constraints.

Inputs: session_id (required), material.

art.style.compileB

Compile style constraints for a subject — merges style definition, optional material profile, and resolution into a flat StyleConstraints object.

Inputs: width, height, profile, material.

art.style.repairA

Generate a repair plan from a style consistency check — identifies actions to fix style issues on a canvas.

Inputs: session_id (required), material.

art.tilemap.build_opsB

Generate TiledMCP operations from a MapSpecification. Returns the operation sequence for TiledMCP provider execution.

Inputs: map_id (required).

art.tilemap.create_specC

Create a MapSpecification for tilemap generation. Defines map size, biome, layers, objects, terrain rules.

Inputs: biome (required), width (required), height (required), layers (required), +6 more.

art.tilemap.list_tilesetsA

List all registered tileset definitions.

Inputs: no named parameters.

art.tilemap.register_tilesetB

Register a tileset definition with semantic tile metadata. Each tile gets an ID, terrain, walkability, collision info.

Inputs: tiles (required), asset_id (required), tile_size (required), tileset_id (required), +2 more.

art.tilemap.resolve_tilesA

Resolve semantic tile names to tileset local IDs. Use to verify tile names before building a map.

Inputs: intents (required), tileset_id (required).

art.tilemap.validateA

Validate a MapSpecification against its tileset. Checks missing tiles, invalid refs, style mismatch, object bounds.

Inputs: map_id (required).

art.validate_styleB

Validates the active style configuration and returns any errors found.

Inputs: no named parameters.

art.workflow.guideA

Generate a step-by-step painting guide for the AI to follow when drawing a subject. Enforces strict palette discipline, form-first/detail-last hierarchy, and per-step color limits. The guide is TEXT instructions — read it and follow each step sequentially.

Inputs: subject (required), width, height, profile, +1 more.

art.workflow.paletteA

Get the strict palette for a material — returns role-to-hex mappings, maximum color count, and forbidden colors. Use this before painting to know EXACTLY which colors are allowed.

Inputs: material.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.9/5.0

    Scored across 126 tools

    Disambiguation3/5

    The hierarchical namespaces help, but the sheer number of tools creates real overlap: art.provider.analyze vs art.pipeline.analyze, art.asset.archive vs art.asset.archive_version, and art.qa.asset vs art.critic.evaluate vs art.style.check all have fuzzy boundaries. An agent could easily pick the wrong one without very careful descriptions.

    Naming Consistency4/5

    Most tools follow a predictable art.<category>.<action> pattern with snake_case verbs, which is highly readable. However, a few top-level tools like art.validate_style, art.get_style, and art.get_palette break the convention, and verbs are mixed across add/register/create for similar operations.

    Tool Count1/5

    126 tools is an extreme count for any MCP server, far beyond the 25+ threshold. Many micro-tools—individual detail effects, memory CRUD variants, and Aseprite command generators—could be consolidated into broader operations, making the surface unnecessarily hard to navigate.

    Completeness5/5

    The tool surface is remarkably comprehensive for a game-art domain: asset lifecycle, versioning, approvals, style memory, QA, providers, canvas painting, production jobs, tilemaps, detail passes, Aseprite export, and workflow guidance are all covered. Major workflows have no obvious dead ends.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI coding agents to create, draw, and refine Aseprite documents through deterministic canvas, layer, frame, tag, and palette tools, with pixel analyzers, style validation, and preview/diff visual feedback. It also supports spritesheet and animated GIF export, producing multi-layer game-ready assets.
      1
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Enables users to automate the creation, editing, animation, and export of pixel-art game assets through a multi-agent pipeline that derives style specs and blueprints, generates Lua build scripts, and drives the canvas editor to produce .aseprite files, spritesheets, atlases, GIFs, and previews.
      12
      137 npm
      3
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents to create and edit pixel-art projects — sprites, props, palettes, eight-direction animation, and tile-based environments — through a stdio MCP server with discovery, help, and call tools. Agents can build from silhouette to detail, inspect native-scale renders, silhouettes, value maps, and GIF playback, then save every change as versionable source.
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Enables MCP-capable coding agents to act as a deterministic technical art director and multi-engine pipeline builder, locking AI-generated 2D/2.5D game assets to consistent camera angles, palettes, rigs, atlases, and exports across Blender, ComfyUI, UniRig, LibreSprite, Godot 4, Unity, and Unreal Engine 5.
      24
      MIT