Sandbox
@miscusi-peek/cheatengine-mcp-bridge

MCP bridge for Cheat Engine memory tools

This project connects an MCP client to Cheat Engine through a Lua bridge and a Python server. Once connected, the agent can read and search memory, follow pointer chains, disassemble functions, set breakpoints, and use DBVM tools from chat.

1,424 stars209 forksLuaUpdated 1mo ago
Who it's for

Builders who want their agent to inspect Cheat Engine memory, debug processes, and automate reverse-engineering tasks.

What it delivers

You can ask your agent to find addresses, trace pointers, and analyze code instead of doing the memory work by hand.

What it does

Memory reads and scans

Reads integers, floats, strings, pointers, and pointer chains, and can scan values or AOB patterns.

Code and structure analysis

Disassembles functions, analyzes call sites, dissects structures, and identifies RTTI class names.

Debugging and breakpoints

Sets hardware and data breakpoints and supports DBVM watch tooling for low-level tracing.

Process and memory control

Opens processes, creates processes, pauses execution, allocates memory, and changes page protections.

Injection and assembly helpers

Injects DLLs, executes code, assembles instructions, compiles C code, and generates hook templates.

Cheat table and UI tools

Loads and saves cheat tables, inspects address lists, finds windows, and sends window messages.

Two transport options

Uses named pipes on Windows by default, or the TCP relay when the MCP server runs elsewhere.

How to get it

  1. 1Run
    pip install -r MCP_Server/requirements.txt
  2. 2Or manually
    pip install mcp pywin32
  3. 3On Windows, start the relay
    python C:\path\to\cheatengine-mcp-bridge\MCP_Server\ce_tcp_relay.py --host 127.0.0.1 --port 9876
  4. 4In the environment where the MCP server will run, install the MCP dependency without…
    python3 -m pip install -r MCP_Server/requirements-tcp.txt
  5. 5Run
    CE_MCP_TRANSPORT=tcp \
    CE_MCP_HOST=127.0.0.1 \
    CE_MCP_PORT=9876 \
    python3 /path/to/cheatengine-mcp-bridge/MCP_Server/mcp_cheatengine.py
  6. 6Run
    "What process is attached?"
    "Read 16 bytes at the base address"
    "Disassemble the entry point"

README

Demo

Cheat Engine MCP Bridge

Let multibillion $ AI datacenters analyze the program memory for you.

Create mods, trainers, security audits, game bots, accelerate RE, or do anything else with any program and game in a fraction of a time.

Version Python

[!NOTE] Thanks everyone for the stars, much appreciated! <3

Specially a big thank you to all the contributors!!

@libangli218, @lauralex, @iamtyroon, @HachiroSan, @Attacktive


The Problem

You're staring at gigabytes of memory. Millions of addresses. Thousands of functions. Finding that one pointer, that one structure takes days or weeks of manual work.

What if you could just ask?

"Find the packet decryptor hook."
"Find the OPcode of character coordinates."
"Find the OPcode of health values."
"Find the unique AOB pattern to make my trainer reliable after game updates."

That's exactly what this does.

- Stop clicking through hex dumps and start having conversations with the memory.


What You Get:

Before (Manual)After (AI Agent + MCP)
Day 1: Find packet addressMinute 1: "Find RX packet decryption hook"
Day 2: Trace what writes to itMinute 3: "Generate unique AOB signature to make it update persistent"
Day 3: Find RX hookMinute 6: "Find movement OPcodes"
Day 4: Document structureMinute 10: "Create python interpreter of hex to plain text"
Day 5: Game updates, start overDone.

Your AI can now:

  • Read any memory instantly (integers, floats, strings, pointers)
  • Follow pointer chains: [[base+0x10]+0x20]+0x8 → resolved in ms
  • Auto-analyze structures with field types and values
  • Identify C++ objects via RTTI: "This is a CPlayer object"
  • Disassemble and analyze functions
  • Debug invisibly with hardware breakpoints + Ring -1 hypervisor
  • And much more!

How It Works

flowchart TD
    AI[AI Agent: Claude/Cursor/Copilot]
    
    AI -->|MCP Protocol - JSON-RPC over stdio| MCP
    
    MCP[mcp_cheatengine.py - Python MCP Server]
    
    MCP <-->|Named Pipe - Async| PIPE
    
    PIPE["\\.\\pipe\\CE_MCP_Bridge_v99"]
    
    PIPE <--> CE
    
    subgraph CE[Cheat Engine - DBVM Mode]
        subgraph LUA[ce_mcp_bridge.lua]
            WORKER[Worker Thread - Blocking I/O]
            MAIN[Main Thread - GUI + CE API]
            WORKER <-->|Sync| MAIN
        end
    end
    
    MAIN -->|Memory Access| TARGET[Target .exe]

Installation

pip install -r MCP_Server/requirements.txt

Or manually:

pip install mcp pywin32

