Native MC Mapping Server
БесплатноНе проверенEnables AI agents to search Minecraft obfuscated name mappings (class, method, field) across 38 versions, aiding modding, plugin development, and reflection.
Описание
Enables AI agents to search Minecraft obfuscated name mappings (class, method, field) across 38 versions, aiding modding, plugin development, and reflection.
README
Native MC Mapping MCP Server
An MCP (Model Context Protocol) server that provides Minecraft obfuscated name mapping lookups. Helps AI coding agents work with Minecraft's obfuscated Java internals — for modding, plugin development, Mixin, Access Transformers, reflection-based scripting, and more.
What It Does
Minecraft's Java code is obfuscated at runtime — class, method, and field names are replaced with short meaningless identifiers (aed, func_70091_d, m_91087_). This MCP server lets your AI agent:
- Search obfuscated ↔ deobfuscated mappings across 38 Minecraft versions (1.7.10 – 1.20.1)
- Auto-build mapping caches on first use — downloads from NeoForge Maven and Mojang servers
- Boolean expression search —
Entity&Player,{Block|Item}&client,func_149645
Use Cases
| Scenario | How This Helps |
|---|---|
| Forge / NeoForge modding | Look up obfuscated method/field names when writing mixins or AT configs |
| Fabric modding | Find intermediary ↔ named mappings for access wideners |
| Spigot / Paper plugins | Resolve NMS (net.minecraft.server) class names across versions |
| Mixin / Access Transformers | Discover the exact obfuscated name to target |
| Reflection-based code | Find field/method names for getDeclaredField, getMethod, etc. |
| Scripting engines | Resolve native Minecraft API names (CustomNPCs, CraftTweaker, etc.) |
| Porting mods | Compare mappings between MC versions to find renamed APIs |
MCP Tools
| Tool | Description |
|---|---|
search |
Search Minecraft obfuscated class/method/field name mappings |
Quick Install (MCP Client)
Prerequisites
- Node.js ≥ 18
Step 1: Clone & Build
git clone https://github.com/SaltfishSheep/AI-MCP-NativeMinecraftAccess.git
cd AI-MCP-NativeMinecraftAccess
npm install
npm run build
Step 2: Add to Your MCP Client
Add the following to your MCP client configuration:
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"native-mc-access": {
"command": "node",
"args": ["/absolute/path/to/AI-MCP-NativeMinecraftAccess/dist/index.js"]
}
}
}
OpenCode (opencode.json):
{
"mcp": {
"native-mc-access": {
"type": "local",
"command": ["node", "/absolute/path/to/AI-MCP-NativeMinecraftAccess/dist/index.js"],
"enabled": true
}
}
}
Cursor (.cursor/mcp.json):
{
"mcpServers": {
"native-mc-access": {
"command": "node",
"args": ["/absolute/path/to/AI-MCP-NativeMinecraftAccess/dist/index.js"]
}
}
}
Windsurf (~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"native-mc-access": {
"command": "node",
"args": ["/absolute/path/to/AI-MCP-NativeMinecraftAccess/dist/index.js"]
}
}
}
Replace
/absolute/path/to/with the actual path where you cloned the repo.
Usage
Once configured, your AI agent can call the search tool:
search(mc_version="1.12.2", expression="Entity&Player")
Tool Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
mc_version |
string | Yes | - | Minecraft version (e.g. "1.12.2", "1.20.1") |
expression |
string | Yes | - | Boolean search expression |
page |
number | No | 1 | Page number (1-indexed) |
limit |
number | No | 20 | Results per page (max 100) |
output |
string | No | default template | Output format template using %variable% syntax |
Output template variables: %type%, %obf_class%, %deobf_class%, %obf_name%, %deobf_name%, %srg_name%, %obf_desc%, %deobf_desc%, %access%, %is_static%, %sideonly%, %match%, %mismatch%
Example queries:
| Query | Description |
|---|---|
Entity&Player |
Entries containing both "Entity" AND "Player" |
Entity::classname |
Class name exactly "Entity" |
walk:method |
Methods with "walk" in name |
static::modifier |
is_static exactly "static" |
Potion:classname&Duration:name |
Class name "Potion", name "Duration" |
{Block|Item}&client |
Client-side Block or Item entries |
func_70091_d |
Find a specific SRG method name by ID |
KeyBinding |
All entries mentioning KeyBinding |
output="%deobf_class%" |
Deduplicated class list |
Expression syntax:
| Syntax | Meaning | Example |
|---|---|---|
term |
Case-insensitive substring match (exact case scores higher) | KeyBinding |
term:modifier |
Restrict search to specific columns | Potion:classname, walk:method |
term::modifier |
Strong modifier — exact match required | Entity::classname |
net.minecraft.Entity |
Dot notation — matches net/minecraft/Entity and net/minecraft$Entity |
net.minecraft.entity.Entity |
& |
AND (both must match, higher precedence) | Entity&Living |
| |
OR (either must match) | Entity|Player |
{} |
Grouping | {a|b}&c |
Modifiers:
| Modifier | Searches | Description |
|---|---|---|
all |
all columns | Default — searches all text columns (excludes sideonly) |
class |
obf_class, deobf_class | Full class path (e.g. net/minecraft/entity/Entity) |
classname |
deobf_class (after last /) |
Class name only (e.g. Entity from net/minecraft/entity/Entity) |
package |
deobf_class (before last /) |
Package only (e.g. net/minecraft/entity) |
name |
obf_name, deobf_name, srg_name | Field/method names (methods+fields only) |
method |
obf_name, deobf_name, srg_name | Method names only (filters type=method) |
field |
obf_name, deobf_name, srg_name | Field names only (filters type=field) |
desc |
obf_desc, deobf_desc | Method/field descriptors |
modifier |
access, is_static | Access level and static status (note: access is always empty — data sources lack access info) |
side |
sideonly | Side filter (common/server/client) |
Tips: Use Player&Entity instead of PlayerEntity for cross-version compatibility, as naming conventions differ across MC versions.
Supported Versions
38 Minecraft versions across 4 workflow types:
| Workflow | Versions | Data Sources |
|---|---|---|
| Legacy SRG | 1.7.10, 1.8, 1.8.8–1.9.4, 1.10.2–1.11.2 | SRG ZIP + MCP Stable CSV + static_methods |
| Legacy TSRGv1 | 1.12.2–1.14.4, 1.15–1.15.2 | TSRGv1 + MCP Stable CSV + static_methods + constructors |
| Legacy ProGuard | 1.16.1–1.16.5 | TSRGv1 + Mojang ProGuard + static_methods |
| Modern | 1.17–1.17.1, 1.18–1.18.2, 1.19–1.19.4, 1.20–1.20.1 | TSRGv2 + Mojang ProGuard |
How It Works
- On first search for a given MC version, the server downloads mapping data from NeoForge Maven and Mojang
- It parses SRG/TSRG/ProGuard formats and merges them with MCP CSV data
- The merged cache is stored as
.mapping-caches/<version>.csv - Subsequent searches use the cached data (validated against
package.jsonversion) - Boolean expressions are parsed into an AST and evaluated against all CSV rows
Output Format
Format: [type] obf_class/obf_name -> deobf_class deobf_name srg_name obf_desc deobf_desc access is_static sideonly
Found 382 results for "Entity&Player" in MC 1.12.2 (page 1/39)
1. [method] aed/cD -> net/minecraft/entity/player/EntityPlayer.getAbsorptionAmount func_110139_bj ()F non-static common
2. [method] aed/bM -> net/minecraft/entity/player/EntityPlayer.applyEntityAttributes func_110147_ax ()V non-static common
...
Project Structure
AI-MCP-NativeMinecraftAccess/
├── package.json
├── tsconfig.json
├── src/
│ ├── index.ts # MCP server entry point
│ ├── types.ts # TypeScript type definitions
│ ├── util.ts # Shared utilities (CSV parsing, package version)
│ ├── version-table.ts # URL mapping table for 38 MC versions
│ ├── builder/
│ │ ├── index.ts # buildMappingCache entry point
│ │ ├── download.ts # HTTP fetch + minimal ZIP reader
│ │ ├── parsers.ts # SRG, TSRGv1, TSRGv2, ProGuard, CSV parsers
│ │ ├── workflows.ts # 4 merge workflow builders
│ │ └── cache.ts # CSV cache writer + mapping-info update
│ └── search/
│ ├── index.ts # Barrel exports
│ ├── expression.ts # Boolean expression parser (AND/OR/braces)
│ └── csv-reader.ts # CSV reader + scoring + in-memory cache
├── dist/ # Built JavaScript (entry: dist/index.js)
└── .mapping-caches/ # Generated cache files (gitignored)
License
MIT License — see LICENSE.
Third-Party Data
- Mojang mappings — Provided under Mojang's custom license. This server fetches them at runtime; it does NOT redistribute them.
- MCP mappings — Maintained by the Mod Coder Pack community, distributed via NeoForge Maven.
Установка Native MC Mapping Server
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/SaltfishSheep/AI-MCP-NativeMinecraftAccessFAQ
Native MC Mapping Server MCP бесплатный?
Да, Native MC Mapping Server MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Native MC Mapping Server?
Нет, Native MC Mapping Server работает без API-ключей и переменных окружения.
Native MC Mapping Server — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Native MC Mapping Server в Claude Desktop, Claude Code или Cursor?
Открой Native MC Mapping Server на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
автор: modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
автор: xuzexin-hzCompare Native MC Mapping Server with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории ai
