Skip to main content
Glama
game-art-mcp

game-art-mcp

by Cuvara

game-art-mcp

KI-gesteuertes Pixel-Art-Stilsystem und MCP-Server für die Art Direction von 2D-RPG-Spielen.

Zweck

Dieses Repository ist die maßgebliche Quelle für die Art Direction des Projekts. Jeder KI-Agent kann in dieses Repository wechseln, den Projektkontext über MCP abfragen und genau verstehen, was „unser Kunststil“ bedeutet — ohne auf den Gesprächsverlauf angewiesen zu sein.

Related MCP server: Aseprite MCP Server

Architektur

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

Schnellstart

npm install
npm run build
npm test

MCP-Server ausführen

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

Stil validieren

npm run validate

MCP-Werkzeuge

Stil-Werkzeuge (schreibgeschützt)

Werkzeug

Beschreibung

art.get_project_context

Vollständiger Art-Kontext (Projekt + Stil + alle Regeln)

art.get_style

Aktive Stildefinition

art.get_style_rules

Bestimmte Regelkategorie (pixel_language, Sprachen, usw.)

art.get_palette

Farbpalette mit semantischen Rollen

art.validate_style

Stilkonfiguration validieren

Asset-Werkzeuge (Lesen + Schreiben)

Werkzeug

Beschreibung

art.asset.get

Asset anhand der ID abrufen

art.asset.find

Assets suchen/filtern (Typ, Kategorie, Status, Tags)

art.asset.exists

Prüfen, ob eine Asset-ID registriert ist

art.asset.register

Neues Asset mit vollständiger Validierung registrieren

art.asset.update

Vorhandenes Asset aktualisieren (Teilupdate)

art.asset.deprecate

Asset als veraltet markieren

art.asset.archive

Asset archivieren

art.asset.rebuild_index

Registry-Index aus den Asset-Dateien neu aufbauen

Memory-Werkzeuge (Lesen + Schreiben)

Werkzeug

Beschreibung

art.memory.get_summary

Memory-Übersicht: Anker, Entscheidungen, Ablehnungen, Referenzanzahl

art.memory.explain_style

Vollständige Stil-Erklärung mit Regeln, Ankern, Entscheidungen und Vermeidungen

art.memory.resolve_references

Deterministische Referenzauflösung für einen bestimmten Kontext

art.memory.get_anchor

Stilanker anhand der ID abrufen

art.memory.find_anchors

Anker suchen (Kategorie, Status, Dimensionsfilter)

art.memory.add_anchor

Neuen Stilanker hinzufügen

art.memory.get_reference

Freigegebene Referenz anhand der ID abrufen

art.memory.find_references

Referenzen suchen (Rolle, Status, asset_id-Filter)

art.memory.add_reference

Neue freigegebene Referenz hinzufügen

art.memory.get_rejection

Ablehnungsdatensatz anhand der ID abrufen

art.memory.find_rejections

Ablehnungen suchen (Typ, Status, Grund-Filter)

art.memory.add_rejection

Neuen Ablehnungsdatensatz hinzufügen

art.memory.get_decision

Künstlerische Entscheidung anhand der ID abrufen

art.memory.find_decisions

Entscheidungen suchen (Statusfilter)

art.memory.add_decision

Neue künstlerische Entscheidung hinzufügen

art.memory.get_style_history

Vollständige Historie der Stil-Entwicklung abrufen

QA-Werkzeuge (schreibgeschützt)

Werkzeug

Beschreibung

art.qa.asset

QA-Prüfungen für ein einzelnes Asset ausführen (vollständiger Bericht)

art.qa.batchtext

QA-Prüfungen für mehrere Assets ausführen (Batch-Bericht)

art.qa.gate

QA-Gate-Prüfung — Ergebnis „bestanden/nicht bestanden“ für Freigabeworkflows

art.qa.list_rules

Alle verfügbaren QA-Regeln mit Definitionen auflisten

art.qa.rule

Vollständige Definition einer bestimmten QA-Regel anhand der ID abrufen

art.qa.explain_failure

Erklären, warum eine bestimmte Regel für ein Asset fehlgeschlagen ist

art.qa.history

QA-Ausführungsverlauf abrufen, optional nach Asset-ID gefiltert

Provider-Werkzeuge (Lesen + Schreiben)

Werkzeug

Beschreibung

art.provider.list

Alle registrierten Provider mit Metadaten auflisten

art.provider.get

Detaillierte Metadaten für einen bestimmten Provider abrufen

art.provider.capabilities

Provider-Fähigkeiten abrufen (Operationen, Formate, Limits)

art.provider.health

Health-Status des Providers prüfen

art.provider.execute

Kunstgenerierungsoperation erneut über einen Provider ausführen

art.provider.cancel

Laufende Provider-Operation abbrechen

art.provider.operation

Status einer Operation anhand der ID abrufen

art.provider.artifact

Artefakt-Details und Provenienz anhand der ID abrufen

Produktions-Werkzeuge (Lesen + Schreiben)

Werkzeug

Beschreibung

art.production.plan

Produktionsplan erstellen (Vorschau vor der Ausführung)

art.production.create

Produktions-Job erstellen (Plan + dauerhaft speichern, nicht starten)

art.production.start

Ausführung eines Produktions-Jobs starten

art.production.status

Aktuellen Jobstatus abrufen (Zusammenfassung)

art.production.inspect

Vollständige Jobdetails abrufen (Ereignisse, Versuche, Plan)

art.production.resume

Fehlgeschlagenen Job wiederaufnehmen

art.production.cancel

Laufenden Job abbrechen

art.production.attempts

Versuchsverlauf für einen Job abrufen

art.production.approve

Job genehmigen, der auf Freigabe wartet

art.production.list

Alle Produktions-Job-IDs auflisten

Versionsverwaltungs-Werkzeuge (Lesen + Schreiben)

Werkzeug

Beschreibung

art.asset.current

Kanonische (aktuelle) Version eines Assets abrufen

art.asset.inspect_version

Details einer bestimmten Asset-Version abrufen

art.asset.history

Vollständige Versionshistorie eines Assets abrufen

art.asset.compare

Zwei Versionen desselben Assets vergleichen

art.asset.provenance

Versionsprovenienz inklusive Freigabedatensatz abrufen

art.asset.approval.request

Freigabe für ein Kandidaten-Asset beantragen

art.asset.approval.inspect

Freigabedatensatz anhand der ID abrufen

art.asset.approve

Kandidaten-Asset genehmigen

art.asset.reject

Kandidaten-Asset ablehnen

art.asset.request_changes

Änderungen an einem Kandidaten-Asset anfordern

art.asset.promote

Genehmigtes Kandidaten-Asset zur kanonischen Version befördern

art.asset.rollback

Kanonische Version auf eine frühere Version zurücksetzen

art.asset.archive_version

Kanonisches Asset archivieren

Stil- und QA-Werkzeuge sind schreibgeschützt. Asset-, Memory-, Provider-, Produktions- und Versionierungs-Werkzeuge unterstützen Lese- und Schreibzugriffe.

Asset-Registry

Das Asset-Registry (Phase 2) erfasst jedes Art-Asset im Projekt mit strukturierten Metadaten. Assets werden als einzelne YAML-Dateien unter registry/assets/ gespeichert und in registry/registry.yaml indiziert.

Wichtige Merkmale:

  • Semantische IDs — durch Punkte getrennt, klein geschrieben (z. B. character.goblin.001)

  • Stil-Verknüpfung — jedes Asset referenziert eine Stil-ID + Version

  • Beziehungen — variant_of, derived_from, animation_of usw.

  • Statusverfolgung — draft, approved, rejected, deprecated, archived

  • Vollständige Validierung — Schema, Stilreferenz, Existenz der Quelldatei, Beziehungen

Siehe docs/ASSET-REGISTRY.md für die vollständige Dokumentation und docs/ASSET-METADATA.md für das Metadaten-Schema.

Art-Memory

Das Art-Memory-System (Phase 3) verleiht dem Repository dauerhaftes visuelles Wissen. Es speichert, was genehmigt wurde, was abgelehnt wurde und warum — sodass Agenten keine Gesprächshistorie benötigen, um die Art Direction des Projekts zu verstehen.

Wichtige Konzepte:

  • Stilanker — kanonische visuelle Beispiele, die den Stil definieren (siehe docs/STYLE-ANCHORS.md)

  • Genehmigte Referenzen — vertrauenswürdige Assets mit Rollen-Preferenzen. Ablehnungen — was NICHT passt, mit einem kontrollierten Vokabular an Gründen

  • Art-Entscheidungen — Datensätze im ADR-Format für visuelle Richtungsentscheidungen (siehe docs/ART-DECISIONS.md)

  • Referenz-Resolver — deterministische Referenzauflösung, die für jede Erstellungsaufgabe relevanten Kontext zurückgibt

Siehe docs/ART-MEMORY.md für die vollständige Dokumentation.

Art-QA

Das Art-QA-System (Phase 4) bietet deterministische, reproduzierbare Qualitätsprüfungen für Pixel-Art-Assets. Jeder Check ist regelbasiert mit Soll-/Ist-Werten und strukturierten Korrekturmaßnahmen — keine Bilderkennung, keine Embeddings, keine automatische Reparatur.

Wichtige Konzepte:

  • 13 Regeln in 7 Kategorien (Technik, Dimensionen, Palette, Alpha, Pixel, Stil, Memuery)

  • 3 Profile — „strict“ (schlägt bei Warnung fehl), „default“ (schlägt bei Fehler fehl), „lenient“ (schlägt nur bei kritischen Fehlern fehl)

  • Maschinenlesbare Berichte — JSON mit Ergebnissen pro Regel, Schweregrad und Korrekturmaßnahmen

  • Stil-Integration — liest Canvas-Größen, Farbgrenzen und Pixel-Regeln aus dem aktiven Stil

  • Memory-Integration — prüft total zurückgewiesene Richtungen und akzeptierte Art-Entscheidungen

  • QA-Gate — Ergebnis „bestanden/nicht bestandefor for CI und Freigabeworkflows

  • QA-Verlauf — persistentes Log aller Ausführungen pro Asset

Siehe docs/ART-QA.md für die vollständige Dokumentation.

Provider-Adapter

Das Provider-Adapter-System (Phase 5) fügt eine providerneutrale, anbieterunabhängige Schnittstelle zu externen Art-Generierungswerkzeugen hinzu. Anfragen laufen über ein Gateway, das Operationen validiert, an registrierte Adapter delegiert und generierte Artefakte mit unveränderlicher Provenienz speichert.

Wichtige Konzepte:

  • ProviderAdapter-Schnittstelle — Metadaten, Fähigkeiten, Health, Ausführung, Abbruch

  • Artefakte — Rohe Provider-Ausgabe mit unveränderlicher Provenienz (noch keine Assets)

  • Capabilities — Details pro Operation (Formate, maximale Auflösung)

  • Dry-run — Anfragen validieren, ohne Ausgabe zu generieren

  • Mock-Provider — eingebauter Testadapter mit Fehler-/Timeout-Modi

  • Keine automatische Auswahl — Agenten müssen einen Provider eExplicitly wählen

Siehe docs/PROVIDERS.md für die vollständige Dokumentation.