[!NOTE] Native pipe mode is Windows only because it uses Named Pipes (pywin32). Use TCP relay transport when the MCP server runs outside the Windows environment that hosts Cheat Engine and cannot open the named pipe directly.


Quick Start

1. Load Bridge in Cheat Engine

  1. Enable DBVM in Cheat Engine if you plan to use DBVM tools.
  2. Open Cheat Engine's Lua Engine or script executor.
    • Preferred: File -> Execute Script -> open MCP_Server/ce_mcp_bridge.lua -> Execute.
    • If your Cheat Engine build does not show File -> Execute Script, use Table -> Show Cheat Table Lua Script, paste the dofile(...) line below, and execute it:
dofile([[C:\path\to\cheatengine-mcp-bridge\MCP_Server\ce_mcp_bridge.lua]])

Look for: [MCP v12.0.0] MCP Server Listening on: CE_MCP_Bridge_v99

2. Configure MCP Client

Add to your MCP configuration (e.g., mcp_config.json):

{
  "servers": {
    "cheatengine": {
      "command": "python",
      "args": ["C:/path/to/MCP_Server/mcp_cheatengine.py"]
    }
  }
}

Restart the IDE to load the MCP server config.

For Codex, add a TOML server block to ~/.codex/config.toml:

[mcp_servers.cheatengine]
command = "python"
args = ['C:\path\to\cheatengine-mcp-bridge\MCP_Server\mcp_cheatengine.py']

Use single quotes for the Windows path so TOML treats backslashes literally.

TCP relay transport

The TCP relay lets mcp_cheatengine.py talk to Cheat Engine through a TCP socket instead of opening the Windows named pipe itself. Cheat Engine and the Lua bridge still run on Windows, while the MCP server can run anywhere that can reach the relay: another Windows process, a VM, a container, a Linux host, or a remote machine. This can also be used with WSL without changing the Lua bridge.

  1. On Windows, load MCP_Server/ce_mcp_bridge.lua in Cheat Engine as usual.
  2. On Windows, start the relay:
python C:\path\to\cheatengine-mcp-bridge\MCP_Server\ce_tcp_relay.py --host 127.0.0.1 --port 9876
  1. In the environment where the MCP server will run, install the MCP dependency without pywin32, then run/configure the MCP server with TCP transport:
python3 -m pip install -r MCP_Server/requirements-tcp.txt
CE_MCP_TRANSPORT=tcp \
CE_MCP_HOST=127.0.0.1 \
CE_MCP_PORT=9876 \
python3 /path/to/cheatengine-mcp-bridge/MCP_Server/mcp_cheatengine.py

For MCP client configs that support environment variables:

{
  "servers": {
    "cheatengine": {
      "command": "python3",
      "args": ["/path/to/cheatengine-mcp-bridge/MCP_Server/mcp_cheatengine.py"],
      "env": {
        "CE_MCP_TRANSPORT": "tcp",
        "CE_MCP_HOST": "127.0.0.1",
        "CE_MCP_PORT": "9876"
      }
    }
  }
}

Set --host on the relay and CE_MCP_HOST on the MCP server to addresses that match your network setup. Keep the relay bound to trusted interfaces only, because anyone who can reach it can control the Cheat Engine bridge.

3. Verify Connection

Use the ping tool to verify connectivity:

{"success": true, "version": "12.0.0", "message": "CE MCP Bridge Active"}

4. Start Asking Questions

"What process is attached?"
"Read 16 bytes at the base address"
"Disassemble the entry point"

~180 MCP Tools Available

Memory

ToolDescription
read_memory, read_integer, read_stringRead any data type
read_pointer_chainFollow [[base+0x10]+0x20] paths
scan_all, aob_scanFind values and byte patterns

Analysis

ToolDescription
disassemble, analyze_functionCode analysis
dissect_structureAuto-detect fields and types
get_rtti_classnameIdentify C++ object types
find_references, find_call_referencesCross-references

Debugging

ToolDescription
set_breakpoint, set_data_breakpointHardware breakpoints
start_dbvm_watchRing -1 invisible tracing

Process Lifecycle

ToolDescription
open_process, get_process_listAttach to or enumerate running processes
create_processLaunch a new process under CE's control
pause_process, unpause_processSuspend / resume target execution

Memory Allocation

ToolDescription
allocate_memory, free_memoryReserve and release memory in the target
set_memory_protection, full_accessAdjust page protection flags

Code Injection

ToolDescription
inject_dllLoad a DLL into the target process
execute_code, execute_methodRun shellcode or CE Lua methods remotely

Symbol Management

ToolDescription
register_symbol, get_symbol_infoCreate and query named symbols
enable_windows_symbolsEnable PDB symbol resolution

Assembly / Compilation

ToolDescription
assemble_instructionAssemble a single x86/x64 instruction to bytes
compile_c_codeCompile C source into injected shellcode
generate_api_hook_scriptGenerate a CE auto-assembler API hook template

