MCP Server for Minecraft datapack development with wiki, Spyglass, Misode, and Mojira integrations
MineCode MCP demonstrates strong tool design with excellent naming conventions, comprehensive descriptions, and well-structured schemas. All 23 tools follow verb_noun patterns (get_*, check_*, list_*, etc.) and include substantial descriptions (average ~180 chars, within baseline p10=34, p90=392). Input schemas are consistently defined with typed properties. However, output schemas are not documented in the provided source, critical for LLM planning. Tool descriptions are narrative-focused and well-contextualized for agent decision-making (e.g., minecraft_start_session explicitly tells agents to call it first). No security-sensitive parameters exposed. Error handling appears limited in visible code. Per-tool scoring averages 72 across the 23 tools.
Check a datapack's FOLDER LAYOUT against its target version. In 1.21 every datapack directory was renamed to singular (advancements/ became advancement/, recipes/ became recipe/, and so on). A pack using the old plural folders loads with NO ERROR and NO CONTENT -- it simply does nothing, which makes this hard to diagnose from logs. Run this whenever a datapack 'does nothing' on 1.21+.
Scan a command, JSON document, or NBT snippet for syntax that is wrong for a target Minecraft version, and get the correct replacement. RUN THIS ON EVERYTHING YOU WRITE before saving it. Fast and offline. Note it is a pre-filter over a curated table, not a parser -- a clean result means no KNOWN trap matched, not that the content is valid. Use validate_command for real command checking.
Delete the entire disk cache. Use to free disk space or reset cached data.
Read pack.mcmeta and return the target Minecraft version, pack format, supported format range, and pack type. Every version-taking tool needs a version, and this is where it comes from -- call this rather than assuming the latest release, since most existing packs target something older.
Get cache size and entry count. Use to monitor the disk cache used by scrapers.
Output schemas not documented. While input schemas are well-defined, the provided source does not show what fields or structures each tool returns. LLMs need documented return types to plan downstream tool calls and extract relevant data from results.
Error handling guidance not visible. The source shows tool definitions but not error response handling. Tools should return actionable error messages that tell LLMs what to do next (e.g., 'Version not found. Call list_technical_change_versions() to see available versions') rather than generic failures.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | C | 65 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 55 | - | v1 |
Get READABLE, VERSION-EXACT syntax for a Minecraft command, compiled from the game's own Brigadier grammar -- e.g. '/give <targets> <item> [<count>]' plus what each argument accepts. USE THIS INSTEAD OF REC[OLLECTION].
THE FIX FOR OUTDATED SYNTAX KNOWLEDGE. Returns every technical change to the datapack and resource pack format between two Minecraft versions -- renamed fields, moved registries, changed JSON schemas, format migrations such as item NBT becoming components (1.20.5), datapack folders becoming singular (1.21), and text components becoming strictly typed (1.21.5). CALL THIS BEFORE writing item components, text components, loot tables, predicates, recipes, or advancements -- and any time your recollection of Minecraft syntax might predate the target version. Combines a curated table of the traps agents fall into most with the full community-maintained changelog.
List the available Misode generators and their versions. Use to discover what misode_get_preset_data can provide.
List the available presets (file generators with JSON schemas) for a Minecraft version. Use to discover what spyglass_get_preset_data can provide.
List the available registries for a Minecraft version. Use to discover what spyglass_get_registries can provide.
List the Minecraft versions with available technical changelogs. Use to check coverage before relying on get_technical_changes for an unusual or very old version.
Search Minecraft launcher logs and crash reports. Use to diagnose pack loading errors.
CALL THIS FIRST, before reading or writing any Minecraft datapack, resource pack, or mcfunction file. Detects the project's target Minecraft version from pack.mcmeta and returns that version, the breaking changes that apply to it, and the workflow to follow. Minecraft's syntax changed substantially in recent versions (items moved from NBT to components, datapack folders were renamed, text components became strictly typed). Your training data predates some of this. Skipping this step is the single most common cause of confidently-written, version-wrong output.
Fetch the full text of a minecraft.wiki article by title. LATEST VERSION ONLY -- minecraft.wiki keeps no per-version history. Use for CONCEPTS and mechanics. Do NOT use for syntax, JSON schemas, NBT structure, or IDs unless your target IS the current release; for those use get_command_usage, spyglass_get_registries, or misode_get_preset_data.
Search minecraft.wiki (the official community wiki) by keyword. LATEST VERSION ONLY -- minecraft.wiki keeps no per-version history. Use for CONCEPTS and mechanics. Do NOT use for syntax, JSON schemas, NBT structure, or IDs unless your target IS the current release; for those use get_command_usage, spyglass_get_registries, or misode_get_preset_data.
Read the Misode generator JSON schemas for a Minecraft version. misode.github.io has extensive community tools and file generators (player heads, custom models, worldgen, etc.) with JSON schemas and interactive builders. This tool returns the schema only -- not the interactive UI.
Fetch details of a Mojira (Minecraft bug tracker) issue by key. Use for bug reports, feature requests, and known issues.
Search the Minecraft bug tracker (Mojira) for issues. Use for bug reports, feature requests, and known issues.
Map a pack_format number to the Minecraft versions using it. Use when you have a pack.mcmeta but need the version name it corresponds to. Data pack and resource pack formats are numbered separately -- pass the right `kind` or you will get the wrong version.
Read the Spyglass preset (file generator) JSON schemas for a Minecraft version: loot tables, predicates, item modifiers, advancements, recipes, tags. USE INSTEAD OF minecraft.wiki FOR SYNTAX AND JSON SHAPES on recent versions.
List a Minecraft registry for a version: items, blocks, enchantments, potion effects, etc. COMPREHENSIVE but can be long -- use search to narrow results.
Validate a command against the Brigadier grammar for a Minecraft version. SLOW BUT THOROUGH -- use for commands you are uncertain about. Fast check_version_syntax instead when possible.
Get the data and resource pack format numbers for a Minecraft version. Use when writing a new pack.mcmeta -- a wrong pack_format makes the game refuse or warn about the pack.
Discovery tools (list_spyglass_registries, list_spyglass_presets, list_misode_presets) have minimal descriptions (75-78 chars). Should explicitly state when to call them relative to their corresponding get_* tools, e.g., 'Call this first to discover available registries before calling spyglass_get_registries.'
Utility tools (get_cache_stats, clear_cache) have generic descriptions (70 chars). Should clarify when to use them: 'Call before cache-heavy operations to monitor disk usage' or 'Use if cached data becomes stale or disk space is limited.' Current descriptions lack context for agent decision-making.
Parameter descriptions in some tools could be more constraint-aware. While _VERSION_ARG includes format guidance ('1.21.4', '1.20.4', 'latest', '1.21'), the regex pattern or exact enum of valid versions is not visible. Specify exact valid version formats or provide a pattern constraint.
Topic filter in get_technical_changes uses example values ('component', 'text', 'loot', 'recipe', 'predicate', 'attribute') in the description rather than an enum. LLMs may treat these as the ONLY valid values or hallucinate unlisted topics. Add an enum constraint or a reference to list_technical_change_versions to discover available topics.
minecraft_logs_search lacks specificity about what logs it searches (game logs? server logs? LLM logs?). Description should clarify: 'Search Minecraft launcher logs and crash reports in ~/.minecraft/logs/ for error patterns related to pack loading failures.'
No visible pagination or result limits. Tools returning lists (spyglass_get_registries with optional search, minecraftwiki_search, mojira_search) should document limits and support pagination (page/offset/limit). For example, spyglass_get_registries with 'diamond' could return a long list; the description should state if results are capped at 20 items and how to paginate.
Tool composition and chaining: minecraft_start_session should return not just version but also pack root path and breaking changes summary. If an LLM calls it and then needs to call get_technical_changes, the response should include the detected version and pack location to avoid a second lookup call.