01 — WHAT IT IS

An MCP server that checks whether Bedrock content will actually load.

You bring the model. It runs in your own Claude client, on your own subscription. CodeCraft never sits in between and never generates content.

The one thing it does: measure whether the thing that was generated is going to work.

9
read-only tools
60
document types
5
version numbers
0
stored requests
WHAT THE MODEL WROTE
{
  "format_version": "1.26.40",
  "minecraft:spawn_rules": {
    "description": { "identifier": "ex:guardian" }
  }
}
Loads in the game with no error and no entity.
VALIDATE
WHAT CODECRAFT RETURNS
"ok": false
"pointer": "/format_version"
"rule": "enum"
"allowed": ["1.8.0", "1.10.0", "1.12.0"]
"version": "1.26.40.5"
Pointer, rule, and the values the schema accepts.
02 — THE PROBLEM

Bedrock fails silently.

A general model invents a format_version, references a minecraft: identifier that does not exist, calls an API that is not in @minecraft/server — and none of it raises an error until the pack is loaded in the game.

"format_version": "1.26.40"
The schema rejected it: a spawn rule accepts only 1.8.0, 1.10.0 or 1.12.0.
feature rule filename ≠ identifier
The game rejected it: “Feature rule identifier ‘ruby_ore_feature’ does not match filename ‘ruby_ore’”.
recipe with no unlock field
The game never loaded the recipe: “1.20+ Recipes require unlock data”.
query.is_babyy
The entire block definition was dropped. The block never registered in the game.
03 — HOW IT WORKS
1
You add the MCP endpoint to your own Claude client.
2
While working on a Bedrock task, the model calls the tools by itself: which field is required, which identifier exists, is this line valid.
3
The generated files are validated against the official schema, the command grammar, and real tsc.
Values are read from version-pinned data, not recalled.
What it guarantees

The validator catches things the game will reject. It does not say your content will behave the way you wanted.

Read the limits →
Quick setup
  • Endpoint: https://codecraft-ashy-seven.vercel.app/mcp
  • In Claude: Customize > Connectors (not Settings) → custom connector → paste the address
  • Once connected, 9 tools should appear — all nine read-only
Full setup →
04 — NINE TOOLS, ALL READ-ONLY

The server writes nothing, anywhere.

check_feasibility
Can Bedrock do this at all; if not, why, and what the alternative is
get_version_info
Which version number goes where
get_schema
Which fields this document type requires, and which format_version is valid
lookup_id
Does this minecraft: identifier exist in this version, what type is it, what block states does it have
validate_json
Does this file match the official schema
validate_command
Is this command line valid, does it require cheats
validate_script
Does the script compile with real tsc and real @minecraft/server types
validate_python
Is this out-of-game automation script and the commands inside it valid
review_pack
The whole pack: the right validator per file, plus the checks a schema structurally cannot see
Tool reference →
05 — PRIVACY
  • No authentication, no accounts, no sessions.
  • No user data is stored. The server is stateless; every request is discarded.
  • All nine tools are read-only. The server sends data nowhere.
  • The validation layer connects to no LLM — that is not a promise, it is a test.
  • Source is open, Apache-2.0.