Skip to main content
Glama

godot-sprite-mcp

CI License: MIT Python 3.10+

English | 简体中文

A lightweight Model Context Protocol (MCP) server & CLI for Godot 4.x that slices 2D spritesheets, exports SpriteFrames (.tres) animations, computes feet-aligned body colliders (CollisionShape2D), and generates ready-to-open .tscn character scenes directly from PNG alpha channels.

Animated Demo

Collider Comparison

In the showcase above, even when computed across the broadsword attack row (raw_width = 128px), the 30% vertical thickness filter automatically strips the 74px extended blade and keeps a stable 54×112px torso collider, while preserving the wide 99×112px body on the slime.

✨ Features

MCP Tool

Description

inspect_spritesheet

Auto-detects grid cells or irregular sprite islands from the PNG alpha channel (supports res:// URIs).

build_sprite_frames

Generates Godot 4 (format=3) SpriteFrames .tres resources with AtlasTexture sub-resources.

build_body_collider

Overlays animation frames and uses a 30% vertical thickness filter to generate a stable, feet-aligned RectangleShape2D / CapsuleShape2D.

build_character_scene

Writes a complete Godot 4 .tscn character scene (CharacterBody2D + AnimatedSprite2D + feet-aligned CollisionShape2D).

extract_collision_polygon

Traces and simplifies outer pixel contours into a CollisionPolygon2D (<= 24 vertices) for static props.


Related MCP server: blender-iso-mcp

🚀 Quick Start (MCP Configuration)

Prerequisites: Python 3.10+, Git, and uv (for uvx).

Add godot-sprite-mcp to your AI coding client (mcp.json in Cursor, Claude Code, Windsurf, Cline, Claude Desktop, etc.):

Option 1: Run directly from GitHub via uvx

{
  "mcpServers": {
    "godot-sprite": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/huha007/godot-sprite-mcp",
        "godot-sprite-mcp"
      ]
    }
  }
}

Option 2: Run from a local clone / Conda environment

git clone https://github.com/huha007/godot-sprite-mcp.git
cd godot-sprite-mcp
pip install -e .
{
  "mcpServers": {
    "godot-sprite": {
      "command": "godot-sprite-mcp"
    }
  }
}

(On Windows with a virtual/Conda environment not on global PATH, set "command" to the full path of python.exe and "args": ["-m", "godot_sprite_mcp"].)


💬 Example Prompts for Your AI Agent

Once configured, ask your AI assistant in natural language:

  • "Inspect res://assets/knight_sheet.png in project D:/my_game, create res://resources/knight_frames.tres with idle, run, and attack animations, and call build_character_scene to generate res://Knight.tscn."

  • "Analyze res://assets/slime.png and build a Slime.tscn with a feet-aligned body CollisionShape2D."


🛠️ CLI Usage (Standalone)

# 1. Inspect spritesheet layout (grid or islands)
godot-sprite-mcp inspect assets/knight_sheet.png --mode auto

# 2. Build Godot 4 SpriteFrames (.tres)
godot-sprite-mcp build \
  --project-root . \
  --image assets/knight_sheet.png \
  --animations @animations.json \
  --output res://resources/knight_frames.tres

# 3. Compute feet-aligned torso collider (RectangleShape2D / CapsuleShape2D)
godot-sprite-mcp body-collision assets/knight_sheet.png \
  --frames @idle_frames.json \
  --shape rectangle \
  --thickness-ratio 0.30

# 4. Extract contour polygon for static props
godot-sprite-mcp collision assets/rock.png --epsilon 2.0

⚠️ Scope & Limitations

  • PNG Alpha Channel Required: Frame detection and contour/collider extraction rely on transparent backgrounds (alpha <= alpha_threshold). Solid-color opaque backgrounds must be made transparent first.

  • Grid vs. Islands Mode: mode="grid" expects fully transparent horizontal/vertical gutters and uniform cell sizes; mode="auto" automatically falls back to 8-connected component islands when cells vary in size.

  • Movement Collider vs. Combat Hitboxes: build_body_collider produces a single stable physics collider for character movement (CharacterBody2D), rather than per-frame animated melee attack hitboxes (Area2D).

🧪 Running Tests

pip install -e ".[dev]"
pytest -v

📄 License

MIT

Available Tools

5 tools
build_body_colliderA

Build a stable single-shape body collider for a moving character.

This is the recommended collision tool for player/enemy movement. It consumes all frames of one animation, overlays their alpha masks, measures the full character height and a thickness-filtered body width, and returns a feet-aligned RectangleShape2D (default) or CapsuleShape2D. The older extract_collision_polygon tool remains available for static objects.

