ce-mcp

ce-mcp

Enables AI agents to programmatically control Cheat Engine for memory scanning, editing, cheat table management, and reverse engineering tasks.

Category
Visit Server

README

🧠 ce-mcp — Cheat Engine MCP Server

Give an AI agent full, programmatic control of Cheat Engine through the Model Context Protocol.

ce-mcp lets a model like Claude attach to a running process, scan and edit memory, build cheat tables, resolve pointer chains, disassemble/assemble code, run Auto Assembler scripts, and inspect Unity/Mono games — the same workflow a human reverse-engineer follows in the Cheat Engine UI, exposed as clean MCP tools.

"Attach to the game, find my health value, then freeze it."
        │
   ā”Œā”€ā”€ā”€ā”€ā–¼ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”    MCP/stdio    ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”   HTTP/JSON   ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
   │   AI agent   │ ───────────────▶│  ce-mcp       │ ─────────────▶│ Cheat Engine │
   │ (Claude etc) │ ◀───────────────│ (Python,      │ ◀─────────────│ Lua bridge   │
   ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜                 │  FastMCP)     │  37712        │ (in-process) │
                                    ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜                ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜

✨ Why this design

Cheat Engine has no external API — its automation surface lives entirely in its embedded Lua engine. ce-mcp bridges that gap with two cooperating halves:

Half Lives in Job
Lua bridge (lua/ce_mcp_bridge.lua) Inside Cheat Engine Tiny loopback HTTP/JSON server that calls CE's Lua API directly — scanning, reading/writing, AA, debugger, Mono. Ships its own hand-written JSON parser (no external deps).
MCP server (src/ce_mcp/) Python process Speaks MCP over stdio to the agent, translates each tool call into an HTTP request to the bridge. Built on the official mcp SDK (FastMCP).

This keeps the agent-facing contract clean and typed, while all the CE-specific magic stays where it has to be — inside Cheat Engine.


šŸ› ļø Capabilities

40+ tools covering effectively the whole manual workflow:

Group Tools
Process process_list, process_attach, process_detach, process_current, process_modules, process_regions
Memory memory_read, memory_read_batch, memory_write, memory_dump, memory_alloc, memory_free
Scanning scan_first, scan_next, scan_results, scan_reset, scan_aob
Cheat table table_list, table_add, table_remove, table_set_value, table_freeze, table_enable, table_hotkey, table_save, table_load, table_clear
Pointers pointer_resolve, pointer_scan
Code disassemble, assemble, auto_assemble
Debugger find_what_writes, find_what_accesses, breakpoint
Mono/Unity mono_init, mono_classes
Misc speedhack, lua_execute (raw Lua escape hatch), ce_status, ce_version, ce_routes

Every scan type Cheat Engine supports is available: exact, bigger, smaller, between, unknown, changed, unchanged, increased, decreased, increasedby, decreasedby. Every value type too: byte … qword, float, double, string (incl. UTF-16), and AOB byte arrays with wildcards.


šŸš€ Quick start

1. Requirements

  • Windows with Cheat Engine 7.x installed
  • Python 3.10+

2. Install the Python server

git clone https://github.com/imrx44/mcp.git
cd mcp
pip install -e .
# or, without packaging:  pip install -r requirements.txt

3. Start the in-CE bridge

  1. Open Cheat Engine.
  2. Table ā–ø Cheat Table Lua Script (Ctrl+Alt+L).
  3. Paste the contents of lua/ce_mcp_bridge.lua and click Execute.
  4. The CE console prints: [CE-MCP] listening on http://127.0.0.1:37712.

šŸ’” To auto-start it every time, drop the file into Cheat Engine's autorun/ folder.

4. Wire it into your MCP client

Add the block from examples/claude_desktop_config.json to your Claude Desktop config (or any MCP client), pointing PYTHONPATH at this repo's src/. Restart the client and the cheat-engine tools appear.

5. Verify

Ask the agent: "Run ce_status." — you should get the Cheat Engine version back.


šŸŽ® Example: freeze your health (end to end)

A natural-language session the agent can now carry out by itself:

1. process_list  filter="game"            → find the pid
2. process_attach process="game.exe"
3. scan_first  value=100  value_type="4byte"  scan_type="exact"
   ... take damage in-game ...
4. scan_next   value=92  scan_type="exact"
   ... repeat until one result remains ...
5. scan_results                            → 0x1F3A4C20
6. table_add   address="0x1F3A4C20"  description="Health"  type="4byte"
7. table_freeze id=<id>                    → health locked

And a code-injection ("godmode") cheat via Auto Assembler:

auto_assemble(script="""
[ENABLE]
aobscanmodule(hpHook,game.exe,29 87 ?? ?? ?? ??)   // sub [edi+offset],eax
alloc(newmem,128,hpHook)
label(ret)
newmem:
  // skip the subtract → take no damage
  jmp ret
hpHook:
  jmp newmem
  nop 2
ret:
[DISABLE]
hpHook:
  db 29 87 ?? ?? ?? ??
dealloc(newmem)
""")

āš™ļø Configuration

The Python server reads these environment variables:

Variable Default Meaning
CE_MCP_HOST 127.0.0.1 Bridge host
CE_MCP_PORT 37712 Bridge port (must match the Lua file)
CE_MCP_TIMEOUT 60 HTTP timeout (s) — raise for long scans

šŸ”’ Security notes

  • The bridge binds to loopback only and has no authentication — anything that can reach localhost:37712 can drive Cheat Engine. Don't expose the port.
  • This is a debugging / reverse-engineering tool. Use it on software you own or are authorised to analyse, and respect the terms of service of online games.

🧩 Architecture details

  • No external Lua dependencies. The bridge implements its own recursive-descent JSON encoder/decoder, so it runs on a stock Cheat Engine install.
  • Non-blocking server. The HTTP accept loop runs on a CE timer, so it never freezes the Cheat Engine UI.
  • Stateful scan session. scan_first creates a CE MemScan/FoundList that later scan_next/scan_results/scan_reset calls operate on — mirroring the UI.
  • Clean error contract. Every response is { ok, data | error }; the Python client raises a typed BridgeError that tools surface as a readable message.

See docs/TOOLS.md for the full per-tool reference.


šŸ“ Project layout

MCP/
ā”œā”€ā”€ lua/
│   └── ce_mcp_bridge.lua        # In-Cheat-Engine HTTP/JSON bridge
ā”œā”€ā”€ src/ce_mcp/
│   ā”œā”€ā”€ server.py                # FastMCP server + all tool definitions
│   ā”œā”€ā”€ client.py                # Async HTTP client for the bridge
│   ā”œā”€ā”€ __main__.py              # python -m ce_mcp
│   └── __init__.py
ā”œā”€ā”€ examples/
│   └── claude_desktop_config.json
ā”œā”€ā”€ docs/
│   └── TOOLS.md                 # Full tool reference
ā”œā”€ā”€ pyproject.toml
ā”œā”€ā”€ requirements.txt
└── README.md

šŸ“œ License

MIT — see LICENSE.

Not affiliated with Cheat Engine or its author. "Cheat Engine" is the property of its respective owners.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured