Ai Mcp Nativeminecraftaccess — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Ai Mcp Nativeminecraftaccess (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
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:
Entity&Player, {Block|Item}&client, func_149645| 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 |
| Tool | Description |
|---|---|
search | Search Minecraft obfuscated class/method/field name mappings |
git clone https://github.com/SaltfishSheep/AI-MCP-NativeMinecraftAccess.git
cd AI-MCP-NativeMinecraftAccess
npm install
npm run buildAdd 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.Once configured, your AI agent can call the search tool:
search(mc_version="1.12.2", expression="Entity&Player")| 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.
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 |
.mapping-caches/<version>.csvpackage.json version)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
...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)MIT License — see LICENSE.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.