Args: image_path: Path or res:// URI to the spritesheet image. frames: Every frame region of the selected animation, for example [{"x": 0, "y": 264, "w": 66, "h": 66}, ...]. All frames must have the same width and height. shape: "rectangle" (default) or "capsule". Wide bodies such as slimes use a rotated capsule automatically when capsule is chosen. alpha_threshold: Pixels with alpha strictly greater than this are opaque. Defaults to 10. thickness_ratio: A column must have at least this fraction of the character height to count as core body. Defaults to 0.30, which filters thin weapons and arms. project_root: Optional Godot project root directory for resolving res:// URIs.

Returns: A JSON-compatible dictionary containing height/top/bottom, filtered body width and raw width, sprite_offset for the AnimatedSprite2D, collision_position (feet at origin), shape parameters, and ready-to-paste sub-resource and CollisionShape2D snippets.

NameRequiredDescriptionDefault
shapeNorectangle
framesYes
image_pathYes
project_rootNo
alpha_thresholdNo
thickness_ratioNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the algorithm (overlays alpha masks across all frames, measures full height plus thickness-filtered width), the output alignment ('feet-aligned', 'feet at origin'), and an automatic behavior (wide bodies like slimes get a rotated capsule). It stops short of failure modes beyond the frame-size constraint, so a 4 rather than 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-sentence purpose, then cleanly split into Args and Returns. The Returns block restates shape parameters and snippets that partly duplicate the existing output schema, which is the only wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter geometry tool with no annotations, the description supplies algorithm, defaults, constraints, per-parameter meaning, and output shape. An output schema exists, so the Returns listing is mild redundancy rather than a gap — nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must do all the work — and it does, defining all six parameters: a concrete frames example, the two valid shape values (absent from the schema, which has no enum), the 'strictly greater than' alpha semantics, thickness_ratio's meaning and default of 0.30 with the rationale (filters thin weapons/arms), and project_root's role for res:// URIs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and artifact ('Build a stable single-shape body collider for a moving character') and explicitly positions itself against the sibling extract_collision_polygon by naming which case each serves (moving characters vs static objects). An agent can select between them without reading either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States 'This is the recommended collision tool for player/enemy movement' and routes static objects to extract_collision_polygon, giving an explicit use/use-instead pair. The constraint that all frames must share width and height is also stated up front.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

build_character_sceneA

Write a complete Godot 4 .tscn character scene with AnimatedSprite2D and feet-aligned body collider.

Args: project_root: Path to the Godot project directory containing project.godot. image_path: Path or res:// URI to the spritesheet PNG. sprite_frames_tres: Path or res:// URI to the generated SpriteFrames .tres resource. output_tscn: Destination .tscn file path or res:// URI. collider_frames: Frame regions (typically the idle animation row) used to compute the body collider. root_name: Root node name in the scene (default: "Character"). root_type: Root node Godot class (default: "CharacterBody2D"). default_animation: Default animation name for the AnimatedSprite2D (default: "idle"). shape: "rectangle" (default) or "capsule". alpha_threshold: Opaque alpha cutoff 0..255 (default: 10). thickness_ratio: Minimum vertical column thickness ratio (default: 0.30).

Returns: Metadata including the written output_tscn path, sprite_frames_res URI, and collider details.

NameRequiredDescriptionDefault
shapeNorectangle
root_nameNoCharacter
root_typeNoCharacterBody2D
image_pathYes
output_tscnYes
project_rootYes
alpha_thresholdNo
collider_framesYes
thickness_ratioNo
default_animationNoidle
sprite_frames_tresYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden for a write operation. It does disclose that it writes a file to output_tscn and returns metadata including the collider details, which is useful. However, it never says whether an existing .tscn is overwritten, what happens if project_root lacks project.godot, or whether validation failures abort the write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose followed by a clean Args block ordered consistently with the schema. Content is dense and mostly earns its place for an 11-parameter tool. The Returns section is largely redundant with the existing output schema and could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a rich output schema available, the description needn't explain return values, and it covers all 11 parameters including defaults. What remains missing for a file-writing scene builder is overwrite semantics and pipeline ordering relative to the sibling tools, but the core invocation details are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% across 11 parameters, so the description must compensate, and it largely does: every parameter gets a sentence, defaults are restated, and alpha_threshold gains a 0..255 range and thickness_ratio an explicit meaning. The notable gap is collider_frames, described only as 'frame regions' with no indication of the object fields inside that array of objects.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and artifact: writes a complete Godot 4 .tscn character scene containing an AnimatedSprite2D and a feet-aligned body collider. That distinguishes it from build_sprite_frames and build_body_collider, which produce the inputs rather than the assembled scene. It stops short of naming those siblings as prerequisites, so the boundary is inferable rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the parameters reference a 'generated SpriteFrames .tres' and collider frames, hinting that build_sprite_frames and extract_collision_polygon/build_body_collider run first, but no ordering, preconditions, or alternatives are stated. Nothing says when not to use this tool or whether it should be run once per character.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

