Hearth MCP server: structured engine operations for coding agents (Claude Code, Codex, any MCP client)
Hearth MCP server has 24 well-named tools with consistent verb_noun patterns (get_, list_, create_, delete_, inspect_, set_, move_). All tools have descriptions (avg ~120 chars, within 10-1024 baseline). Input schemas are present and typed for all tools. However, parameter descriptions are minimal (often single phrases like 'Scene identifier'), lacking actionable context about formats, constraints, or dependencies. Output schemas are not documented, LLMs cannot predict response structure. Error handling is absent from visible code. Risk annotations (READ_ONLY, WRITE, DESTRUCTIVE) are present but not formalized as tool annotations in the MCP protocol. No pagination support visible despite tools like list_assets and list_scripts that could return large result sets.
Create an entity in a scene. Always gets a Transform. Pass components to add more, e.g. {"SpriteRenderer": {"color": "#ff0000"}}. (requires safe-edit)
Create a new scene. Optionally adds a default main camera entity. (requires safe-edit)
Delete an entity (children are re-parented to the deleted entity's parent). (requires safe-edit)
Delete a scene from the project (removes the scene file). (requires safe-edit)
Duplicate an entity and its full descendant subtree (fresh ids). The root copy's position is offset from the original (default 16,16); descendants keep their relative position. (requires safe-edit)
Duplicate a scene (all entities get fresh ids). With withPlaytests, also clones every playtest targeting the source scene, retargeted to the copy. (requires safe-edit)
Output schemas not documented. LLMs cannot predict response structure (fields, types, nested objects) for any of the 24 tools. This forces agents to guess at downstream field names and risks context loss between tool calls.
Parameter descriptions are minimal (single phrases like 'Scene identifier', 'Entity identifier'). Lack actionable context: no format specs, constraints, or dependencies. E.g., 'scene' parameter appears in 15+ tools but never explains if it's a scene name, ID, or path.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Get project metadata: name, scenes, asset/script counts, input actions, build settings, code style. (requires read-only)
Machine-readable reference for the script ctx API: every method and property, with signatures and Lua + JS examples. (requires read-only)
Inspect a downloaded asset pack before import: provenance hints, images, Tiled metadata, compatibility diagnostics, and ordered visual-review inputs. (requires read-only)
Get one entity with full component data. (requires read-only)
Find a walkable grid path between two world points in a scene (A* over solid tilemaps and static colliders). Returns waypoints or found=false.
Get a scene with its entity hierarchy. Set full=true to include all component data. (requires read-only)
List all assets (id, name, type, path, metadata). (requires read-only)
List all available component types with docs and default values. Use before addComponent if unsure of properties. (requires read-only)
List all scenes with ids, names, and entity counts. (requires read-only)
List all script files, with attachment info (which entities use them). (requires read-only)
Move an entity: set position (Transform) and/or re-parent it. Position is in scene pixels. (requires safe-edit)
Read the source of a script file (project-relative path). (requires read-only)
Rename an entity. (requires safe-edit)
Rename a scene (scene file keeps its path). (requires safe-edit)
Enable or disable an entity (disabled entities are skipped by the runtime). (requires safe-edit)
Replace an entity's tags (tags support script queries and collision filtering). (requires safe-edit)
Set the project's initial scene (the one that runs first). (requires safe-edit)
Validate the whole project (schemas, references, cameras, scripts, assets, playtests). Errors block a build; warnings are advisory. (requires read-only)
No pagination support visible for list_* tools (list_scenes, list_assets, list_scripts, list_components). Large result sets will blow context windows. Missing limit, offset/cursor, and total_count fields.
Risk annotations (READ_ONLY, WRITE, DESTRUCTIVE) are present in metadata but not formalized as MCP tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot programmatically detect which tools are safe to retry or have side effects.
No error handling guidance visible. Tools like delete_scene and delete_entity are destructive but provide no recovery hints, confirmation patterns, or actionable error messages. Agents cannot self-correct on failure.