🎮 cheat-engine-mcp
AI-powered game memory scanner and reverse engineering toolkit — an MCP (Model Context Protocol) server that gives AI coding assistants direct access to memory scanning, process memory editing, and IL2CPP reverse engineering tools across Linux & Windows.
Turn your AI assistant into a game hacking partner. Scan memory, freeze values, search IL2CPP metadata, and modify game values — all through natural language.
✨ Features
78 MCP tools in total — all accessible via natural language through any MCP-compatible AI assistant.
🚀 Quick Start
1. Install Dependencies
Linux
# Arch Linux
sudo pacman -S scanmem gdb rust
# Debian / Ubuntu
sudo apt update && sudo apt install -y scanmem gdb cargo
Windows
No external dependencies (scanmem or GDB) required! The memory engine runs natively via Win32 API (kernel32.dll).
Install Rust if building from source:
winget install Rustlang.Rustup
2. Install on Linux
git clone https://github.com/gede-cahya/cheat-engine-mcp.git
cd cheat-engine-mcp
./install.sh
This builds the release binary and installs it to:
~/.local/bin/cheat-engine-mcp
Add this MCP config to your client:
{
"mcpServers": {
"cheat-engine-mcp": {
"command": "/home/YOUR_USER/.local/bin/cheat-engine-mcp"
}
}
}
3. Install on Windows
Build the MCP server natively (or run install-antigravity.ps1):
git clone https://github.com/gede-cahya/cheat-engine-mcp.git
cd cheat-engine-mcp
cargo build --release
Copy the binary to a stable location:
New-Item -ItemType Directory -Force C:\Tools | Out-Null
Copy-Item .\target\release\cheat-engine-mcp.exe C:\Tools\cheat-engine-mcp.exe
Check it:
C:\Tools\cheat-engine-mcp.exe --help
Add this MCP config to your client:
{
"mcpServers": {
"cheat-engine-mcp": {
"command": "C:\\Tools\\cheat-engine-mcp.exe"
}
}
}
Or run the automated setup script for Antigravity:
.\install-antigravity.ps1
4. Connect to Your AI Assistant
Choose your AI assistant and follow Install cheat-engine-mcp ke MCP Client.
Need an agent to install it for you? Copy docs/SKILL_INSTALL_PROMPT.md into Antigravity, Claude Code, or another coding agent.
🔧 MCP Client Configuration
All MCP-compatible clients use the same server binary. The only difference is where the config file lives.
Config File Locations
🧠 Skill / Plugin Installation
For the best experience, install the skill definition so your AI assistant knows how to use the tools effectively.
Google Antigravity
mkdir -p ~/.gemini/config/skills/cheat-engine-mcp
cp .claude/skills/cheat-engine-mcp/SKILL.md ~/.gemini/config/skills/cheat-engine-mcp/SKILL.md
Claude Code
mkdir -p YOUR_REPO/.claude/skills
cp -r .claude/skills/cheat-engine-mcp/ YOUR_REPO/.claude/skills/cheat-engine-mcp/
cp CLAUDE.md YOUR_REPO/CLAUDE.md
🎯 Usage Examples
Once configured, just talk to your AI assistant naturally:
Find and modify a game value
"Scan game TaskbarHero for health value 100, then set it to 999"
The AI will:
process_search→ find the game PIDsession_create→ create a scan sessionscanmem_scan_exact→ scan for value 100- Refine with
scanmem_scan_decreased/scanmem_scan_unchanged scanmem_preview_write→ preview the writescanmem_write_selected→ apply with safety guards
Reverse engineer a Unity/IL2CPP game
"Search for Hero class methods in TaskbarHero's IL2CPP dump"
The AI will:
workspace_set_active→ set game workspaceil2cpp_class_search→ find Hero classil2cpp_method_search→ find relevant methodsil2cpp_field_search→ find class fields and offsetsil2cpp_find_by_rva→ map RVA addresses
Automate IL2CPP Dump & Offset Recovery After Game Update
"Game Taskbar Heroes habis update, tolong dump dan scan offset terbarunya untuk godmode dan damage"
The AI will:
process_search→ findTaskbarHero.exelive PIDil2cpp_run_dumper→ automatically run Il2CppDumper from PIDil2cpp_scan_taskbarhero_offsets→ heuristically match anchors ondump.cs:- Base health & Damage RVA (
pj.gsi) - Hero Receiver Godmode RVA (
pf.gsi) - Stat multiplier RVA (
zo.haz) - AoE radius & hitbox RVA (
bec.nax)
- Base health & Damage RVA (
- Compute Runtime Addresses (
Base + RVA) and output Markdown comparison table memory_write_bytes→ apply godmode byte patches with confirmation
Hook a game function with GDB
"Hook the damage function at RVA 0x958ADC in GameAssembly.dll and multiply damage by 1000"
The AI will:
rva_disassemble_preview→ inspect the functiongdb_hook_preview→ preview the hook scriptgdb_hook_start→ attach and hook (with confirmation)- Monitor via log output
🛠️ Tool Reference
Process & Memory
Scanning
Writing & Allocation
GDB Hooks
IL2CPP Reverse Engineering & Automation
Workspace & Reports
Cheat Tables
🔒 Safety Design
This tool is built with defense-in-depth safety:
- Preview First — All destructive operations have a preview/dry-run mode
- Explicit Confirmation — Writes require
confirm_write: true, hooks requireconfirm_hook: true - Write Limits —
max_writescaps the number of addresses modified - Dry Run —
dry_run: truesimulates without touching memory - GDB Command Whitelist — Only
set,printf,if/else/endallowed in hook scripts - Session Timeout — Scan sessions auto-expire after 30 minutes
- Live PID Check — Validates process is alive before any operation
🏗️ Building from Source
Linux
git clone https://github.com/gede-cahya/cheat-engine-mcp.git
cd cheat-engine-mcp
cargo build --release
# Binary: ./target/release/cheat-engine-mcp
Windows
git clone https://github.com/gede-cahya/cheat-engine-mcp.git
cd cheat-engine-mcp
cargo build --release
# Binary: .\target\release\cheat-engine-mcp.exe
Install to PATH
./install.sh
# Installs to ~/.local/bin/cheat-engine-mcp
# Custom prefix:
PREFIX=/usr/local sudo -E ./install.sh
🧪 Testing
cargo fmt --check
cargo test
cargo check
cargo build --release
(cd examples/dummy-target && cargo check)
Manual MCP Test
# Initialize
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | cargo run -q
# List tools
printf '%s\n' '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | cargo run -q
# Ping
printf '%s\n' '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"ping","arguments":{}}}' | cargo run -q
Dummy Target
# Terminal 1: Start dummy target
cd examples/dummy-target && cargo run
# Terminal 2: Scan with PID from terminal 1
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"scanmem_scan_exact","arguments":{"pid":PID,"value":"100"}}}' | cargo run -q
🐧 Linux Troubleshooting
ptrace Permission
# Check current setting
cat /proc/sys/kernel/yama/ptrace_scope
# Allow ptrace (for development)
sudo sysctl kernel.yama.ptrace_scope=0
# Restore default (more secure)
sudo sysctl kernel.yama.ptrace_scope=1
Common Issues
📁 Project Structure
cheat-engine-mcp/
├── src/
│ ├── main.rs # MCP server (78 tools, JSON-RPC router)
│ ├── native_scan.rs # Pure cross-platform memory buffer scanner
│ ├── windows.rs # Win32 API native process memory backend
│ └── il2cpp_heuristic.rs # Heuristic anchor offset recovery engine
├── Cargo.toml # Rust project config
├── install.sh # Linux install script
├── install-antigravity.sh # Antigravity one-click installer
├── install-antigravity.ps1 # Antigravity Windows installer
├── install-claude-code.sh # Claude Code one-click installer
├── install-claude-code.ps1 # Claude Code Windows installer
├── skills/
│ └── antigravity/ # Antigravity skill definition
│ ├── SKILL.md
│ └── AGENTS.md
├── .claude/
│ └── skills/
│ └── cheat-engine-mcp/ # Claude Code skill definition
│ └── SKILL.md
├── docs/
│ ├── SETUP_ANTIGRAVITY.md
│ ├── SETUP_CLAUDE_CODE.md
│ ├── SETUP_CLAUDE_DESKTOP.md
│ ├── SETUP_CURSOR.md
│ ├── SETUP_GENERIC.md
│ ├── REVERSE_OFFSETS.md
│ ├── RULES_INSTALL.md
│ ├── RELEASE.md
│ └── *.example.json
├── examples/
│ └── dummy-target/ # Test target for scanning
├── reverse/ # Local reverse artifacts (gitignored)
├── .cheat-tables/ # Local cheat tables (gitignored)
├── .github/workflows/ # CI + Release automation
├── CLAUDE.md # Claude Code project rules
├── README.md
├── ROADMAP.md
└── LICENSE
📜 License
MIT License © gede-cahya
🤝 Contributing
- Fork the repo
- Create your feature branch (
git checkout -b feature/amazing-feature) - Run tests (
cargo fmt --check && cargo test && cargo check) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request