re-il2cpp
Allows reading Unity IL2CPP global-metadata.dat files to recover original C# class, method, field, and parameter names stripped by IL2CPP compilation. Provides tools for inspecting metadata headers, string tables, and binary tables to expose the class graph.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@re-il2cpplist classes in the UnityEngine namespace"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
re-il2cpp
An MCP server that reads Unity IL2CPP global-metadata.dat files to recover
the original C# class, method, field, and parameter names that the IL2CPP
compiler stripped from GameAssembly.dll. Drives Claude Code's reverse
engineering on Unity games.
The format is reverse-engineered from the public
Il2CppDumper MetadataLoader.cs.
Install
pip install -e ./servers/re-il2cpp[rva] # [rva] pulls in LIEF for resolve_method_rvaWithout the [rva] extra, all 12 tools in the table walker work; only
resolve_method_rva requires LIEF. The repo's install.sh calls the
[rva] form automatically.
Related MCP server: revula
What it does
IL2CPP compiles a Unity C# project into native x86_64 / ARM64 code. The
resulting GameAssembly.dll (often 100s of MB) has all the C# class names
mangled away. But the unprotected global-metadata.dat (typically
5-15 MB) sitting next to it still has every original C# symbol name as a
plain UTF-8 string. This server reads that file and exposes the class
graph as JSON.
What it does NOT do
Does not crack encrypted-VM bytecode (any commercial variant) — use
re-drm-fingerprintonGameAssembly.dllfor that.Does not recover C# source code — only the class/method/field names. The bodies are in
GameAssembly.dll, which is the encrypted-VM bytecode-protected IL2CPP runtime.Does not parse Unity asset bundles (
level*,sharedassets*). Usere-format-decodefor those.Does not fully resolve
return_type_index/type_indexfor methods and fields to a C# type name. The walker returns raw type indices; full name resolution requires readings_Il2CppMetadataRegistration::types[]from GameAssembly.dll, which is a v2.3.0 follow-up.
Supported versions
Unity 2019.4 - 2022.3 LTS lines (metadata header versions 24, 25, 26, 27, 28, 29). The bundled test target (Unity 2020.3.15f2, header v27) is the canonical integration-test sample.
Tools
Metadata header
check_il2cpp(metadata_path)— confirm the file is a realglobal-metadata.dat, return Unity version, header version, and per-table counts.
String table (fast enumeration)
list_strings(metadata_path, substring="", limit=500)— return strings from the string table (the unprotected C# symbol table). Filter by substring.list_namespaces(metadata_path)— return a sorted list of namespaces extracted from class FQNs in the string table.list_classes(metadata_path, namespace="", limit=500)— return class FQNs (filterable by namespace).search_strings(metadata_path, substring, limit=50)— substring search; useful for finding asset-bundle paths, save keys, or specific gameplay terms in the metadata.
Binary tables (structured class graph)
get_type_definitions(metadata_path, namespace="", limit=500)— walk thetypeDefinitionstable; return per-class parent, method/field/property/event counts, type index, and token.get_methods(metadata_path, class_fqn, limit=500)— typed methods of a class with token, parameter count, return type index.get_fields(metadata_path, class_fqn, limit=200)— typed fields of a class with type index.get_parameters(metadata_path, method_fqn, limit=50)— typed parameters of a method in declaration order.get_properties(metadata_path, class_fqn, limit=200)— properties withhas_getter/has_setterflags.get_events(metadata_path, class_fqn, limit=200)— events withhas_add/has_remove/has_raiseflags.get_images(metadata_path)— list of IL2CPP images (assemblies) with type ranges and exported-type counts.
RVA cross-reference (requires pip install re-il2cpp[rva])
resolve_method_rva(metadata_path, gameassembly_path, method_fqn)— resolve aNamespace.ClassName.MethodNameto its GameAssembly.dll RVA by parsing the runtime registration structures. Pass the returnedfunction_rvatore-rizin.disassemble_functionto read the function body. For stripped GameAssembly.dll (the default for shipped Unity games), returns the structured data plus the IL2CPP mangled name to use withre-rizin.search_bytes.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Heretek-RE/re-il2cpp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server