mcpField
C
CodeCraft

CodeCraft

远程服务
codecraft-ashy-seven.vercel.app开发工具08 周前更新

关于 CodeCraft

CodeCraft 是面向 Minecraft Bedrock 内容创作者的只读验证与数据查询 MCP 服务,不生成内容。它结合版本索引、官方 Schema 和 tsc 检查文件及脚本,并明确指出验证无法覆盖的范围。

主要功能

  1. 01检查功能可行性与版本信息
  2. 02查询 Schema 和标识符
  3. 03验证 JSON 与命令
  4. 04用 tsc 诊断脚本
  5. 05审查内容包文件与引用

适用场景

  1. 01生成前确认 Bedrock 功能是否可用
  2. 02核对版本号、字段与标识符
  3. 03检查 JSON、命令及脚本错误
  4. 04交付前审查内容包

MCP 相关

通过无状态 Streamable HTTP MCP 端点提供 9 个只读工具,供客户端查询数据并验证 Minecraft Bedrock 内容;无需身份验证。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://codecraft-ashy-seven.vercel.app/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

9
参数类型必填说明
requeststring是用用户自己的措辞描述请求。接受任何语言。

详细介绍

CodeCraft

面向 Minecraft Bedrock 的验证与数据查询 MCP 服务。

模型由你提供。CodeCraft 不会生成任何内容——它会衡量生成的内容是否真的能正常运行。

data license MCP Bedrock

使用网站 · 配置、工具参考,以及验证的边界


为什么要做它

在 Bedrock 中,稍微记错字段名,就会生成无法正常运行的内容,而且不会有任何提示。 没有错误消息,也没有红色波浪线。直到将包加载进游戏,一切看起来都正常。

一个真实示例——两行都通过了架构验证,其中一行却永远无法加载:

  "modules": [
-   { "type": "javascript", "entry": "scripts/main.js" }
+   { "type": "script", "language": "javascript", "entry": "scripts/main.js" }
  ]

使用第一行时,包根本不会出现在行为包列表中。 甚至连错误都不会报。javascript 类型是 1.16 之前遗留下来的内容;为了向后兼容,架构仍然保留了它,但它无法与 @minecraft/server 2.x 一起加载。架构说“类型有效”,游戏却说“无法加载此类型”。

这行内容已在真实游戏中验证(30-08-2026)。还有七类类似情况,均列于 docs/VALIDATION-LIMITS.md,并附有 ContentLog 证据。

CodeCraft 填补了这一空白:**所有值都来自固定版本的数据,**输出则会根据官方架构和真实的 tsc 进行验证。

九种工具

九种工具全部为只读。服务不会写入任何内容,不会向任何地方发送数据,也不会保留用户数据。

工具返回内容使用时机
check_feasibilityBedrock 是否能实现该功能;如果不能,原因是什么,以及有哪些替代方案生成任何内容之前
get_version_info版本号应写在哪里、使用哪些模块、哪些 format_version 有效编写文件之前
get_schema必填字段,以及该节点的字段列表编写文件之前
lookup_id标识符是否存在、属于什么类型、有哪些方块状态查询每个凭记忆写出的标识符
validate_json携带 JSON 指针的架构错误验证生成的每个 JSON 文件
validate_command命令、参数数量、选择器、方块状态提交命令之前
validate_script真实 tsc 诊断信息,包含行、列和 TS 代码验证每次 API 调用
validate_python语法、嵌入的命令,以及 /connect 信封验证游戏外自动化脚本
review_pack每个文件,以及架构在结构上无法检查的内容提交任何内容之前的最后一步

排列顺序不是按字母排序,而是按使用顺序排列,且 tools/list 会保留此顺序。

配置

端点https://codecraft-ashy-seven.vercel.app/mcp
使用网站codecraft-ashy-seven.vercel.app — 共四个页面:主页、配置、工具、限制
传输方式无状态 Streamable HTTP,仅支持 POST
身份验证无——端点为只读,不会返回任何私密内容

在 Claude 中,打开自定义 → 连接器(*不要选“设置”;较早的指南会指向那里,而且该界面没有自定义连接器选项):

  1. 自定义 → 连接器 → 添加自定义连接器
  2. 粘贴端点地址
  3. 保存

连接后,你应该能看到以下三项——只看到一条“已连接”提示还不够:

  • 工具数量为 9,且完整无缺
  • 客户端将它们归类为**“只读工具”**——这是单独的权限类别
  • 能看到我们自己的标题,例如 “Can Bedrock do this”——工具界面使用英文

更多信息:docs/MCP.md

验证的边界

这张表不是宣传,而是在说明限制。“通过验证”和“在游戏中可用”并不是一回事——有八类错误能通过验证,却会在游戏中导致问题,而且每一类错误都在实际游戏中测量过。

类别架构是否能发现CodeCraft 的处理方式
A · 身份引用不能,但可以解析checkIdentities 会找到它
A′ · 路径 / 声音引用不能checkReferences、checkSounds — 警告;游戏本身不会给出任何提示
B · 文件名 ↔ 标识符从结构上无法发现checkFileNames 会告诉你正确的名称
C · 纹理 / 资源引用不能checkAssets 会根据原版图集进行检查
D · 有效但并非预期从结构上无法发现checkPatterns 会衡量已知模式
E · 永远不会加载的清单不能 — 过时的类型仍在列表中checkManifest 会指出正确的类型
F · Molang不能 — 没有任何东西会检查字符串内部checkMolang;unknown-query 是错误,已在游戏中测量
G · 组件名称不能 — 两种架构来源都允许它通过checkComponents,仍是警告(见下文)
H · 依赖版本的必填字段从结构上无法发现 — 必填要求取决于 format_versioncheckRecipes — 错误,配方永远不会加载