build_sprite_framesA

Create a Godot 4.x SpriteFrames .tres resource from atlas regions.

This writes a format=3 Godot 4 resource. The image must live inside project_root because Godot needs a res:// URI. Each animation becomes an entry in the SpriteFrames animations array, and each frame becomes an AtlasTexture sub-resource referencing the image.

Args: project_root: Absolute path to the Godot project directory (the folder containing project.godot). image_path: Path to the spritesheet. It may be absolute, relative to the project root, or already written as res://.... It must be inside project_root. animations: List of animation dictionaries. Example: [{"name": "idle", "fps": 10.0, "loop": True, "frames": [ {"x": 0, "y": 0, "w": 32, "h": 32}, {"x": 32, "y": 0, "w": 32, "h": 32}]}]. Every animation requires a unique name and a frames list. fps defaults to 10.0 and loop defaults to true. An optional per-frame duration defaults to 1.0; playback timing is normally controlled by the animation speed. output_tres: Destination .tres path. An absolute path or res:// URI is recommended; a relative path is resolved against project_root. Parent directories are created automatically.

Returns: Metadata including the absolute output_tres path, the Godot texture_path URI, load_steps, animation_count and frame_count.

NameRequiredDescriptionDefault
animationsYes
image_pathYes
output_tresYes
project_rootYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that the output is a format=3 Godot 4 resource, that the image must be inside project_root because Godot requires a res:// URI, that each animation becomes an animations entry and each frame an AtlasTexture sub-resource, and that parent directories are created automatically. It stops short of stating overwrite behavior if the .tres already exists and says nothing about permissions or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Structure is front-loaded with a one-line summary followed by Args/Returns sections, which makes it scannable. It is somewhat long and the Returns block partly duplicates the output schema, but nearly every sentence carries real information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter write tool with no annotations, the description covers purpose, all parameter semantics, path scoping, sub-resource structure, and directory creation. An output schema exists so return values needn't be explained, yet they are — a minor redundancy. The one real gap is what happens when output_tres already exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate entirely, and it does — all four parameters are documented, including a concrete JSON example for the nested animations structure and the defaults for fps (10.0), loop (true), and per-frame duration (1.0). The path-resolution rules for image_path and output_tres (absolute, relative-to-project, or res://) are spelled out rather than left to inference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a precise verb+resource+target format: 'Create a Godot 4.x SpriteFrames .tres resource from atlas regions.' This is unambiguous and clearly distinct in domain from the sibling tools (inspect_spritesheet, extract_collision_polygon, build_body_collider, build_character_scene), though the description never explicitly names or contrasts with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by the constraints ('The image must live inside project_root', path forms accepted for image_path and output_tres) rather than stated as when-to-use guidance. There is no explicit statement of when to pick this over inspect_spritesheet or build_character_scene, and no exclusions or prerequisites beyond the path-scoping rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_collision_polygonA

Extract a simplified outer collision polygon from opaque pixels.

This optional tool is intended for static objects and irregular scenery. For moving characters and monsters, use build_body_collider instead to get a stable feet-aligned RectangleShape2D or CapsuleShape2D.

The largest external alpha contour is traced and simplified with the Ramer-Douglas-Peucker algorithm. The result is a simple clockwise polygon with at most 24 vertices, suitable for a CollisionPolygon2D.

Args: image_path: Absolute path, relative path, or res:// URI to a PNG. region: Optional sub-region {"x": int, "y": int, "w": int, "h": int} in image pixels. When omitted, the whole image is used. Returned coordinates are relative to this region's top-left corner. epsilon: RDP simplification tolerance in pixels. Defaults to 2.0. Larger values produce fewer vertices. If necessary the tolerance is increased internally to keep the polygon at or below 24 vertices. centered: When true (the default, matching Godot 4 Sprite2D), every point is shifted so the coordinate origin is the image/region centre. For a region of size w x h the conversion is x - w / 2 and y - h / 2. Set to false to keep pixel-space coordinates with a top-left origin. project_root: Optional Godot project root directory for resolving res:// URIs.

Returns: A dictionary with points (list of [x, y]), vertex_count, packed_vector2_array (Godot text such as PackedVector2Array(0.0, -16.0, ...)) and tscn_snippet (a CollisionPolygon2D node block ready to paste into a .tscn file).