Produktions-Orchestrator

Der Produktions-Orchestrator (Phase 6) koordiniert den gesamten Lebenszyklus der Art-Asset-Generierung: request validation, Stil-/Referenz-/Provider-Auflösung, Ausführung, QA, Wiederholung und Freigabeprüfung.

Wichtige Konzepte:

  • Koordinator, keine Quelle der Wahrheit — delegiert an Stil, Qualitätssicherung, Anbieter und Registry

  • Zustandsmaschine — 9 Status mit validierten Übergängen (erstellt bis abgeschlossen/fehlgeschlagen/abgebrochen)

  • 11 Produktionsstufen — REQUEST_VALIDATION bis APPROVAL_GATE

  • Begrenzte Wiederholung — konfigurierbare max_attempts (Standard 3) mit Reparaturplänen bei QA-Fehlern

  • Genehmigungsgrenze — stoppt bei awaiting_approval, genehmigt niemals automatisch

  • Plan-Veraltung — erkennt Stilversionsabweichungen vor der Ausführung

  • YAML-Persistenz — ein manifest.yaml pro Auftrag in production/<job_id>/

  • Ereignishistorie — nur-anhängendes Protokoll aller Zustandsänderungen pro Auftrag

Siehe docs/PRODUCTION.md für die vollständige Dokumentation.

Versionierung & Genehmigung

Das Versionierungs- & Genehmigungssystem (Phase 7) fügt unveränderliche Asset-Versionierung, explizite Genehmigungsworkflows und eine vollständige Prüfpfad hinzu. Keine Version wird jemals gelöscht; kein Asset wird jemals automatisch genehmigt.

Wichtige Konzepte:

  • Asset-Lebenszyklus — 8 Zustände: Entwurf, ausstehende_Genehmigung, genehmigt, abgelehnt, Änderungen_angefordert, befördert, ersetzt, archiviert

  • Genehmigungsworkflow — anfordern, genehmigen, ablehnen, Änderungen_anfordern mit strukturiertem Feedback

  • Genehmigungsrichtlinie — konfigurierbar: requires_qa_pass, allow_agent_approval, requires_human

  • Unveränderliche Versionen — monotone Inkrementierung, Elternverfolgung, vollständige Herkunft pro Version

  • Kanonischer Zeiger — verfolgt, welche Version aktuell ist; wird bei Beförderung/Rollback aktualisiert

  • Beförderung — Vergleich-und-Tausch mit QA-Gate und Genehmigungs-Gate

  • Rollback — setzt den kanonischen Zeiger auf eine frühere Version zurück, löscht niemals die Historie

  • Prüfprotokoll — 9 Ereignistypen, nur-anhängend, unveränderlich

  • Akteursidentität — Mensch, Agent, System, Anbieter bei jedem Datensatz verfolgt

Siehe docs/VERSIONING.md für die vollständige Dokumentation.

Aktuelle Phase

Phase 7 — Versionierung & Genehmigung (abgeschlossen)

Siehe docs/PHASES.md für die vollständige Roadmap.

Stilsystem

Stile sind strukturierte YAML-Dateien, die maschinenlesbare künstlerische Richtung darstellen:

  • style.yaml — Identität, Leinwandgrößen, Skalierung

  • palette.yaml — Farben mit semantischen Rollen

  • pixel-rules.yaml — Pixel-Art-Einschränkungen

  • outline.yaml — Konturregeln

  • shape-language.yaml — visuelle Sprache

  • lighting.yaml — Lichtrichtung und -regeln

  • animation.yaml — Bildanzahl, FPS, Einschränkungen

Siehe docs/STYLE-SYSTEM.md für 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.

NameRequiredDescriptionDefault
session_idYesCanvas session ID
output_nameNoOutput file base name (default: session ID)
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.

NameRequiredDescriptionDefault
layersNoLayer names (bottom to top). Default: Outline, Base, Shadow, Detail, Effects
session_idYesCanvas session ID
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.

NameRequiredDescriptionDefault
columnsNoNumber of columns in spritesheet (default: 4)
paddingNoPadding between cells in pixels (default: 0)
session_idYesCanvas session ID
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.

NameRequiredDescriptionDefault
widthYesExpected sprite width in pixels
heightYesExpected sprite height in pixels
max_colorsYesMaximum allowed palette colors
session_idYesCanvas session ID
art.asset.approval.inspectB

Get an approval record by ID.

NameRequiredDescriptionDefault
approval_idYesApproval record ID
art.asset.approval.requestC

Request approval for a candidate asset.

NameRequiredDescriptionDefault
actorYesRequesting actor
styleYesStyle reference
asset_idYesAsset identifier
artifact_idNoArtifact identifier
qa_snapshotNoQA snapshot at request time
candidate_idYesCandidate identifier
production_job_idNoProduction job ID
art.asset.approveC

Approve a candidate asset.

NameRequiredDescriptionDefault
actorYesApproving actor
reasonNoApproval reason
approval_idYesApproval record ID
art.asset.archiveB

Archive an asset (remove from active use).

NameRequiredDescriptionDefault
idYesAsset ID to archive
art.asset.archive_versionC

Archive a canonical asset, removing it from active use.

NameRequiredDescriptionDefault
actorYesActor performing archive
asset_idYesAsset identifier
art.asset.compareB

Compare two versions of an asset.

NameRequiredDescriptionDefault
asset_idYesAsset identifier
version_aYesFirst version
version_bYesSecond version
art.asset.currentB

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

NameRequiredDescriptionDefault
asset_idYesAsset identifier
art.asset.deprecateC

Mark an asset as deprecated.

NameRequiredDescriptionDefault
idYesAsset ID to deprecate
art.asset.existsA

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

