LAN-capable Minecraft MCP server built with Dedalus MCP and a Mineflayer bridge for autonomous bot control
Server has 20 tools with schemas and descriptions present, but quality is inconsistent. Most tools have basic descriptions (50-150 chars) and parameter schemas with types, but lack depth for LLM optimization. Critical gaps: no error handling guidance, no output schemas documented, missing parameter constraints (enums for block/item names), and descriptions lack WHEN/WHY context. mine_resource has a verbose description (300+ chars) with examples, violating best practice of avoiding example values in descriptions. Several tools (get_block_at, look_at, jump, set_sprint, set_sneak, stop_movement, dig_block, place_block, use_block, craft_items, send_chat, read_chat, attack_entity, build_structure) lack visible explicit tool registration in the provided source, only inferred from bridge/server.mjs. Overall: functional but below production baseline.
Attack an entity by name.
Build a structure from a preset template.
Craft items. Needs a placed crafting_table nearby for tools/complex recipes.
Dig one block at exact position (x, y, z). Requires x, y, z ints. Prefer mine_resource for mining tasks.
Get the block name at position (x, y, z).
Get the current bot status, inventory, health, and nearby entities.
Move to coordinates (x, y, z). Pathfinder breaks blocks and places scaffolding. range=how close (1=adjacent).
14 of 20 tools lack visible explicit registration in source code, only inferred from bridge/server.mjs. Cannot verify actual schema completeness or error handling for these tools.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. E.g., does get_bot_status return {health, food, inventory, position} or a flat list? Does mine_resource return {success, count_mined, items_collected}?
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
Inspect nearby blocks, entities, and local objectives around the bot.
Connect the bot to a Minecraft LAN world or local server.
Make the bot jump once.
Disconnect the bot from the active game session.
Turn the bot to look at block position (x, y, z).
PRIMARY mining tool — mines blocks by name (e.g. 'dirt', 'oak_log', 'cobblestone', 'iron_ore'). Auto-finds nearby blocks, auto-equips best tool from inventory, collects drops. IMPORTANT: You MUST have the right pickaxe tier in inventory or the block won't drop anything (wooden pickaxe for stone/coal, stone for iron, iron for diamond/gold/redstone). If you lack the tool, craft it FIRST with make_tools(). Do NOT use dig_block unless you need to dig at an exact coordinate.
Place a block from inventory at exact position (x, y, z). Requires block name and x, y, z ints.
Read recent chat messages from the game.
Send a chat message to the game.
Set sneak/crouch on or off.
Set sprint on or off (faster movement).
Stop current pathfinding and movement.
Use/activate a block (door, button, lever, chest, furnace) at (x, y, z).
mine_resource description contains example values ('dirt', 'oak_log', 'cobblestone', 'iron_ore') and verbose guidance (300+ chars). Per best practice, replace examples with enum constraints and move guidance to parameter descriptions. LLMs tend to reuse example values literally.
No error handling guidance. Tools like mine_resource, craft_items, and go_to_known_location can fail (missing tool tier, insufficient inventory, pathfinding timeout) but descriptions do not explain recovery steps. LLMs receive no actionable error context.
Block and item names (craft_items, place_block, mine_resource, build_structure) accept free-form strings with no enum constraints. LLMs will hallucinate invalid block names. Should declare valid Minecraft block/item names as enums or provide a discovery tool.