Window / GUI Automation

ToolDescription
find_windowLocate a window by title or class
send_window_messagePost WM_* messages to a target window

Input Automation

ToolDescription
get_pixelSample a pixel color at screen coordinates
is_key_pressed, do_key_pressQuery and simulate keyboard input

Cheat Table

ToolDescription
load_table, save_tableLoad / save .CT cheat table files
get_address_listEnumerate entries in the active cheat table

Kernel Mode (DBK / DBVM)

ToolDescription
dbk_get_cr3Read the CR3 register for the target process
read_process_memory_cr3Read physical memory via CR3 bypass

And many more at AI_Context/MCP_Bridge_Command_Reference.md


Critical Configuration

BSOD Prevention

[!CAUTION] You MUST disable: Cheat Engine → Settings → Extra → "Query memory region routines"

Enabled: Causes CLOCK_WATCHDOG_TIMEOUT BSODs due to conflicts with DBVM/Anti-Cheat when scanning protected pages.


Troubleshooting

Cheat Engine says "too many local variables"

Load the bridge from disk with dofile(...) instead of pasting the full script into a cheat table script. The bridge also declares command handlers as global functions intentionally; this avoids Cheat Engine's Lua chunk limit of 200 local variables when the complete bridge is compiled at once.

MCP client cannot connect

Check these in order:

  1. Cheat Engine is open and shows MCP Server Listening on: CE_MCP_Bridge_v99.
  2. The MCP client was restarted after adding the server config.
  3. The configured mcp_cheatengine.py path exists.
  4. pip install -r MCP_Server/requirements.txt has installed both mcp and pywin32.
  5. Run the MCP ping tool. A successful connection returns success: true and the bridge version. process_id: 0 is normal until Cheat Engine is attached to a target process.

Environment Variables

VariableDefaultPurpose
CE_MCP_TIMEOUT30Timeout (seconds) for each MCP tool call.
CE_MCP_ALLOW_SHELLunsetSet to 1 to enable run_command / shell_execute tools. Arbitrary code execution risk — leave unset by default.

Example Workflows

Finding a value:

You: "Scan for gold: 15000"  →  AI finds 47 results
You: "Gold changed to 15100"  →  AI filters to 3 addresses
You: "What writes to the first one?"  →  AI sets hardware BP
You: "Disassemble that function"  →  Full AddGold logic revealed

Understanding a structure:

You: "What's at [[game.exe+0x1234]+0x10]?"
AI: "RTTI: CPlayerInventory"
AI: "0x00=vtable, 0x08=itemCount(int), 0x10=itemArray(ptr)..."

Project Structure

CLAUDE.md                               # Claude Code agent guidance (this repo)
README.md                               # User-facing documentation

MCP_Server/
├── mcp_cheatengine.py                  # Python MCP Server (FastMCP)
├── ce_mcp_bridge.lua                   # Cheat Engine Lua Bridge
└── test_mcp.py                         # Test Suite

AI_Context/
├── BATCH_WORKER_BRIEFING.md            # Parallel-worker task specifications (v12 overhaul)
├── MCP_Bridge_Command_Reference.md     # MCP Commands reference
├── CE_LUA_Documentation.md             # Full CheatEngine 7.6 official documentation
└── AI_Guide_MCP_Server_Implementation.md  # Full technical documentation for AI agent

Testing

Running the test:

python MCP_Server/test_mcp.py

Expected output:

✅ Memory Reading: 6/6 tests passed
✅ Process Info: 4/4 tests passed  
✅ Code Analysis: 8/8 tests passed
✅ Breakpoints: 4/4 tests passed
✅ DBVM Functions: 3/3 tests passed
✅ Utility Commands: 11/11 tests passed
⏭️ Skipped: 1 test (generate_signature)
────────────────────────────────────
Total: 36/37 PASSED (100% success)

The Bottom Line

You no longer need to be an expert. Just ask the right questions.

⚠️ EDUCATIONAL DISCLAIMER

This code is for educational and research purposes only. It's created to show the capabilities of the Model Context Protocol (MCP) and LLM-based debugging. I do not condone the use of these tools for malicious hacking, cheating in multiplayer games, or violating Terms of Service. This is a demonstration of software engineering automation.

Files in the repo

Repository payload7 top-level entries
  • AI_Context
  • MCP_Server
  • .gitignore
  • AGENTS.md
  • CLAUDE.md
  • LICENSE
  • README.md

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More connectors

Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface

86k

High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

43k

Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code

14k
okf-memory/
okf-agent-memory

Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300µs in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.

547
tirth8205/
code-review-graph

Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.

31k
2akouwu/
reverify

Stop your AI from making things up — it proposes, deterministic tools decide, every claim checked against ground truth with evidence. Grounded facts and context survive resets. Reverse engineering is the proving ground. MCP server + CLI.

1.1k