NameRequiredDescriptionDefault
idYesAsset ID to check
art.asset.findA

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

NameRequiredDescriptionDefault
tagsNoFilter by tags (all must match)
typeNoFilter by asset type
statusNoFilter by status
categoryNoFilter by category
style_idNoFilter by style ID
style_versionNoFilter by style version
art.asset.getA

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

NameRequiredDescriptionDefault
idYesAsset ID (e.g. "character.goblin.001")
art.asset.historyC

Get the full version history of an asset.

NameRequiredDescriptionDefault
asset_idYesAsset identifier
art.asset.inspect_versionB

Get details of a specific asset version.

NameRequiredDescriptionDefault
versionYesVersion number
asset_idYesAsset identifier
art.asset.promoteC

Promote an approved candidate to become the canonical version.

NameRequiredDescriptionDefault
actorYesPromoting actor
styleYesStyle reference
qa_resultNoQA result
referencesNoReference asset IDs
approval_idYesApproval record ID
artifact_idYesArtifact identifier
provider_idNoProvider identifier
candidate_idYesCandidate identifier
target_asset_idYesTarget asset identifier
production_job_idNoProduction job ID
expected_current_versionNoExpected current version (optimistic lock)
art.asset.provenanceC

Get version provenance including approval record.

NameRequiredDescriptionDefault
versionYesVersion number
asset_idYesAsset identifier
art.asset.rebuild_indexA

Rebuild the asset registry index from all registered asset files.

NameRequiredDescriptionDefault

No parameters

art.asset.registerA

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

NameRequiredDescriptionDefault
idYesUnique asset ID (e.g. "character.goblin.001")
nameYesHuman-readable asset name
tagsNoTags for filtering
typeYesAsset type
styleYesStyle reference { id, version }
sourceYesSource file { path, format }
statusYesAsset status
categoryYesAsset category
animationNoAnimation metadata
technicalNoTechnical metadata
dimensionsNoAsset dimensions in pixels
relationshipsNoRelationships to other assets
art.asset.rejectC

Reject a candidate asset.

NameRequiredDescriptionDefault
actorYesRejecting actor
reasonNoRejection reason
feedbackNoDetailed feedback items
approval_idYesApproval record ID
art.asset.request_changesC

Request changes on a candidate asset.

NameRequiredDescriptionDefault
actorYesRequesting actor
reasonNoSummary reason
feedbackYesRequired changes
approval_idYesApproval record ID
art.asset.rollbackB

Rollback the canonical version to a previous version.

NameRequiredDescriptionDefault
actorYesActor performing rollback
asset_idYesAsset identifier
target_versionYesVersion to rollback to
expected_current_versionYesExpected current version (optimistic lock)
art.asset.updateC

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

NameRequiredDescriptionDefault
idYesAsset ID to update
patchYesFields to update
art.canvas.analyze_refA

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

NameRequiredDescriptionDefault
image_pathYesPath to image file (relative to project root or absolute)
art.canvas.batch_drawA

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

NameRequiredDescriptionDefault
commandsYesArray of draw commands to execute sequentially
session_idYesCanvas session ID
art.canvas.clearB

Clear the entire canvas, optionally filling with a color.

NameRequiredDescriptionDefault
colorNoFill color as hex string (defaults to transparent/black)
session_idYesCanvas session ID
art.canvas.createB

Create a new pixel canvas session for drawing.

NameRequiredDescriptionDefault
widthNoCanvas width in pixels (default 16)
heightNoCanvas height in pixels (default 16)
asset_idNoAsset ID to associate with this session (enables Studio auto-open)
bg_colorNoBackground color as hex string (e.g. "#000000")
session_idYesUnique session identifier
art.canvas.draw_circleB

Draw a circle on the canvas.

NameRequiredDescriptionDefault
cxYesCenter X coordinate
cyYesCenter Y coordinate
colorYesCircle color as hex string
filledNoWhether to fill the circle (default true)
radiusYesCircle radius in pixels
session_idYesCanvas session ID
art.canvas.draw_ditherB

Apply a dither pattern to a rectangular region.

NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
widthYesRegion width
color1YesFirst color as hex string
color2YesSecond color as hex string
heightYesRegion height
patternYesDither pattern type
session_idYesCanvas session ID
art.canvas.draw_lineA

Draw a line between two points using Bresenham algorithm.

NameRequiredDescriptionDefault
x0YesStart X coordinate
x1YesEnd X coordinate
y0YesStart Y coordinate
y1YesEnd Y coordinate
colorYesLine color as hex string
session_idYesCanvas session ID
art.canvas.draw_noiseC

Fill a region with random noise using specified colors.

NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
widthYesRegion width
colorsYesArray of hex color strings to randomly pick from
heightYesRegion height
densityNoProbability of placing a pixel (0-1, default 0.5)
session_idYesCanvas session ID
art.canvas.draw_rectB

Draw a rectangle on the canvas.

NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
colorYesFill/stroke color as hex string
widthYesRectangle width
filledNoWhether to fill the rectangle (default true)
heightYesRectangle height
session_idYesCanvas session ID
art.canvas.fillB

Flood fill an area starting from a point.

NameRequiredDescriptionDefault
xYesStart X coordinate
yYesStart Y coordinate
colorYesFill color as hex string
session_idYesCanvas session ID
art.canvas.get_pixelB

Read the color of a single pixel on the canvas.

NameRequiredDescriptionDefault
xYesX coordinate
yYesY coordinate
session_idYesCanvas session ID
art.canvas.get_stateA

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

NameRequiredDescriptionDefault
formatNoOutput format (default color_map)color_map
session_idYesCanvas session ID
art.canvas.saveA

Save the current canvas to a PNG file.

