@adhisang/minecraft改装mcp
](https://www.npmjs.com/package/@adhisang/minecraft-modding-mcp)  ](https://nodejs.org/) 
英语 | 日本语
备注:这个项目完全是氛围编码的——使用人工智能辅助开发构建,没有正式的规范。
______________________________________________________________________
@adhisang/minecraft-modding-mcp 是一个用于人工智能辅助Minecraft建模工作流的MCP服务器,基于 模型上下文协议。当代理需要检查Minecraft源代码、解析映射、比较版本、分析mod JAR、验证Mixin、Access Widener或Access Transformer文件,或使用MCP客户端的NBT和注册表数据时,请使用它。
它在stdio上运行,可与Claude Desktop、Claude Code、VS Code、Codex CLI、Gemini CLI和其他支持MCP的客户端配合使用。
37工具 (6名参赛者+31名专家)| 7资源 | 4个命名空间映射 | SQLite支持的缓存
特性
- 资源勘探:使用行级上下文浏览、列出和搜索反编译的Minecraft源代码
- 映射感知符号工作:转换类、字段和方法名称
obfuscated,mojang,intermediary,以及yarn - 版本比较:比较Minecraft版本之间的类签名、注册表项和面向迁移的摘要
- Mod JAR分析:读取Fabric、Forge和NeoForge元数据、入口点、Mixin配置、依赖关系、源代码和重新映射预览
- 项目验证:验证Mixin源,
.accesswidener将Forge/NeoForge访问转换器文件与目标版本进行比较 - NBT、注册表、缓存和诊断:修补NBT有效负载,检查生成的注册表数据,并管理缓存/运行时状态
- MCP资源:通过基于URI的资源公开版本、类源、工件元数据和映射
快速开始
套餐用户
要求:
- Node.js 22+
- Java只需要
remap-mod-jar以及反编译或重新映射需要Vineflower或微型重映射器的流
在本地启动服务器:
npx -y @adhisang/minecraft-modding-mcp在MCP客户端配置中使用此命令。如果您的环境中阻止了自动JAR下载,请设置 MCP_VINEFLOWER_JAR_PATH 和 MCP_TINY_REMAPPER_JAR_PATH 在那里。
客户端设置
CLI客户端可以直接注册package命令。
克劳德代码:
claude mcp add minecraft-modding -- npx -y @adhisang/minecraft-modding-mcpOpenAI Codex CLI:
codex mcp add minecraft-modding -- npx -y @adhisang/minecraft-modding-mcp跑 claude mcp list 或 codex mcp list 注册后验证服务器是否可用。
stdio传输自动检测换行符和 Content-Length 框架,因此相同的服务器命令可以在Codex和标准MCP客户端之间工作。
克劳德桌面版
将以下内容添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"minecraft-modding": {
"command": "npx",
"args": ["-y", "@adhisang/minecraft-modding-mcp"]
}
}
}VS Code
添加以下内容 .vscode/mcp.json 在您的工作空间中:
{
"servers": {
"minecraft-modding": {
"command": "npx",
"args": ["-y", "@adhisang/minecraft-modding-mcp"]
}
}
}Gemini CLI
添加以下内容 ~/.gemini/settings.json:
{
"mcpServers": {
"minecraft-modding": {
"command": "npx",
"args": ["-y", "@adhisang/minecraft-modding-mcp"]
}
}
}然后运行:
/mcp list自定义环境
传递环境变量以覆盖默认值:
{
"mcpServers": {
"minecraft-modding": {
"command": "npx",
"args": ["-y", "@adhisang/minecraft-modding-mcp"],
"env": {
"MCP_CACHE_DIR": "/path/to/custom/cache",
"MCP_MAPPING_SOURCE_PRIORITY": "maven-first"
}
}
}
}从这里开始
这六个顶级工作流工具涵盖了常见路径,并返回摘要优先结果。它们是代理和MCP客户端的最佳默认起点。
六个人都回来了 result.summary 首先,可以包括 summary.nextActions 当有明确的后续步骤时。从表格中选择工具,然后使用示例和参考文档获取确切的有效载荷。
| 工具 | 从这里开始 |
|---|---|
inspect-minecraft | 版本、工件、类、文件和源代码搜索 |
analyze-symbol | 符号存在检查、映射转换、生命周期跟踪和工作区符号解析 |
compare-minecraft | 版本对差异、类差异、注册表差异和面向迁移的概述 |
analyze-mod | mod元数据、反编译/搜索流、类源和安全重映射预览/应用 |
validate-project | 工作空间摘要以及直接的Mixin、Access Widener和Access Transformer验证 |
manage-cache | 缓存清单、验证和预览/应用清理工作流 |
工作流注释
这些说明涵盖了入职期间的高频决策。有关完整的陷阱列表、确切的合约、迁移说明和环境变量,请参阅 docs/tool-reference.md.
search-class-source默认为queryMode="auto"并保留分隔符查询,例如foo.bar,foo_bar,以及foo$bar在索引路径上。使用queryMode="literal"用于显式的完整子字符串扫描。- 如果您还没有工件,请选择
subject.kind="workspace"为了inspect-minecraft而不是猜测工件细节。当工件上下文是唯一缺失的输入时,可重试suggestedCall保留请求的任务。 trace-symbol-lifecycle预期Class.method在symbol.在单独的文件中保持精确的过载匹配descriptor现场。- 对于未混淆的版本,例如
26.1+,check-symbol-exists和analyze-symbol task="exists"验证mojang当不存在映射图时,对运行时字节码进行查找,并返回mapping_unavailable当运行时JAR本身无法访问时。 analyze-mod和validate-project要求结构化subject对象和规范include组;过时的字符串主题或域包含有效载荷返回ERR_INVALID_INPUT可重试suggestedCall.validate-project task="project-summary"传播preferProjectVersion=true在发现的Mixin、Access Widener和Access Transformer检查中。如果无法从请求中解析任何版本,或gradle.properties,摘要返回恢复指导,而不是猜测。validate-mixin和validate-project保持mapping-health轻量级obfuscated和mojang验证,避免完整的Tiny映射图加载,除非intermediary或yarn请求命名空间。validate-project task="project-summary"使用轻量级伪影探测器tasks["minecraft.artifact.resolved"];它不会仅仅为了报告每个探测的状态而反编译Minecraft或重建源索引。集VALIDATE_PROJECT_TASKS_OFF=1省略添加剂tasks现场。
从版本检查Minecraft源代码
{
"tool": "inspect-minecraft",
"arguments": {
"task": "class-source",
"subject": {
"kind": "class",
"className": "net.minecraft.server.Main",
"artifact": {
"type": "resolve-target",
"target": {
"kind": "version",
"value": "1.21.10"
}
}
}
}
}绘制或检查符号
{
"tool": "analyze-symbol",
"arguments": {
"task": "map",
"subject": {
"kind": "method",
"owner": "net.minecraft.server.Main",
"name": "tickServer"
},
"version": "1.21.10",
"sourceMapping": "mojang",
"targetMapping": "intermediary",
"signatureMode": "name-only"
}
}总结一个mod JAR
{
"tool": "analyze-mod",
"arguments": {
"task": "summary",
"subject": {
"kind": "jar",
"jarPath": "/path/to/mymod-1.0.0.jar"
}
}
}验证工作区
{
"tool": "validate-project",
"arguments": {
"task": "project-summary",
"subject": {
"kind": "workspace",
"projectPath": "/workspace/modid",
"discover": ["mixins", "access-wideners", "access-transformers"]
},
"preferProjectVersion": true,
"preferProjectMapping": true
}
}工作区摘要仍然默认为发现混入和访问扩展。添加 "access-transformers" 到 subject.discover 当您希望在摘要运行中包含Access Transformer文件时。
文档
- 详细示例请求 用于可复制的有效载荷和通用工作流程
- 工具和配置参考 用于精确的输入、输出、资源行为、环境变量和迁移说明。从 哪个问题用哪个工具 当您不确定要调用哪个工具时,请使用决策表。
- 日本语README 了解日语入职概述
刀具表面
从这些顶级工作流工具开始,除非你已经知道你想要的确切的专业操作。低级工具仍然可用于狭义的后续工作和自动化。
顶级工作流工具
| 工具 | 目的 |
|---|---|
inspect-minecraft | 检查版本、工件、类、文件、源文本和工作区感知的查找流 |
analyze-symbol | 处理符号存在性检查、命名空间映射、生命周期跟踪、工作空间符号解析和API概述 |
compare-minecraft | 比较版本对、类差异、注册表差异和面向迁移的摘要 |
analyze-mod | 总结mod元数据,反编译和搜索mod代码,检查类源代码,预览或应用重映射 |
validate-project | 总结工作区并运行直接Mixin、Access Widener或Access Transformer验证 |
manage-cache | 列出、验证、预览或应用缓存清理和重建操作 |
资源勘探
用于浏览Minecraft版本、解析源代码工件以及阅读或搜索反编译源代码的工具。
| 工具 | 目的 |
|---|---|
list-versions | 从Mojang元数据和本地缓存中列出可用的Minecraft版本 |
resolve-artifact | 从版本、JAR路径或Maven坐标解析源工件 |
find-class | 在工件中查找简单或完全限定的类名 |
get-class-source | 从工件读取类源代码或根据需要解析支持工件 |
get-class-members | 从字节码中列出构造函数、字段和方法 |
search-class-source | 按符号、文本或路径搜索索引类源 |
get-artifact-file | 读取具有字节限制的完整源文件 |
list-artifact-files | 使用光标分页列出索引源文件路径 |
index-artifact | 为现有工件重建索引元数据 |
对于未混淆的版本,例如 26.1+, mapping="mojang" 直接使用运行时/反编译路径,跳过Loom源代码jar发现,而 intermediary 和 yarn 退回到 obfuscated 发出警告。
版本比较和符号跟踪
用于比较Minecraft版本之间的类和注册表更改以及跟踪符号存在随时间变化的工具。
| 工具 | 目的 |
|---|---|
trace-symbol-lifecycle | 追踪何时 Class.method 存在于Minecraft版本中 |
diff-class-signatures | 比较两个版本中的一个类并返回成员增量 |
compare-versions | 比较两个版本之间的类和注册表更改 |
映射和符号
用于在命名空间之间转换符号名称和检查符号存在的工具。
| 工具 | 目的 |
|---|---|
find-mapping | 查找类、字段或方法符号的映射候选者 |
resolve-method-mapping-exact | 解决一个具有严格所有者、名称和描述符匹配的方法映射问题 |
get-class-api-matrix | 显示跨的一个类API obfuscated, mojang, intermediary,以及 yarn |
resolve-workspace-symbol | 从Gradle工作区解析编译可见符号名称 |
check-symbol-exists | 检查命名空间中是否存在类、字段或方法 |
支持多种查找工具 compact 结果整形以缩短响应时间。看 docs/tool-reference.md 默认值和完整的每个工具字段列表。
NBT公用事业
使用类型化JSON表示对Java Edition NBT二进制数据进行解码、修补和编码的工具。
| 工具 | 目的 |
|---|---|
nbt-to-json | 将Java版NBT二进制有效载荷解码为类型化JSON |
nbt-apply-json-patch | 将RFC 6902补丁应用于键入的NBT JSON |
json-to-nbt | 将类型化JSON编码回Java版NBT二进制文件 |
Mod分析
用于从mod JAR中提取元数据、反编译mod源代码、搜索mod代码和重新映射mod名称空间的工具。
| 工具 | 目的 |
|---|---|
analyze-mod-jar | 从JAR中提取mod元数据、依赖关系、入口点、混入配置信息和打包的访问转换器路径 |
decompile-mod-jar | 分解一个mod JAR,并可选地返回一个类源 |
get-mod-class-source | 从反编译的mod缓存中读取一个类源 |
search-mod-source | 按类、方法、字段或内容搜索反编译的mod源代码 |
remap-mod-jar | 将织物或被子模型JAR重新映射到 yarn 或 mojang 姓名 |
验证
用于根据目标Minecraft版本验证Mixin源代码、Access Widener文件和Forge/NeoForge Access Transformer文件的工具。当项目路径可用时,工作区选项允许验证使用加载器/运行时上下文。
| 工具 | 目的 |
|---|---|
validate-mixin | 根据目标Minecraft版本验证Mixin源代码(返回 validationStatus: "partial" 随着 targetOutcomes 当阶段预算推迟工作时) |
validate-access-widener | 根据目标Minecraft版本验证Access Widener内容,可选地使用运行时感知的Loom工件 |
validate-access-transformer | 根据目标Minecraft版本验证Access Transformer内容,可选择使用Forge/NeoForge运行时工件 |
verify-mixin-target | 单次呼叫探测所有者/成员是否存在 @Shadow / @Accessor / @Invoker 建议 |
注册表和诊断
用于查询生成的注册表数据和检查服务器运行时状态的工具。
| 工具 | 目的 |
|---|---|
get-registry-data | 读取生成的注册表快照,并可选择包含条目数据 |
get-runtime-metrics | 检查运行时指标和延迟快照 |
批量查找
在固定的候选名单中共享一个已解决工件或Minecraft版本的工具。结果包括每个项目一个状态加上一个汇总 summary。参见 批量查找合同 用于故障处理和重试映射。
在一个MCP服务器进程中,需要相同二进制回退的批处理类查找共享该工件的一个正在进行的源索引/反编译重建。
| 工具 | 目的 |
|---|---|
batch-class-source | 针对一个共享的已解析工件读取多个类的源代码(每次调用1..50个条目) |
batch-class-members | 针对一个共享的已解析工件列出多个类的成员(每次调用1..50个条目) |
batch-symbol-exists | 针对一个共享的Minecraft版本工件探测多个条目的符号存在(仅限工作区/版本目标) |
batch-mappings | 使用一个共享的Minecraft版本跨映射命名空间翻译许多符号(没有共享工件) |
详细的参数约束、迁移说明、资源行为和完整的环境变量矩阵 docs/tool-reference.md.
发展
存储库要求:
- Node.js 22+
pnpm- Java在本地运行重映射或反编译流时
设置并运行存储库:
pnpm install
pnpm dev构建包装形状:
pnpm build
pnpm start始终运行:
pnpm check
pnpm test相关时运行以下命令:
pnpm test:manual:stdio-smoke用于MCP传输、注册或手动工作流更改pnpm test:manual:package-smoke检查打包安装和分发行为时pnpm test:perf用于搜索、索引或性能敏感的更改pnpm test:coverage或pnpm test:coverage:lcov用于覆盖范围检查(lines=80,branches=70,functions=80)pnpm validate对于完整的本地验证套件
