{
  "markdown": "# Universal Game Modder\n\n**One MCP server to inspect and mod any game — driven by an AI agent.**\n\nUniversal Game Modder (UGM) is a local [Model Context Protocol](https://modelcontextprotocol.io) server that gives an AI agent (like Claude in Claude Code) hands for game reverse-engineering and modding: it auto-detects a game's engine, then exposes a toolset for analyzing and patching the binaries — all running locally on your own machine, no cloud, no telemetry.\n\nThis is the **free open-core edition (v0.1.3)**.\n\n---\n\n## ⚠️ Responsible-use notice\n\nUGM is a general-purpose binary-analysis and interoperability tool. It is meant for **modding, interoperability, security research, and education on software you legally own or are authorized to analyze.** You are responsible for how you use it. Before installing, read [`ACCEPTABLE_USE.md`](ACCEPTABLE_USE.md) and [`LICENSE-EULA.md`](LICENSE-EULA.md).\n\n---\n\n## What's in the free edition\n\n- **One stdio MCP server** that an agent connects to and drives.\n- **Game-engine auto-detection** — point it at a game directory; it identifies Unity (Mono / IL2CPP), Unreal, Godot, Java, and native binaries from file signatures.\n- **Native binary analysis + patching toolset** — PE header analysis, hex read/write/search/replace, IDA-style pattern scanning, string extraction, checksums, and binary diffing, running natively in-process (no external tools required).\n\nThe guided `game-modder` workflow skill and the delegated decompilation backends land in a later release; this edition is the MCP server + engine detection + the native toolset.\n\n### Not in the free edition (Pro tier)\n\nThe web dashboard, the delegated Unity/Unreal/JAR decompilation backends, and native disassembly are part of the **Pro** tier and are **not** included here. The free edition is fully functional on its own for engine detection and native binary work.\n\n---\n\n## Requirements\n\n- **Node.js 18+** (uses ES modules and `better-sqlite3`)\n- **[Claude Code](https://claude.com/claude-code)** or any MCP-capable client\n- Windows / macOS / Linux (native tools are cross-platform; the smallest cut ships no OS-specific binaries)\n\n---\n\n## Install\n\n```powershell\n# from the repo root\n./setup.ps1\n```\n\nOr manually (`dist/` ships prebuilt; there is nothing to compile in this edition):\n\n```bash\nnpm install\n```\n\nThen register the server with your MCP client. For Claude Code, add to your MCP config:\n\n```json\n{\n  \"mcpServers\": {\n    \"universal-game-modder\": {\n      \"command\": \"node\",\n      \"args\": [\"dist/index.js\"]\n    }\n  }\n}\n```\n\nOn first run, `ugm.config.json` ships with **empty placeholders** — the free edition needs no external paths. (The Pro delegate backends are where those get filled in.)\n\n### Config resolution\n\nThe server reads the first of these that exists and merges it over built-in defaults:\n\n1. the file named by the `UGM_CONFIG` environment variable\n2. `ugm.config.local.json` next to `package.json` — your machine-specific paths; keep it out of version control (the repo's `.gitignore` already does)\n3. `ugm.config.json` — the tracked file, placeholders only\n\nSo you can fill in backend paths without ever editing a file that could end up in a release or a pull request.\n\n---\n\n## Quickstart\n\nOnce connected, ask your agent to work through these. **Every example below is executed against a real binary before each release** — see [Verified examples](#verified-examples).\n\n> **Parameter naming:** file-level tools take **`file_path`** (and `file_path_a` / `file_path_b` for comparisons). Game-directory tools take **`game_path`**. Disassembly tools take **`binary_path`**.\n\n**1. Detect what a game is built with:**\n```\ndetect_engine  { \"game_path\": \"C:\\\\Path\\\\To\\\\Game\" }\n```\n\n**2. Set it as the active target:**\n```\nload_game  { \"game_path\": \"C:\\\\Path\\\\To\\\\Game\" }\n```\n\n**3. Analyze a binary:**\n```\nanalyze_file_format  { \"file_path\": \"...\\\\SomeBinary.dll\" }   # magic bytes, managed vs native\nanalyze_pe_full      { \"file_path\": \"...\\\\SomeBinary.exe\" }   # PE headers, sections, data directories\n```\n\n**4. Search and inspect:**\n```\nextract_strings          { \"file_path\": \"...\", \"min_length\": 8 }\nextract_dll_classes      { \"file_path\": \"...\", \"search_terms\": [\"Health\",\"Damage\"] }\npattern_scan             { \"file_path\": \"...\", \"pattern\": \"48 8B ?? ?? ?? ?? ??\" }\nsearch_binary_pattern    { \"file_path\": \"...\", \"patterns\": [\"maxHealth\"] }\n```\n\n**5. Patch and verify:**\n```\nhex_read       { \"file_path\": \"...\", \"offset\": 4096, \"length\": 64 }\nhex_replace    { \"file_path\": \"...\", \"search_hex\": \"90 90\", \"replace_hex\": \"EB 00\" }\ncalculate_checksums       { \"file_path\": \"...\" }              # before/after integrity\ncompare_binaries_detailed { \"file_path_a\": \"...\", \"file_path_b\": \"...\" }\n```\n\n**6. Disassemble (native, included):**\n```\ndisassemble_function  { \"binary_path\": \"...\\\\SomeBinary.exe\", \"rva\": 4096 }\ndisassemble_range     { \"binary_path\": \"...\\\\SomeBinary.exe\", \"rva\": 4096 }\n```\n\n### Full free-edition tool list\n\nThese **29 tools run entirely in-process** and need no external backend.\n\n**Native binary tools (19)** — all take `file_path` unless noted:\nDetection / PE: `analyze_pe_full`, `analyze_file_format`, `analyze_dll_structure`, `rva_to_offset` (+`rva`), `offset_to_rva` (+`offset`)\nHex: `hex_read` (+`offset`), `hex_write` (+`offset`,`hex_data`), `hex_search` (+`hex_pattern`), `hex_replace` (+`replace_hex`)\nScanning: `pattern_scan` (+`pattern`), `pattern_scan_all` (+`pattern`), `search_binary_pattern` (+`patterns`)\nStrings / classes: `extract_strings`, `extract_strings_advanced`, `extract_dll_classes`\nIntegrity / diff: `calculate_checksums`, `compare_binaries_detailed` (`file_path_a`,`file_path_b`)\nGodot: `analyze_godot_pck`\nDisassembly: `disassemble_function` (`binary_path`,`rva`)\n\n**Workflow / session tools (10):**\n`detect_engine`, `load_game`, `game_status`, `find_steam_games`, `mod_this_game`, `find_gameplay_values`, `build_and_deploy`, `debug_mod`, `scaffold_mod`, `list_available_tools`\n\n### What the server also lists (Pro backends)\n\nFor transparency: the server advertises **100 tools total**. The other **64** are the Unity (27), Unreal (11), and Java/JAR (26) decompilation suites, which **route to external Pro-tier backend executables**. They appear in the tool list, but calling one without a configured backend returns a clear error:\n\n```\nERROR: Backend unity-decompiler not configured (missing executable path)\n```\n\nThat is expected behavior in the free edition, not a defect. Configure their paths in `ugm.config.json` (Pro) to enable them.\n\n### Verified examples\n\nThe Quickstart calls above are not aspirational. Each release is gated on a verification pass that executes them against a real PE binary and requires every one to return real data. The v0.1.3 pass (2026-09-02, on the restored release cut) ran the gate's 20 documented calls plus 3 clean-failure checks; results are recorded in [`VERIFICATION.md`](VERIFICATION.md).\n\n---\n\n## License\n\nThe UGM code is released under the [MIT License](LICENSE). Use of the tool is additionally governed by [`LICENSE-EULA.md`](LICENSE-EULA.md) and [`ACCEPTABLE_USE.md`](ACCEPTABLE_USE.md). Third-party components used by the Pro-tier backends are attributed in [`licenses/`](licenses/).\n\n## Changelog\n\nSee [`CHANGELOG.md`](CHANGELOG.md). Current version: **v0.1.3** — the config can no longer ship machine paths, and the release was\nrestored and re-verified after a disk incident. v0.1.2 fixed engine detection; v0.1.1 fixed the docs and added the gate.\n",
  "bytes": 7483,
  "sha": "198e2e4f3fb72f0266f6d5b466370b9315a4358b3df22b9a6bd5046a9d020013",
  "repo_slug": "doritoman90000/universal-game-modder",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_doritoman90000_universal_game__ff907b01/readme"
}