NameRequiredDescriptionDefault
session_idYesCanvas session ID
output_pathNoOutput file path (defaults to artifacts/{session_id}/output.png)
art.canvas.set_pixelB

Set a single pixel on the canvas.

NameRequiredDescriptionDefault
xYesX coordinate
yYesY coordinate
colorYesPixel color as hex string (e.g. "#FF0000")
session_idYesCanvas session ID
art.critic.evaluateB

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

NameRequiredDescriptionDefault
profileNoDetail profile level for scoring context
session_idYesCanvas session ID
art.critic.refineC

Execute refinement actions from a critique to improve canvas quality.

NameRequiredDescriptionDefault
actionsYesArray of refinement actions to execute
session_idYesCanvas session ID
art.detail.cavityB

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

NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
seedYesRandom seed
countYesNumber of cavities
widthYesRegion width
heightYesRegion height
dark_colorYesDark (cavity center) color as hex string
session_idYesCanvas session ID
light_colorYesLight (rim) color as hex string
art.detail.clean_clustersC

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

NameRequiredDescriptionDefault
session_idYesCanvas session ID
min_cluster_sizeNoMinimum cluster size to keep (default 2)
art.detail.clusterC

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

NameRequiredDescriptionDefault
cxYesCenter X coordinate
cyYesCenter Y coordinate
seedNoRandom seed (used for irregular shape)
sizeYesCluster size (radius in pixels)
colorYesCluster color as hex string (e.g. "#8B4513")
shapeYesCluster shape
session_idYesCanvas session ID
art.detail.crackB

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

NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
seedYesRandom seed
colorYesCrack color as hex string
countYesNumber of cracks
widthYesRegion width
heightYesRegion height
session_idYesCanvas session ID
art.detail.edge_breakB

Apply edge breakup to avoid perfectly geometric silhouettes.

NameRequiredDescriptionDefault
seedYesRandom seed
amountYesBreakup amount (0=none, 1=maximum)
session_idYesCanvas session ID
preserve_outlineNoWhether to preserve outline-colored pixels (default true)
art.detail.executeC

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

NameRequiredDescriptionDefault
seedNoRandom seed
profileNoDetail profile levelmedium
materialsYesMaterial types to apply
session_idYesCanvas session ID
art.detail.grainA

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

NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
seedYesRandom seed
colorYesGrain color as hex string
widthYesRegion width
heightYesRegion height
densityYesGrain density (0-1)
directionYesGrain direction
session_idYesCanvas session ID
art.detail.highlightC

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

NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
seedYesRandom seed
colorYesHighlight color as hex string
widthYesRegion width
heightYesRegion height
densityYesHighlight density (0-1)
session_idYesCanvas session ID
art.detail.materialB

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

NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
seedYesRandom seed
widthYesRegion width
heightYesRegion height
materialYesMaterial type (e.g. "stone", "wood", "metal")
session_idYesCanvas session ID
art.detail.passC

Run a single named detail pass on a canvas session.

NameRequiredDescriptionDefault
materialsYesMaterial types
pass_nameYesPass name (e.g. "material", "texture", "cleanup", "critique")
session_idYesCanvas session ID
art.detail.planB

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

NameRequiredDescriptionDefault
seedNoRandom seed for deterministic output
widthYesAsset width in pixels
heightYesAsset height in pixels
profileNoDetail profile level (low/medium/high/hero/boss/tile/item)medium
subjectYesSubject description (e.g. "stone wall tile", "iron sword")
materialsYesMaterial types (e.g. ["stone", "metal"])
art.detail.shadowA

Add shadow clusters to a region for depth/occlusion.

NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
seedYesRandom seed
colorYesShadow color as hex string
widthYesRegion width
heightYesRegion height
densityYesShadow density (0-1)
session_idYesCanvas session ID
art.detail.speckleA

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

NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
seedYesRandom seed
widthYesRegion width
colorsYesArray of hex colors for speckle dots
heightYesRegion height
densityYesSpeckle density (0-1)
session_idYesCanvas session ID
art.detail.textureC

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

NameRequiredDescriptionDefault
xYesTop-left X coordinate
yYesTop-left Y coordinate
seedYesRandom seed
widthYesRegion width
colorsYesArray of hex colors to use
heightYesRegion height
densityYesPattern density (0-1)
patternYesTexture pattern name (noise_cluster/voronoi/grain/crack/speckle/cavity/edge_breakup)
session_idYesCanvas session ID
art.get_paletteB

Returns the color palette for the active style.

NameRequiredDescriptionDefault

No parameters

art.get_project_contextA

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

NameRequiredDescriptionDefault

No parameters

art.get_styleA

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

NameRequiredDescriptionDefault
versionNoStyle version number. Only used with style_id.
style_idNoStyle identifier (e.g. "fantasy_pixel"). Omit for active style.
art.get_style_rulesB

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

NameRequiredDescriptionDefault
categoryYesRule category: pixel_language, outline, shape_language, lighting, or animation.
art.memory.add_anchorC

Add a new style anchor to the art memory.

NameRequiredDescriptionDefault
idYesAnchor ID
nameYesHuman-readable name
noteNoOptional note
styleYesStyle reference { id, version }
assetsYesAsset IDs this anchor references
statusYesAnchor status
categoryYesAnchor category
strengthYesAnchor strength
dimensionsYesVisual dimensions
provenanceNoProvenance info
art.memory.add_decisionC

Add a new art decision record to the art memory.

NameRequiredDescriptionDefault
idYesDecision ID (e.g. "ADR-001")
styleYesStyle reference { id, version }
titleYesDecision title
reasonYesReasons for the decision
statusYesDecision status
decisionYesDecision details
provenanceNoProvenance info
alternativesNoAlternatives considered
consequencesNoExpected consequences
relationshipsNoRelationships to other decisions
art.memory.add_referenceC

