game-art-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@game-art-mcp explain our current pixel art style"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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, phasesQuick Start
npm install
npm run build
npm testRun MCP Server
npm start
# or with custom root:
ART_MCP_ROOT=/path/to/project npm startValidate Style
npm run validateMCP Tools
Style Tools (read-only)
Tool | Description |
| Full art context (project + style + all rules) |
| Active style definition |
| Specific rule category (pixel_language, outline, etc.) |
| Color palette with semantic roles |
| Validate style configuration |
Asset Tools (read + write)
Tool | Description |
| Get asset by ID |
| Search/filter assets (type, category, status, tags) |
| Check whether an asset ID is registered |
| Register a new asset with full validation |
| Update an existing asset (partial patch) |
| Mark an asset as deprecated |
| Archive an asset |
| Rebuild the registry index from asset files |
Memory Tools (read + write)
Tool | Description |
| Memory overview: anchors, decisions, rejections, reference count |
| Full style explanation with rules, anchors, decisions, avoidances |
| Deterministic reference lookup for a given context |
| Get a style anchor by ID |
| Search anchors (category, status, dimension filters) |
| Add a new style anchor |
| Get an approved reference by ID |
| Search references (role, status, asset_id filters) |
| Add a new approved reference |
| Get a rejection record by ID |
| Search rejections (type, status, reason filters) |
| Add a new rejection record |
| Get an art decision by ID |
| Search decisions (status filter) |
| Add a new art decision |
| Get the full style evolution history |
QA Tools (read-only)
Tool | Description |
| Run QA checks on a single asset (full report) |
| Run QA checks on multiple assets (batch report) |
| QA gate check — pass/fail verdict for approval workflows |
| List all available QA rules with definitions |
| Get the full definition of a specific QA rule by ID |
| Explain why a specific rule failed for an asset |
| Get QA run history, optionally filtered by asset ID |
Provider Tools (read + write)
Tool | Description |
| List all registered providers with metadata |
| Get detailed metadata for a specific provider |
| Get provider capabilities (operations, formats, limits) |
| Check provider health status |
| Execute an art generation operation via a provider |
| Cancel a running provider operation |
| Get operation status by ID |
| Get artifact details and provenance by ID |
Production Tools (read + write)
Tool | Description |
| Create a production plan (preview before executing) |
| Create a production job (plan + persist, does not start) |
| Start executing a production job |
| Get current job status (summary) |
| Get full job details (events, attempts, plan) |
| Resume a failed job |
| Cancel a running job |
| Get attempt history for a job |
| Approve a job awaiting approval |
| List all production job IDs |
Versioning Tools (read + write)
Tool | Description |
| Get the canonical (current) version of an asset |
| Get details of a specific asset version |
| Get the full version history of an asset |
| Compare two versions of the same asset |
| Get version provenance including approval record |
| Request approval for a candidate asset |
| Get an approval record by ID |
| Approve a candidate asset |
| Reject a candidate asset |
| Request changes on a candidate asset |
| Promote an approved candidate to canonical version |
| Rollback canonical to a previous 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-approvesPlan 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_humanImmutable 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, scalingpalette.yaml— colors with semantic rolespixel-rules.yaml— pixel-art constraintsoutline.yaml— outline rulesshape-language.yaml— visual languagelighting.yaml— light direction and rulesanimation.yaml— frame counts, FPS, constraints
See docs/STYLE-SYSTEM.md for details.
Available Tools
126 toolsart.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
Scored across 126 tools
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.
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.
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.
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
Related MCP Connectors
AI game assets for agents: consistent sprites, 2D animations, tiles, maps, music and engine exports.
Generate, edit, style-match, turn, and animate game-ready pixel art at exact sizes.
Build a game's 2D art layer with your agent: characters, animations, tilesets, levels, 5 engines.
Generate pixel art sprites, animations, 8-direction rotations and palettes for games.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables 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.1MIT
- AlicenseBqualityCmaintenanceEnables 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.12137 npm3MIT
- AlicenseNot gradedqualityCmaintenanceEnables 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
- AlicenseBqualityCmaintenanceEnables 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.24MIT