MCP server for memory scanning and manipulation using scanmem/libscanmem, with support for process inspection, value scanning, memory writing, and value freezing on Linux and Windows.
Cheat-engine-mcp has 25 tools with basic schemas and descriptions, but significant quality gaps. All tools have descriptions (10-100 chars, mostly 40-80), and input schemas are present with required fields marked. However, parameter descriptions are almost entirely absent, the schema shows types but no guidance on what values mean or how to use them. Output schemas are undocumented. Many tools are aliases or variants (scanmem_exact_scan vs scanmem_scan_exact) creating composition confusion. Error handling is minimal, no recovery guidance, no categorization of retryable vs fatal errors. The tool set lacks idempotency guarantees and confirmation patterns for destructive operations (write/freeze tools require confirm_write=true, which is good, but no dry-run output validation). Naming is verb-forward (scanmem_*, session_*) but overly specific to the scanmem CLI, reducing discoverability for agents unfamiliar with that tool.
List running processes as PID and command name.
Check that the MCP server is running.
Validate that a PID exists and scanmem can select it.
Run a read-only exact value scan for a PID using scanmem. This does not write memory.
Guarded freeze: write once, or keep writing selected matches when persistent=true. Requires confirm_write=true.
Run a scan and list current matches from scanmem output.
Pick a match line by index from scanmem output text.
Parameter descriptions almost entirely absent. Schemas show types (integer, string, boolean) but no guidance on valid ranges, formats, or semantics. E.g., 'value' parameter in scanmem_exact_scan lacks description of expected format (hex, decimal, float?). Agents cannot infer correct input without trial-and-error.
Output schemas undocumented. Tools return results but no schema is published for what fields agents should expect. E.g., scanmem_list_matches returns 'current matches from scanmem output' but structure is opaque. Agents cannot plan downstream tool calls without guessing.
Duplicate/alias tools reduce clarity. scanmem_exact_scan and scanmem_scan_exact do the same thing; scanmem_scan_increased/decreased/changed/unchanged are variants of one concept. LLMs waste reasoning cycles choosing between near-identical tools. Consolidate or clearly document when to use each.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Preview a guarded write before changing memory.
Run reset after selecting a PID.
Scan value with a declared value_type: int32, int64, float, double, string, or hex.
Scan/refine for changed values after an initial exact value.
Scan/refine for decreased values after an initial exact value.
Alias for exact value scan.
Scan/refine for increased values after an initial exact value.
Scan a numeric range as min..max.
Scan/refine for unchanged values after an initial exact value.
Start an unknown initial value scan for a PID.
Build a small scanmem command script preview. Does not execute writes.
Clear frozen state for a PID session.
Return installed scanmem/libscanmem version.
Write a new value after guard checks. Requires confirm_write=true and a live PID.
Scan current_value in a PID, then write new_value using scanmem. Requires confirm_write=true.
Close an in-memory scan session for a PID.
Create or refresh one in-memory scan session for a PID.
Show current in-memory session status for a PID, or all sessions if pid is omitted.
Error handling lacks recovery guidance. No tool description explains what to do if a scan fails, a PID is invalid, or a write is rejected. Errors are likely raw stderr or exit codes with no actionable next steps for the agent.
No idempotency guarantees documented. Freeze operations with persistent=true may retry indefinitely; write operations lack clear semantics on repeated calls. Agents cannot safely retry without risking duplicate writes or state corruption.