Add a new approved reference to the art memory.

NameRequiredDescriptionDefault
idYesReference ID
noteNoOptional note
rolesYesReference roles
styleYesStyle reference { id, version }
statusYesReference status
asset_idYesAsset ID this reference points to
strengthYesReference strength
dimensionsYesVisual dimensions
provenanceNoProvenance info
art.memory.add_rejectionB

Add a new rejection record to the art memory.

NameRequiredDescriptionDefault
idYesRejection ID (e.g. "rejection-001")
noteNoOptional note
typeYesRejection type
styleYesStyle reference { id, version }
statusYesRejection status
reasonsYesRejection reasons
asset_idNoAsset ID (required for type=asset)
provenanceNoProvenance info
descriptionNoDescription (required for type=direction)
art.memory.explain_styleA

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

NameRequiredDescriptionDefault
style_idNoStyle ID (defaults to latest from history)
style_versionNoStyle version (defaults to latest)
art.memory.find_anchorsC

Search for style anchors with optional filters.

NameRequiredDescriptionDefault
statusNoFilter by status
categoryNoFilter by category
style_idNoFilter by style ID
dimensionNoFilter by dimension
style_versionNoFilter by style version
art.memory.find_decisionsB

Search for art decision records with optional filters.

NameRequiredDescriptionDefault
statusNoFilter by status
style_idNoFilter by style ID
style_versionNoFilter by style version
art.memory.find_referencesC

Search for approved references with optional filters.

NameRequiredDescriptionDefault
roleNoFilter by role
statusNoFilter by status
asset_idNoFilter by asset ID
style_idNoFilter by style ID
style_versionNoFilter by style version
art.memory.find_rejectionsC

Search for rejection records with optional filters.

NameRequiredDescriptionDefault
typeNoFilter by rejection type
reasonNoFilter by reason
statusNoFilter by status
style_idNoFilter by style ID
style_versionNoFilter by style version
art.memory.get_anchorA

Get a style anchor by its ID.

NameRequiredDescriptionDefault
idYesAnchor ID (e.g. "anchor.hero.canonical")
art.memory.get_decisionA

Get an art decision record by its ID.

NameRequiredDescriptionDefault
idYesDecision ID (e.g. "ADR-001")
art.memory.get_referenceC

Get an approved reference by its ID.

NameRequiredDescriptionDefault
idYesReference ID (e.g. "reference.hero.front")
art.memory.get_rejectionA

Get a rejection record by its ID.

NameRequiredDescriptionDefault
idYesRejection ID (e.g. "rejection-001")
art.memory.get_style_historyB

Get the full style evolution history.

NameRequiredDescriptionDefault

No parameters

art.memory.get_summaryA

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

NameRequiredDescriptionDefault

No parameters

art.memory.insightsA

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

NameRequiredDescriptionDefault

No parameters

art.memory.negativeA

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

NameRequiredDescriptionDefault
typeNoAsset type to filter negative patterns
materialNoMaterial type to filter negative patterns
art.memory.resolve_referencesD

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

NameRequiredDescriptionDefault
typeNoAsset type filter
categoryNoCategory filter
style_idNoStyle ID (defaults to latest)
dimensionsNoDimensions to match
style_versionNoStyle version (defaults to latest)
art.memory.signatureA

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

NameRequiredDescriptionDefault
session_idYesCanvas session ID
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.

NameRequiredDescriptionDefault
poseNoPose (e.g. "standing", "walking", "idle")
facingNoFacing direction (e.g. "front", "left", "3/4")
subjectNoWhat the image depicts (e.g. "goblin warrior")
categoryNoAsset category (e.g. "monster", "character", "tile")
file_pathNoPath to PNG file (relative to project root)
reference_idNoReference ID (if already stored in references/)
art.pipeline.planA

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

NameRequiredDescriptionDefault
reference_idYesReference ID with existing spec
max_iterationsNoMax QA iteration loops (default: 3)
art.pipeline.scoreC

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

NameRequiredDescriptionDefault
asset_pathYesPath to PNG file to score (relative to project root)
reference_idNoReference ID for comparison (optional)
art.pipeline.specB

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

NameRequiredDescriptionDefault
subjectNoOverride subject description
max_colorsNoOverride max palette colors
canvas_widthNoOverride canvas width
reference_idYesReference ID to build spec from
canvas_heightNoOverride canvas height
art.production.approveB

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

NameRequiredDescriptionDefault
job_idYesProduction job ID
art.production.attemptsB

Get the attempt history for a production job.

NameRequiredDescriptionDefault
job_idYesProduction job ID
art.production.cancelC

Cancel a production job.

NameRequiredDescriptionDefault
job_idYesProduction job ID
art.production.createB

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

NameRequiredDescriptionDefault
styleNoStyle override
outputYesOutput specification
subjectYesSubject description (e.g. "goblin", "fire sword")
categoryNoAsset category (e.g. "enemy", "npc")
animationNoAnimation requirements
asset_typeYesAsset type (e.g. "monster", "character", "item")
request_idYesUnique request identifier
max_attemptsNoMaximum generation attempts
preferred_providerNoPreferred provider ID
art.production.inspectC

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

NameRequiredDescriptionDefault
job_idYesProduction job ID
art.production.listB

List all production job IDs.

NameRequiredDescriptionDefault

No parameters

art.production.planB

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

NameRequiredDescriptionDefault
styleNoStyle override
outputYesOutput specification
subjectYesSubject description (e.g. "goblin", "fire sword")
categoryNoAsset category (e.g. "enemy", "npc")
animationNoAnimation requirements
asset_typeYesAsset type (e.g. "monster", "character", "item")
request_idYesUnique request identifier
max_attemptsNoMaximum generation attempts
preferred_providerNoPreferred provider ID
art.production.resumeA

