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: cutterMCP
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
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