MCP server that lets AI clients build in a Minecraft Paper server through the Ashlar plugin
Critical gaps prevent higher scoring. Tool definitions exist only in test files (ToolSpecTest.java), not in executable source code. No input schemas are visible in the provided code, only tool names and descriptions are evident. Parameter definitions, output schemas, and error handling guidance are absent. The MCP server code (TypeScript) does not show explicit tool registration with JSON Schema. Tool names use 'mc_' prefix but lack verb-noun clarity (e.g., 'mc_build' vs 'build_structure'). Descriptions are present but generic (10-50 chars), below the 50-200 char baseline for LLM optimization. No evidence of parameter validation, error recovery guidance, or output schema documentation.
Execute batch fill operations to build structures
Execute a Minecraft command on the server
Inspect blocks and block entities in a region
List online players and their information
Render a 2D view of terrain or structures
Restore a previously created snapshot
Create a snapshot of a region before building
No input schemas visible in source code. Tool definitions exist only in test files; executable MCP server code does not show JSON Schema registration for any tool parameters.
Descriptions are generic and under 50 characters (e.g., 'Server status and player information'). LLM-optimized descriptions should be 50-200 chars, explaining WHAT, WHEN, and WHY to use the tool.
Tool names lack verb-noun clarity. 'mc_build', 'mc_survey', 'mc_render' are vague. Better: 'build_structure', 'survey_terrain', 'render_terrain_view'. LLMs infer intent from names before reading descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 32 | 2026-07-28+ | v2 |
Server status and player information
Survey terrain and generate heightmap visualization
No parameter descriptions visible. ToolCallHandler accepts 'name' and 'args' but no schema defines what fields 'args' should contain for each tool. LLMs cannot infer parameter meaning without explicit descriptions.
No error recovery guidance. ToolCallHandler returns 'unknown tool' errors but does not guide LLM on next steps (e.g., 'Try one of: mc_status, mc_players, ...'). Error responses must be actionable.