Resume a failed or interrupted production job.

NameRequiredDescriptionDefault
job_idYesProduction job ID
art.production.startC

Start executing a production job.

NameRequiredDescriptionDefault
job_idYesProduction job ID
art.production.statusC

Get the current status of a production job.

NameRequiredDescriptionDefault
job_idYesProduction job ID
art.provider.analyzeB

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

NameRequiredDescriptionDefault
styleNoStyle context (uses default if omitted)
asset_idNoAsset ID for signature tagging
operationYesAnalysis operation to perform
source_pathYesAbsolute path to the PNG file to analyze
compare_pathNoSecond PNG path (required for compare_canvases)
connectivityNoCluster connectivity: 4 or 8 (default 8, for detect_clusters)
art.provider.artifactB

Get details of a generated artifact.

NameRequiredDescriptionDefault
artifact_idYes
art.provider.cancelC

Cancel a running provider operation.

NameRequiredDescriptionDefault
operation_idYes
art.provider.capabilitiesB

Get the capabilities of a specific provider.

NameRequiredDescriptionDefault
provider_idYesProvider ID
art.provider.executeC

Execute an art generation operation via a provider.

NameRequiredDescriptionDefault
styleYes
outputNo
dry_runNo
asset_idNo
operationYes
asset_typeNo
parametersNo
referencesNo
provider_idYes
timeout_secondsNo
art.provider.fallbackC

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

NameRequiredDescriptionDefault
styleYes
outputNo
dry_runNo
asset_idNo
operationYes
asset_typeNo
parametersNo
referencesNo
provider_idYesPrimary provider ID
timeout_secondsNo
fallback_providerNoFallback provider ID to try if primary fails
art.provider.getA

Get detailed metadata for a specific provider.

NameRequiredDescriptionDefault
provider_idYesProvider ID
art.provider.healthB

Check the health status of a specific provider.

NameRequiredDescriptionDefault
provider_idYesProvider ID
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.

NameRequiredDescriptionDefault

No parameters

art.provider.listA

List all registered art providers with their metadata.

NameRequiredDescriptionDefault

No parameters

art.provider.operationC

Get the status of a provider operation.

NameRequiredDescriptionDefault
operation_idYes
art.qa.assetA

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

NameRequiredDescriptionDefault
profileNoQA profile: strict, default, or lenient
asset_idYesAsset ID to check (e.g. "character.goblin.001")
art.qa.batchA

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

NameRequiredDescriptionDefault
profileNoQA profile: strict, default, or lenient
asset_idsYesArray of asset IDs to check
art.qa.explain_failureA

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

NameRequiredDescriptionDefault
rule_idYesRule ID that failed
asset_idYesAsset ID that failed the rule
art.qa.gateB

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

NameRequiredDescriptionDefault
profileNoQA profile: strict, default, or lenient
asset_idYesAsset ID to gate-check
art.qa.historyC

Get QA run history. Optionally filter by asset ID.

NameRequiredDescriptionDefault
asset_idNoFilter history by asset ID (omit for all)
art.qa.list_rulesA

List all available QA rules with their definitions.

NameRequiredDescriptionDefault

No parameters

art.qa.ruleA

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

NameRequiredDescriptionDefault
rule_idYesRule ID (e.g. "canvas.dimensions")
art.ref.canonicalA

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

NameRequiredDescriptionDefault
typeNoAsset type filter
materialNoMaterial type filter
art.ref.packB

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

NameRequiredDescriptionDefault
typeNoAsset type filter
categoryNoAsset category filter
materialNoMaterial type filter
max_negativeNoMaximum negative examples
max_canonicalNoMaximum canonical references
art.ref.retrieveB

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

NameRequiredDescriptionDefault
typeNoAsset type filter (e.g. "character", "tile", "item")
categoryNoAsset category filter
materialNoMaterial type filter (e.g. "stone", "wood")
max_resultsNoMaximum number of results to return
art.style.bootstrapA

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

NameRequiredDescriptionDefault

No parameters

art.style.checkA

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

NameRequiredDescriptionDefault
materialNoMaterial type for context-specific checking
session_idYesCanvas session ID
art.style.compileB

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

NameRequiredDescriptionDefault
widthNoAsset width in pixels
heightNoAsset height in pixels
profileNoDetail profile level (low/medium/high/hero/boss/tile/item)medium
materialNoMaterial type (e.g. "stone", "wood", "metal")
art.style.repairA

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

NameRequiredDescriptionDefault
materialNoMaterial type for context-specific repairs
session_idYesCanvas session ID
art.tilemap.build_opsB

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

NameRequiredDescriptionDefault
map_idYesMap ID to build operations for
art.tilemap.create_specC

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

NameRequiredDescriptionDefault
seedNoRandom seed for procedural generation
biomeYesBiome (e.g. "forest", "dungeon", "village")
widthYesMap width in tiles
heightYesMap height in tiles
layersYesMap layers
map_idYesMap identifier
objectsNoMap objects
tile_sizeNoTile size (default: 16)
tileset_idYesTileset to use
descriptionNo
art.tilemap.list_tilesetsA

List all registered tileset definitions.

NameRequiredDescriptionDefault

No parameters

art.tilemap.register_tilesetB

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

NameRequiredDescriptionDefault
tilesYesTile definitions
asset_idYesSource pixel art asset ID
style_idNoStyle ID (default: active style)
tile_sizeYesTile size in pixels (e.g. 16)
tileset_idYesUnique tileset ID (e.g. "forest_v1")
style_versionNoStyle version
art.tilemap.resolve_tilesA

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

