ce-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CE_MCP_HOST | No | Bridge host | 127.0.0.1 |
| CE_MCP_PORT | No | Bridge port (must match the Lua file) | 37712 |
| CE_MCP_TIMEOUT | No | HTTP timeout (s) — raise for long scans | 60 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ce_statusA | Check the bridge is reachable and report the Cheat Engine version. |
| ce_versionA | Get Cheat Engine version, Lua version, and install directory. |
| ce_routesA | List every low-level route the in-CE bridge exposes (for debugging). |
| process_listA | List running processes (pid + name). Optionally substring- |
| process_attachA | Attach (open) a process by PID (int) or by executable name (e.g. 'game.exe'). Required before any scan / read / write. Returns pid, name, and whether the target is 64-bit. |
| process_detachA | Detach from the currently open process. |
| process_currentA | Report which process is currently attached, if any. |
| process_modulesA | List loaded modules (name, base address, size, path). Optional Module base addresses are the anchor for stable 'module+offset' pointers. |
| process_regionsA | Enumerate committed memory regions (base, size, protection flags). |
| memory_readB | Read a value from memory.
|
| memory_read_batchA | Read many addresses in one round trip.
|
| memory_writeA | Write a value to memory. type is one of: byte, 2byte/word, 4byte/int, 8byte/qword, float, double, string, aob, pointer. For aob, pass value as a hex string like 'AA BB CC'. |
| memory_dumpA | Hex-dump a region of memory (16 bytes/row, hex + ASCII). Max 64 KiB. |
| memory_allocB | Allocate executable memory in the target (for code caves). Optionally
|
| memory_freeC | Free memory previously allocated with |
| scan_firstA | Run a first scan over the attached process and return the match count.
|
| scan_nextB | Narrow the active scan (next scan). Same |
| scan_resultsA | Page through the current scan's matches (address + value). Max 1000/call. |
| scan_resetA | Discard the active scan and free its memory. |
| scan_aobB | Array-of-bytes pattern scan. |
| table_listA | List entries in the cheat table (id, description, address, value, frozen). |
| table_addA | Add an entry to the cheat table. |
| table_removeB | Remove a cheat-table entry by id. |
| table_set_valueC | Set the value of a cheat-table entry (writes it to the target). |
| table_freezeB | Freeze (or unfreeze) a cheat-table entry so its value is held constant. |
| table_enableC | Activate/deactivate an entry (e.g. an Auto Assembler 'script' entry). |
| table_hotkeyB | Bind a hotkey to an entry. |
| table_saveB | Save the current cheat table to a .CT file at |
| table_loadA | Load a .CT file. |
| table_clearA | Remove all entries from the cheat table. |
| pointer_resolveA | Resolve a multi-level pointer chain. Reads the pointer at |
| pointer_scanA | Start a pointer scan for |
| disassembleC | Disassemble |
| assembleA | Assemble a single instruction (e.g. 'mov eax,1') to bytes. |
| auto_assembleA | Run a Cheat Engine Auto Assembler script — the core of code-injection cheats (godmode, infinite ammo, etc.). Pass |
| find_what_writesB | Attach the debugger and collect the instructions that WRITE to
|
| find_what_accessesB | Collect instructions that READ OR WRITE |
| breakpointB | Set (or, with |
| mono_initA | Initialise Cheat Engine's Mono data collector (for Unity/Mono games).
Call once after attaching, before |
| mono_classesA | Enumerate Mono/Unity classes (namespace, name, class pointer). Optional
substring |
| speedhackA | Set the speedhack multiplier (1.0 = normal, 2.0 = double speed, 0.5 = half). Affects the game's perception of time. |
| lua_executeA | Escape hatch: run arbitrary Lua inside Cheat Engine and capture print output + return value. Use when no dedicated tool covers what you need. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 42 tools
Most tools have clearly distinct purposes, even within groups like scanning or table management. A few pairs (e.g., find_what_accesses vs find_what_writes) could be confused, but descriptions clarify the differences. Overall, the tool surface is well-organized.
Tools use snake_case consistently, but the order of verb and noun varies: some are verb_noun (e.g., memory_read), others noun_verb (e.g., table_add). The ce_* prefix and occasional verb-first names (e.g., breakpoint, disassemble) break the pattern, making it somewhat predictable but not perfectly consistent.
42 tools is high for a single-purpose server, exceeding the 'heavy' threshold of 25+. While each tool serves a specific Cheat Engine function, the sheer number may overwhelm agents and increase selection errors. A more compact set could cover the same functionality.
The tool set covers the core Cheat Engine workflows: process management, memory scanning/reading/writing, pointer handling, code injection, table management, and Mono support. Minor gaps exist (e.g., no generic 'find what reads'), but the surface is comprehensive for game hacking automation.