F 和 G 值得再读一遍。 游戏对二者的拒绝方式完全一样 — 整个方块定义都会被丢弃。F 被提升为错误,而 G 没有,因为我们自己的组件 索引存在已测得的 126 个名称的缺口。严重程度不仅取决于“游戏会怎么做”,还取决于“我们的 列表有多完整” — 这是两个独立的问题,不进行测量就无法回答其中任何一个。

这些工具只负责查找和报告,不会写入 — 该端点为只读,修复工作由调用方负责。尚未解决的部分也记录在这里: docs/VALIDATION-LIMITS.md

Bedrock 有五种独立的版本号

混淆在这里造成的影响最大,这也是该工具存在的部分原因:

版本号示例使用位置
市场宣传版本号26.40仅用于公告。绝不会写入任何文件
游戏 / 数据版本1.26.40.5data/ 文件夹名称、数据索引
min_engine_version[1, 26, 40]manifest.json — 一个三段式数组
@minecraft/server 模块版本2.9.0manifest.json → dependencies
format_version1.21.100、1.13.0、2内容文件

**format_version 是独立的维度,与游戏版本无关:**它是该文件类型的架构版本。方块为 1.21.100,功能规则为 1.13.0,生成规则为 1.8.0,清单为 2。游戏版本变化时,它不会改变。

模块版本本身也是个陷阱 — 游戏版本会嵌入在预发布标签中:

2.9.0                              stable module version (npm "latest")
2.11.0-beta.1.26.50-preview.27     module 2.11.0, game 1.26.50-preview.27

正确的值不是靠回忆,而是从架构中读取 — 这正是 get_schema 和 get_version_info 的用途。

架构

flowchart LR
    C["Claude<br/>you bring the model"] -->|MCP / HTTP| M["packages/mcp<br/>9 read-only tools"]
    M --> V["packages/validator<br/>ajv · tsc · commands · python"]
    V --> K["packages/knowledge<br/>lookup · version resolution"]
    K --> D[("data/<br/>indexes per version")]
    P["pipeline/<br/>daily cron"] -->|produces| D
    U["Mojang · Blockception<br/>npm · MicrosoftDocs"] -->|fetches| P

依赖关系只朝一个方向:mcp → validator → knowledge → data。没有任何反向导入。

无需构建步骤。 Node 会直接运行 .ts 文件;tsc 仅用于类型检查,以及作为子进程供 validate_script 使用。

数据

data/ 不是数据库,而是一组存放在 git 中并在其中进行版本管理的索引。八个采集器从四个上游来源生成这些索引。

来源提供内容许可证
Mojang/bedrock-samples方块/物品/实体标识符、命令语法、纹理图集Minecraft EULA — 仅衍生事实
Blockception/…json-schemas验证所依据的架构BSD-3-Clause
npm @minecraft/*脚本类型定义MIT
MicrosoftDocs/minecraft-creator发行说明CC-BY-4.0

GitHub Action 会按计划刷新这些数据,数据新鲜度检查会在数据过期时发出报告。Cron 设定为 UTC 05:00——但它不会在那时运行。 2026-03-09 测量的全部五次计划运行都延迟启动,最短延迟 4 小时 24 分钟,平均约 5 小时;GitHub 会将计划任务排入队列,并在负载较高时延迟运行。因此,索引可能最多过期 1 天 + 约 5 小时。

上游原始数据绝不会进入仓库。 索引中只包含衍生事实:某个标识符是否存在、字段名称、版本号。推理和测量记录见:docs/SOURCES.md

不变条件

  1. 验证层绝不会调用大模型。 本仓库中的任何软件包都不依赖大模型 SDK。这条规则不只是一句话,而是一项测量:packages/mcp/test/no-llm.test.ts
  2. 端点为只读。 九个工具都带有 readOnlyHint
  3. data/ 存放在 git 中。 没有数据库
  4. 免费层是必需条件,而非限制
  5. 上游原始数据绝不会进入仓库

如何记录测量结果

在本仓库中,“它能用”和“它经过测量”是两回事。 只有经过测量后才会写下声明,并在其旁注明测量方式和日期。后来证明有误的测量不会删除;它会被删除线标记,并记录其后续情况。

这就是代码中“已测量(日期)”注释的含义:每一条都记录了一次确实发生过的问题。

文档

以下文档使用土耳其语编写,是开发者的工作笔记。产品面向用户的内容使用英语:工具、服务说明、所有发现和错误消息,以及网站。

CLAUDE.md架构、不变条件、版本维度
docs/MCP.md端点、设置、工具约定
docs/mcp-kullanim.md工具的实际使用情况、测量记录
docs/site-icerik.md使用网站的内容和测量记录
docs/SOURCES.md数据来源及其许可证
docs/VALIDATION-LIMITS.md验证无法捕获的问题
docs/COMMANDS.md命令验证及其范围
docs/WEBSOCKET.mdWebSocket 桥接及其测量结果

许可证

代码采用 Apache-2.0 许可证。本仓库包含采用三种不同许可证的第三方内容,并生成基于第四种许可证内容衍生的数据——THIRD-PARTY-NOTICES.md 说明了各自的许可证。


非 Minecraft 官方产品。 未经 Mojang 或 Microsoft 批准,也与其无关。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。