NameRequiredDescriptionDefault
intentsYesTiles to resolve
tileset_idYesTileset to resolve against
art.tilemap.validateA

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

NameRequiredDescriptionDefault
map_idYesMap ID to validate
art.validate_styleB

Validates the active style configuration and returns any errors found.

NameRequiredDescriptionDefault

No 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.

NameRequiredDescriptionDefault
widthNoAsset width in pixels (default 16)
heightNoAsset height in pixels (default 16)
profileNoDetail profile level (low/medium/high/hero/boss)medium
subjectYesWhat to paint (e.g. "stone house", "wooden barrel", "iron sword")
materialNoMaterial type (e.g. "stone", "wood", "metal", "grass", "dirt", "water", "leather", "cloth", "skin", "ice", "magic")
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.

NameRequiredDescriptionDefault
materialNoMaterial type (e.g. "stone", "wood", "metal"). Omit for general palette.

Tool Schema Changelog

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

  1. 9 tool updatesv0.3.1
    • Addedart.aseprite.export
    • Addedart.aseprite.layers
    • Addedart.aseprite.spritesheet
    • Addedart.aseprite.validate
    • Addedart.provider.analyze
    • Addedart.provider.fallback
    • Addedart.provider.health_all
    • Addedart.workflow.guide
    • Addedart.workflow.palette
  2. 50 tool updatesv0.3.0
    • Addedart.canvas.analyze_ref
    • Addedart.canvas.batch_draw
    • Addedart.canvas.clear
    • Addedart.canvas.create
    • Addedart.canvas.draw_circle
    • Addedart.canvas.draw_dither
    • Addedart.canvas.draw_line
    • Addedart.canvas.draw_noise
    • Addedart.canvas.draw_rect
    • Addedart.canvas.fill
    • Addedart.canvas.get_pixel
    • Addedart.canvas.get_state
    • Addedart.canvas.save
    • Addedart.canvas.set_pixel
    • Addedart.critic.evaluate
    • Addedart.critic.refine
    • Addedart.detail.cavity
    • Addedart.detail.clean_clusters
    • Addedart.detail.cluster
    • Addedart.detail.crack
    • Addedart.detail.edge_break
    • Addedart.detail.execute
    • Addedart.detail.grain
    • Addedart.detail.highlight
    • Addedart.detail.material
    • Addedart.detail.pass
    • Addedart.detail.plan
    • Addedart.detail.shadow
    • Addedart.detail.speckle
    • Addedart.detail.texture
    • Addedart.memory.insights
    • Addedart.memory.negative
    • Addedart.memory.signature
    • Addedart.pipeline.analyze
    • Addedart.pipeline.plan
    • Addedart.pipeline.score
    • Addedart.pipeline.spec
    • Addedart.ref.canonical
    • Addedart.ref.pack
    • Addedart.ref.retrieve
    • Addedart.style.bootstrap
    • Addedart.style.check
    • Addedart.style.compile
    • Addedart.style.repair
    • Addedart.tilemap.build_ops
    • Addedart.tilemap.create_spec
    • Addedart.tilemap.list_tilesets
    • Addedart.tilemap.register_tileset
    • Addedart.tilemap.resolve_tiles
    • Addedart.tilemap.validate
  3. 67 tool updatesv0.1.0
    • First observedart.asset.approval.inspect
    • First observedart.asset.approval.request
    • First observedart.asset.approve
    • First observedart.asset.archive
    • First observedart.asset.archive_version
    • First observedart.asset.compare
    • First observedart.asset.current
    • First observedart.asset.deprecate
    • First observedart.asset.exists
    • First observedart.asset.find
    • First observedart.asset.get
    • First observedart.asset.history
    • First observedart.asset.inspect_version
    • First observedart.asset.promote
    • First observedart.asset.provenance
    • First observedart.asset.rebuild_index
    • First observedart.asset.register
    • First observedart.asset.reject
    • First observedart.asset.request_changes
    • First observedart.asset.rollback
    • First observedart.asset.update
    • First observedart.get_palette
    • First observedart.get_project_context
    • First observedart.get_style
    • First observedart.get_style_rules
    • First observedart.memory.add_anchor
    • First observedart.memory.add_decision
    • First observedart.memory.add_reference
    • First observedart.memory.add_rejection
    • First observedart.memory.explain_style
    • First observedart.memory.find_anchors
    • First observedart.memory.find_decisions
    • First observedart.memory.find_references
    • First observedart.memory.find_rejections
    • First observedart.memory.get_anchor
    • First observedart.memory.get_decision
    • First observedart.memory.get_reference
    • First observedart.memory.get_rejection
    • First observedart.memory.get_style_history
    • First observedart.memory.get_summary
    • First observedart.memory.resolve_references
    • First observedart.production.approve
    • First observedart.production.attempts
    • First observedart.production.cancel
    • First observedart.production.create
    • First observedart.production.inspect
    • First observedart.production.list
    • First observedart.production.plan
    • First observedart.production.resume
    • First observedart.production.start
    • First observedart.production.status
    • First observedart.provider.artifact
    • First observedart.provider.cancel
    • First observedart.provider.capabilities
    • First observedart.provider.execute
    • First observedart.provider.get
    • First observedart.provider.health
    • First observedart.provider.list
    • First observedart.provider.operation
    • First observedart.qa.asset
    • First observedart.qa.batch
    • First observedart.qa.explain_failure
    • First observedart.qa.gate
    • First observedart.qa.history
    • First observedart.qa.list_rules
    • First observedart.qa.rule
    • First observedart.validate_style

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

ActivityStale
ResponsivenessNo recent community issues

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
    113 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