NameRequiredDescriptionDefault
regionNo
epsilonNo
centeredNo
image_pathYes
project_rootNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the tracing algorithm (RDP), the clockwise winding, the hard 24-vertex cap and the internal tolerance escalation needed to enforce it. It does not say what happens on failure paths (missing file, no opaque pixels/alpha channel), which is the main remaining gap for a file-reading tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the sibling alternative are front-loaded in the first three lines, then Args/Returns sections follow a predictable structure. It is on the long side, but every sentence adds either routing guidance or coordinate semantics; only the Returns block partially duplicates the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter computation tool with an output schema, the definition covers inputs, coordinate conventions, algorithmic limits and output shape. Missing only error/edge-case behavior (empty alpha, invalid path) and any note on cost for large images, which keeps it just short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it documents all five parameters in detail: path forms accepted for image_path, the region dictionary shape and that returned coordinates are region-relative, epsilon as RDP tolerance with larger-means-fewer behavior, the centered offset math (x - w/2, y - h/2), and project_root's role for res:// resolution. This is meaning well beyond anything the schema conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Extract a simplified outer collision polygon from opaque pixels') and immediately scopes it to static objects and irregular scenery. It also names the sibling build_body_collider and the condition that selects it, so the tool is distinguishable from alternatives without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use this tool ('static objects and irregular scenery') and when not to ('moving characters and monsters'), pointing to build_body_collider as the alternative with the reason (stable feet-aligned RectangleShape2D or CapsuleShape2D). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_spritesheetA

Inspect a PNG spritesheet and return frame rectangles.

Use this tool before building animations when you need to discover the frame layout of a spritesheet. The alpha channel is analysed; pixels with alpha strictly greater than alpha_threshold count as opaque.

Args: image_path: Absolute path, relative path, or res://... URI to the source PNG. alpha_threshold: Opaque-pixel cutoff in the inclusive range 0..255. Defaults to 10, so nearly transparent antialiasing is ignored. mode: Detection strategy: "grid" finds fully transparent horizontal/vertical separator lines, "islands" finds 8-connected opaque islands and their tight bounding boxes, and "auto" tries "grid" first and falls back to "islands" when cell sizes are not uniform. project_root: Optional Godot project root directory used to resolve res:// URIs or relative paths.

Returns: A JSON-compatible dictionary with image_width, image_height, the detected mode, frame_count, and frames. Every frame is {"id": int, "x": int, "y": int, "w": int, "h": int, "pivot_bottom_center": [float, float]}. Frames are ordered top to bottom (row-clustered), then left to right.

NameRequiredDescriptionDefault
modeNoauto
image_pathYes
project_rootNo
alpha_thresholdNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It describes the analysis method (alpha channel, threshold semantics, mode fallback), which is helpful, but does not explicitly state that the tool is read-only or non-destructive. An agent might infer safety from 'Inspect', but it is not confirmed, which is a notable gap without annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a summary, usage note, Args, and Returns sections, and is front-loaded with the core purpose. It is efficient, though the Returns section redundantly re-describes the output schema, adding some unnecessary length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a 4-parameter tool with an output schema, the description covers parameter semantics, usage context, and return structure thoroughly. It lacks only an explicit safety/read-only statement, which is minor given the inspection nature and the presence of the output schema for return details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates fully by explaining all four parameters: image_path (accepted path forms), alpha_threshold (range, default, effect), mode (values and fallback behavior), and project_root (purpose for resolving URIs). Each parameter gains meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (inspect) and resource (PNG spritesheet) with the output (frame rectangles). It distinguishes itself from animation-building siblings by saying 'Use this tool before building animations,' but does not explicitly name the alternative tool, so an agent must infer the distinction from context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear context for use: 'before building animations when you need to discover the frame layout of a spritesheet.' It does not explicitly state when not to use this tool or name the sibling it should be used instead of, leaving some inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 5 tool updatesv0.1.0
    • First observedbuild_body_collider
    • First observedbuild_character_scene
    • First observedbuild_sprite_frames
    • First observedextract_collision_polygon
    • First observedinspect_spritesheet

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation4/5

Each tool targets a distinct stage of the pipeline (inspection, frame resource, collider, scene assembly), and the descriptions explicitly resolve the one real overlap by steering static objects to extract_collision_polygon and moving characters to build_body_collider. The only residual ambiguity is that build_character_scene composites the work of build_sprite_frames and build_body_collider, so an agent could pick the composite when it wanted just a sub-artifact.

Naming Consistency5/5

All five names are snake_case verb_noun pairs (inspect_spritesheet, extract_collision_polygon, build_sprite_frames, build_body_collider, build_character_scene). The verb choice is semantically meaningful: 'inspect' for the read-only analysis tool, 'build' for the generators.

Tool Count5/5

Five tools map cleanly onto a linear asset pipeline with no filler or redundancy. Every tool has an identifiable role and there is no thin one-tool surface nor a bloated menu.

Completeness4/5

The core workflow (discover frames -> SpriteFrames resource -> collider -> full character scene) is fully covered end to end. Minor gaps exist: no tool to read/validate or amend an existing .tres/.tscn, no TileSet or non-character sprite output, and no way to re-inspect previously generated assets.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers