Galgame MCP
# Galgame MCP
面向 Galgame / 视觉小说汉化的 **标准 MCP(Model Context Protocol)服务器**(stdio 传输)。
任意支持 MCP 的客户端都可接入(Cursor、Claude Desktop、其它 MCP host 等),**不是 Cursor 专用**。
- **运行时**:Node.js(MCP 入口)+ Python(算法与侧车)
- **原生侧车**:`native/` 下 DLL/EXE 可 1:1 部署到游戏目录(含注入)
- **工作区**:环境变量 `GALGAME_WORKSPACE` 指向游戏/工程根目录
- **文档**:人类看 `README.md`;给 AI 的工作提示词是单独的 **`mcp-instructions.md`**(MCP `instructions` + prompt `galgame_workflow`)
---
## 环境要求
| 组件 | 版本 | 用途 | 必需? |
|------|------|------|--------|
| **Windows 10/11 x64** | — | 侧车 DLL/EXE、多数游戏目标平台 | 推荐(完整能力) |
| **Node.js** | **≥ 20** | MCP 服务、`npm` 构建 | **必需** |
| **Python** | **≥ 3.11** | 封包/脚本/图像等原生逻辑 | **必需** |
| **pip 包 `pefile`** | 任意近版 | PE 解析(`re_pe_info`) | 推荐 |
| **pip 包 `capstone`** | 任意近版 | 反汇编(`re_disasm`) | 推荐(逆向) |
| **JDK 21+** | OpenJDK / Temurin / Microsoft | 跑 Ghidra | 仅用 Ghidra 时需要 |
| **磁盘** | 建议预留 **≥ 3 GB** | Ghidra≈570MB + Rizin/x64dbg/Cutter 等 | 装 RE 套件时 |
可选商业工具(不重新分发;装好后 MCP 可发现并启动):
- **IDA Free / Pro** → 设 `IDA_DIR` 或把 `ida64.exe` 加入 PATH
- **Binary Ninja** → 设 `BN_INSTALL_DIR`
---
## 安装
### 1. 进入仓库
```bash
cd Galgame-mcp
```
### 2. Node 依赖并编译
```bash
npm install
npm run build
```
入口:`dist/server.js`。
### 3. Python 依赖
```bash
python -m pip install pefile capstone
python --version
python -c "import pefile, capstone; print('ok')"
```
### 4.(可选)高档逆向套件
下载到 `native/re_tools/`(也可在 MCP 里调用 `re_install`):
```text
re_status
re_install
re_install tool=rizin
re_install tool=x64dbg
re_install tool=ghidra
re_install tool=cutter
```
JDK(Windows 示例):
```bash
winget install --id Microsoft.OpenJDK.21 -e
```
或设置 `JAVA_HOME` / 把便携 JDK 放到 `native/re_tools/jdk/`。
### 5. 自检
```bash
npm run build
```
MCP 内调用 `gal_status` 核对插件数 / scheme / 侧车 / `re_tools`。
---
## 接入任意 MCP 客户端
本服务走 **MCP over stdio**:由宿主进程拉起 `node …/dist/server.js`,用标准输入输出做 JSON-RPC。
配置写法因宿主而异,核心都是 **command + args + env**。
示例(路径改成你的绝对路径):
```json
{
"mcpServers": {
"Galgame-mcp": {
"command": "node",
"args": [
"C:/path/to/Galgame-mcp/dist/server.js"
],
"env": {
"GALGAME_WORKSPACE": "C:/path/to/your/game-or-workspace",
"GALGAME_PYTHON": "python"
}
}
}
}
```
手工拉起(调试用;正常应由 MCP 宿主托管 stdio):
```bash
node dist/server.js
```
| 环境变量 | 含义 |
|----------|------|
| `GALGAME_WORKSPACE` | 默认工作区根(相对路径基准) |
| `GALGAME_PYTHON` | Python 可执行文件(默认 `python`) |
| `GAL_RE_TOOLS` | 可选;覆盖 `native/re_tools` |
| `JAVA_HOME` / `IDA_DIR` / `BN_INSTALL_DIR` / `GHIDRA_INSTALL_DIR` | 可选;本机工具路径 |
改配置后重启对应 MCP 宿主即可。
---
## 功能介绍
| 方向 | 能做什么 | 入口工具 |
|------|----------|----------|
| **封包** | 探测 / 列表 / 解压 / 重封 | `archive_*` / `xp3_*` |
| **XP3 解密** | ~127 内置 scheme;标题解析;未知方案助搓 | `xp3_list_schemes` / `xp3_resolve_scheme` / `xp3_re_*` |
| **脚本汉化** | 多引擎抽取/回写;Sjis 隧道;bundle | `vnt_extract` / `vnt_insert` / `bundle_*` |
| **图像** | PNG ↔ TLG5/6 等 | `image_probe` / `image_convert` / `image_pack_xp3` |
| **音频** | 探测/解码/部分编码;`.sli` loop | `audio_*` / `loop_*` |
| **Kirikiri** | 解扰乱、patch、加密旁路 | `kirikiri_*` / `native_deploy` |
| **原生侧车** | version.dll / VNTextProxy / 工具 EXE | `native_list_sidecars` / `native_deploy` / `native_run` |
| **逆向** | Rizin / Ghidra / x64dbg / Cutter + PE/字符串/反汇编 | `re_*` |
规模(以本机构建为准,见 `gal_status`):封包插件 **554**(pack **248**)、XP3 scheme **~127**、侧车 kit **15**。
### 封包 / XP3
- `archive_probe` → `archive_list` / `archive_unpack` / `archive_pack`(`format` 用下表 ID)
- `xp3_unpack` / `xp3_pack`;`xp3_resolve_scheme(title=…)`
- 未知加密:`xp3_re_scan_game` → `xp3_re_exe_inspect` → `xp3_re_try_schemes` / `xp3_re_scaffold`
- 无 TPM:优先扫官方 EXE 控制块;否则 `native_deploy kit=kirikiri_unencrypted` + 启动官方 EXE
### 脚本 / 补丁流
```text
解包 → kirikiri_descramble_tree → 翻译
→ kirikiri_stage_patch(..., pack=true)
→ 加密包:native_deploy kit=kirikiri_unencrypted + 跑官方 EXE
```
`vnt_extract` / `vnt_insert` 覆盖多脚本引擎;`vnt_proxy_*` 处理 SJIS 隧道。
### 侧车 kit
| kit | 作用 |
|-----|------|
| `kirikiri_unencrypted` | `version.dll` 运行时 XP3 旁路/抽取 |
| `vnt_proxy` | 字体与 SJIS 隧道注入 |
| `vntextpatch` | VNTextPatch.exe |
| `kagexpress_*` / `kagconfigex2` / `krdevui_tools` / `krkrz_*` / `kirikiri_*` | 对应上游工具 |
### 逆向 `re_*`
| 能力 | 工具 |
|------|------|
| 状态/安装 | `re_status` / `re_install` / `re_discover` |
| 快扫 | `re_pe_info` / `re_strings` / `re_search` / `re_disasm` |
| CLI | `re_rizin` |
| Ghidra | `re_ghidra_headless` |
| GUI | `re_launch tool=ghidra\|x64dbg\|cutter\|ida` |
### 上游源码树对应
| 源码树 | 本仓库 |
|--------|--------|
| GARbro-Mod | 封包/图像/音频 Python 移植 |
| KirikiriTools | 算法 + unencrypted 侧车 + `xp3_re_*` / `re_*` |
| VNTranslationTools | 引擎 + vnt_proxy / vntextpatch |
| KAGConfigEX2 / kagexpress | `kagconfig_*` + 侧车 |
| KrKrZSceneManager | `kirikiri_tjs2100_*` / `kirikiri_psb_*` |
| krdevui | TLG / sig / loop + `krdevui_tools` |
---
## 常用工具速查
```text
gal_status
archive_probe / archive_list / archive_unpack / archive_pack / archive_list_formats
xp3_list_schemes / xp3_resolve_scheme / xp3_unpack / xp3_pack
xp3_re_workflow / xp3_re_scan_game / xp3_re_exe_inspect / xp3_re_scaffold
vnt_extract / vnt_insert
kirikiri_descramble_tree / kirikiri_stage_patch / kirikiri_pack_unencrypted
native_list_sidecars / native_deploy / native_run
re_status / re_install / re_rizin / re_ghidra_headless / re_launch
image_convert / audio_decode / kagconfig_set / loop_read
```
完整注册见 `src/server.ts`。
---
## 封包 ID 全表
数据来自运行时 `archives.support_matrix()`(MCP:`archive_list_formats`)。共 **554** 项;`pack=否` 表示当前仅 list/unpack(或上游本身不写)。
| ID | 扩展名 | list | unpack | pack |
|---|---|---|---|---|
| `abel_arc` | .acd | 是 | 是 | 否 |
| `abel_bin` | .tmp | 是 | 是 | 是 |
| `abel_fpk` | .tmp | 是 | 是 | 是 |
| `abogado_dsk` | .dsk, .bin, .dat, .pft | 是 | 是 | 否 |
| `abogado_pak` | .pak | 是 | 是 | 否 |
| `actgs_cg` | .dat, .cg, .arc | 是 | 是 | 否 |
| `actgs_cg2` | .dat | 是 | 是 | 否 |
| `actgs_dat` | .dat, .scr, .wav | 是 | 是 | 否 |
| `activesoft_a98` | .pak | 是 | 是 | 否 |
| `activesoft_adpack32` | .tmp | 是 | 是 | 是 |
| `adobe_air` | .dat | 是 | 是 | 否 |
| `ads_pac` | .pac | 是 | 是 | 否 |
| `ads_pog` | .dat | 是 | 是 | 否 |
| `advdx_pkd` | .tmp | 是 | 是 | 是 |
| `advrun_ard` | .ard, .snf | 是 | 是 | 否 |
| `advscripter_md002` | .tmp | 是 | 是 | 是 |
| `advsys_arc3` | .dat, .gwd, .tmp | 是 | 是 | 是 |
| `advsys_fpk` | .tmp | 是 | 是 | 是 |
| `advsys_gr2` | .tmp | 是 | 是 | 是 |
| `afs` | .tmp | 是 | 是 | 是 |
| `ags_ani` | .ani | 是 | 是 | 否 |
| `ags_pack` | .tmp | 是 | 是 | 是 |
| `ail_dat` | .dat, .snl | 是 | 是 | 否 |
| `ail_lnk2` | .dat | 是 | 是 | 否 |
| `aims_pack` | .tmp | 是 | 是 | 是 |
| `airnovel_air` | .air | 是 | 是 | 否 |
| `alicesoft_aar` | .dat | 是 | 是 | 否 |
| `alicesoft_afa` | .dat | 是 | 是 | 否 |
| `alicesoft_ald` | .dat | 是 | 是 | 否 |
| `alicesoft_alk` | .tmp | 是 | 是 | 是 |
| `amaterasu_ami` | .tmp | 是 | 是 | 是 |
| `anchor_fcd` | .dat | 是 | 是 | 否 |
| `anchor_fpd` | .epk | 是 | 是 | 否 |
| `ankh_dat` | .dat, .ogg, .tmp | 是 | 是 | 是 |
| `ankh_grp` | .grp, .bin, .dat, .vc, .tmp | 是 | 是 | 是 |
| `antique_achv` | .tmp | 是 | 是 | 是 |
| `aoi_box` | .tmp | 是 | 是 | 是 |
| `aoi_vfs` | .dat | 是 | 是 | 否 |
| `apricot_mpf2` | .dat | 是 | 是 | 否 |
| `arc0` | .tmp | 是 | 是 | 是 |
| `arcg` | .dat | 是 | 是 | 否 |
| `archangel_dat` | .dat | 是 | 是 | 否 |
| `archangel_scn` | .dat | 是 | 是 | 否 |
| `arcx` | .tmp | 是 | 是 | 是 |
| `artemis_mja` | .tmp | 是 | 是 | 是 |
| `asar` | .tmp | 是 | 是 | 是 |
| `ast_arc1` | .tmp | 是 | 是 | 是 |
| `ast_arc2` | .tmp | 是 | 是 | 是 |
| `astronauts_gxp` | .dat | 是 | 是 | 否 |
| `avc_dat` | .dat | 是 | 是 | 否 |
| `azsys` | .tmp | 是 | 是 | 是 |
| `azsys_encrypted` | .arc | 是 | 是 | 否 |
| `banana_pk` | .pk, .dat, .scr | 是 | 是 | 否 |
| `basil_mif` | .tmp | 是 | 是 | 是 |
| `bellda` | .tmp | 是 | 是 | 是 |
| `bishop_bsa` | .tmp | 是 | 是 | 是 |
| `bishop_bsc` | .tmp | 是 | 是 | 是 |
| `bishop_pk` | .tmp | 是 | 是 | 是 |
| `blackcyc_gpk` | .gpk, .gtb, .dwq | 是 | 是 | 否 |
| `blackcyc_vpk` | .vpk, .vtb, .vaw | 是 | 是 | 否 |
| `blackrainbow_ads` | .ads | 是 | 是 | 否 |
| `blackrainbow_ccf` | .tmp | 是 | 是 | 是 |
| `blackrainbow_dat` | .bmd | 是 | 是 | 否 |
| `blackrainbow_dx` | .hse | 是 | 是 | 否 |
| `blackrainbow_gsp` | .gsp, .dat, .pak, .tmp | 是 | 是 | 是 |
| `blackrainbow_imp` | .dat | 是 | 是 | 否 |
| `blackrainbow_melty` | .pak | 是 | 是 | 否 |
| `blackrainbow_sppak` | .tmp | 是 | 是 | 是 |
| `bluegale_snn` | .snn, .inx, .tmp | 是 | 是 | 是 |
| `bonk_pack` | .pack | 是 | 是 | 否 |
| `buriko` | .dat | 是 | 是 | 是 |
| `cadath_daf` | .tmp | 是 | 是 | 是 |
| `cadath_kar` | .ns6, .ns5, .tmp | 是 | 是 | 是 |
| `caf` | .dat | 是 | 是 | 否 |
| `caramelbox_arc3` | .dat | 是 | 是 | 否 |
| `caramelbox_arc4` | .dat | 是 | 是 | 否 |
| `carriere_arc` | .tmp | 是 | 是 | 是 |
| `carriere_archive` | .tmp | 是 | 是 | 是 |
| `catsystem_binv1` | .tmp | 是 | 是 | 是 |
| `catsystem_cspack` | .dat | 是 | 是 | 否 |
| `catsystem_hg2` | .dat | 是 | 是 | 否 |
| `catsystem_hg3` | .dat | 是 | 是 | 否 |
| `catsystem_pida` | .tmp | 是 | 是 | 是 |
| `catsystem_pida_v1` | .tmp, .pida, .dat | 是 | 是 | 是 |
| `catsystem_pidav1` | .tmp, .pida, .dat | 是 | 是 | 是 |
| `catsystem_zt` | .zt | 是 | 是 | 否 |
| `cdpa_pack` | .tmp | 是 | 是 | 是 |
| `cherry_myk0` | .tmp | 是 | 是 | 是 |
| `cherry_pak` | .pak, .grp, .tmp | 是 | 是 | 是 |
| `cherry_pak2` | .dat | 是 | 是 | 否 |
| `circus_crm` | .tmp | 是 | 是 | 是 |
| `circus_dat` | .dat | 是 | 是 | 否 |
| `circus_vc` | .dat | 是 | 是 | 否 |
| `clickteam_mfs` | .dat | 是 | 是 | 否 |
| `cmvs_cpz` | .dat | 是 | 是 | 否 |
| `cmvs_cpz1` | .tmp | 是 | 是 | 是 |
| `cmvs_cpz2` | .tmp | 是 | 是 | 是 |
| `cmvs_pbz` | .dat | 是 | 是 | 否 |
| `cri_cpk` | .cpk | 是 | 是 | 否 |
| `cri_spc` | .spc, .bip | 是 | 是 | 否 |
| `cromwell_gpak` | .tmp | 是 | 是 | 是 |
| `cromwell_graphic` | .tmp | 是 | 是 | 是 |
| `cromwell_opk` | .ogg, .tmp | 是 | 是 | 是 |
| `cromwell_voice` | .tmp | 是 | 是 | 是 |
| `crowd_pck` | .tmp | 是 | 是 | 是 |
| `crowd_pkwv` | .dat | 是 | 是 | 否 |
| `csware_arc2` | .tmp | 是 | 是 | 是 |
| `csware_blitz` | .dat | 是 | 是 | 否 |
| `csware_pcs` | .dat | 是 | 是 | 否 |
| `cyberworks_app` | .appendix, .app | 是 | 是 | 否 |
| `cyberworks_csystem` | .dat | 是 | 是 | 否 |
| `cyberworks_data` | .dat | 是 | 是 | 否 |
| `cyberworks_p8` | .pak | 是 | 是 | 否 |
| `dac_dpk` | .dat | 是 | 是 | 否 |
| `dai_pac` | .tmp | 是 | 是 | 是 |
| `ddsystem_ddp2` | .tmp | 是 | 是 | 是 |
| `ddsystem_ddp3` | .dat | 是 | 是 | 否 |
| `debonosu` | .dat | 是 | 是 | 否 |
| `densdk_daf1` | .tmp | 是 | 是 | 是 |
| `densdk_daf2` | .dat | 是 | 是 | 否 |
| `digitalworks_lzs` | .tm2 | 是 | 是 | 否 |
| `digitalworks_pac` | .tmp | 是 | 是 | 是 |
| `digitalworks_pac_hed` | .hed | 是 | 是 | 否 |
| `djsystem_dat` | .tmp | 是 | 是 | 是 |
| `dogenzaka_bin` | .bin | 是 | 是 | 否 |
| `dogenzaka_gamedat` | .bin, .tmp | 是 | 是 | 是 |
| `dxlib_dxa` | .dxa, .hud, .usi, .med, .dat, .bin | 是 | 是 | 否 |
| `dxlib_med` | .dat | 是 | 是 | 否 |
| `eagls_pak` | .idx, .gr | 是 | 是 | 否 |
| `ebgsystem_bin` | .dat | 是 | 是 | 否 |
| `edoire_arc` | .arc | 是 | 是 | 否 |
| `edoire_arch` | .dat | 是 | 是 | 否 |
| `ego` | .tmp | 是 | 是 | 是 |
| `electriciteit_dat` | .dat, .tmp | 是 | 是 | 是 |
| `electriciteit_pkk` | .pkk, .skn | 是 | 是 | 否 |
| `elf_ai5dat` | .dat | 是 | 是 | 否 |
| `elf_ai5win` | .mes, .lib, .a, .a6, .msk, .x | 是 | 是 | 否 |
| `elf_hed` | .bin, .pak | 是 | 是 | 否 |
| `elf_vol` | .vol | 是 | 是 | 否 |
| `elf_vsd` | .dat | 是 | 是 | 否 |
| `ellefin_epk` | .epk | 是 | 是 | 否 |
| `emic_pac` | .tmp | 是 | 是 | 是 |
| `emic_pack` | .tmp | 是 | 是 | 是 |
| `emonengine_eme` | .dat | 是 | 是 | 否 |
| `emote_psb` | .psb, .pimg, .dpak, .psbz, .psp, .mmo, .mtn | 是 | 是 | 否 |
| `enigma_evb` | .enigma1 | 是 | 是 | 否 |
| `entergram_pac_v1` | .pac | 是 | 是 | 否 |
| `entexec_packdat3` | .tmp | 是 | 是 | 是 |
| `entis_eri` | .dat | 是 | 是 | 否 |
| `entis_noa` | .noa, .dat, .rsa, .arc, .emc | 是 | 是 | 否 |
| `entis_pac` | .pac | 是 | 是 | 否 |
| `escude` | .dat | 是 | 是 | 否 |
| `ethornell_bgi` | .arc | 是 | 是 | 是 |
| `eushully_alf` | .alf, .aai | 是 | 是 | 否 |
| `eushully_snd` | .snd, .snh, .wav | 是 | 是 | 否 |
| `exhibit_grp` | .dat | 是 | 是 | 否 |
| `factor_pack` | .res, .tmp | 是 | 是 | 是 |
| `familyadv_csaf` | .tmp | 是 | 是 | 是 |
| `favorite_acpxpk` | .dat | 是 | 是 | 否 |
| `favorite_fvp` | .bin, .tmp | 是 | 是 | 是 |
| `favorite_hzc` | .tmp | 是 | 是 | 是 |
| `fc01_bdt` | .bdt | 是 | 是 | 否 |
| `fc01_mca` | .dat | 是 | 是 | 否 |
| `fc01_mrg` | .dat | 是 | 是 | 否 |
| `fc01_mrg0` | .tmp | 是 | 是 | 是 |
| `fc01_pak` | .pak, .dat | 是 | 是 | 否 |
| `fc01_scxa` | .dat | 是 | 是 | 否 |
| `ffa_arc` | .dat | 是 | 是 | 否 |
| `ffa_dat` | .dat, .lst, .so4, .so5 | 是 | 是 | 否 |
| `ffa_jdat` | .dat | 是 | 是 | 否 |
| `flyingshine_pd` | .tmp | 是 | 是 | 是 |
| `flyingshine_pd2` | .def, .dsf, .ogg | 是 | 是 | 否 |
| `fog_dat` | .dat | 是 | 是 | 否 |
| `force_paq` | .paq, .tmp | 是 | 是 | 是 |
| `foster_c24` | .tmp | 是 | 是 | 是 |
| `foster_c25` | .tmp | 是 | 是 | 是 |
| `foster_fa2` | .tmp | 是 | 是 | 是 |
| `frontier_pcarc` | .gz, .tmp | 是 | 是 | 是 |
| `frontwing_fg` | .dat | 是 | 是 | 否 |
| `frontwing_flt` | .dat | 是 | 是 | 否 |
| `frontwing_timeleap` | .dat | 是 | 是 | 否 |
| `frontwing_tlp` | .dat | 是 | 是 | 否 |
| `frontwing_vav` | .tmp | 是 | 是 | 是 |
| `fvp` | .tmp | 是 | 是 | 是 |
| `g2_bgra` | .dat | 是 | 是 | 否 |
| `g2_gcex` | .dat | 是 | 是 | 否 |
| `gamesystem_chr` | .chr | 是 | 是 | 否 |
| `gamesystem_cmp` | .dat | 是 | 是 | 否 |
| `gamesystem_dat` | .dat | 是 | 是 | 否 |
| `gamesystem_puremail` | .dat | 是 | 是 | 否 |
| `giga_all` | .273 | 是 | 是 | 否 |
| `giga_tpf` | .dat | 是 | 是 | 否 |
| `glib2_g2` | .dat | 是 | 是 | 否 |
| `glib_gml` | .tmp | 是 | 是 | 是 |
| `gpc7` | .dat | 是 | 是 | 否 |
| `gpk2` | .tmp | 是 | 是 | 是 |
| `groover_pcg` | .dat, .pcg, .spf | 是 | 是 | 否 |
| `gspack` | .tmp | 是 | 是 | 是 |
| `gspack_symbol` | .dat | 是 | 是 | 否 |
| `gss_lsd` | .arc, .bin | 是 | 是 | 否 |
| `gsx_k3` | .tmp | 是 | 是 | 是 |
| `guyzware_gdp` | .dat, .gdp, .tmp | 是 | 是 | 是 |
| `gx4lib_dat` | .dat | 是 | 是 | 否 |
| `hcsystem_opf` | .dat | 是 | 是 | 否 |
| `hcsystem_pak` | .tmp | 是 | 是 | 是 |
| `hexenhaus_arcc` | .dat | 是 | 是 | 否 |
| `hexenhaus_imgd` | .dat | 是 | 是 | 否 |
| `hexenhaus_odio` | .dat | 是 | 是 | 否 |
| `hexenhaus_wag` | .tmp | 是 | 是 | 是 |
| `hsp_dpm` | .tmp | 是 | 是 | 是 |
| `hunex_hfa` | .tmp | 是 | 是 | 是 |
| `hunex_mzp` | .dat | 是 | 是 | 否 |
| `hypatia_hypack` | .tmp | 是 | 是 | 是 |
| `hypatia_lpc` | .lpc | 是 | 是 | 否 |
| `hypatia_wbm` | .dat | 是 | 是 | 否 |
| `iks_npsr` | .tmp | 是 | 是 | 是 |
| `ikura_drs` | .tmp | 是 | 是 | 是 |
| `ikura_gan` | .dat | 是 | 是 | 否 |
| `ikura_mpx` | .tmp | 是 | 是 | 是 |
| `ikura_tan` | .tan | 是 | 是 | 否 |
| `illusion_pp` | .dat | 是 | 是 | 否 |
| `int` | .tmp | 是 | 是 | 是 |
| `interheart_fpk2` | .tmp | 是 | 是 | 是 |
| `interheart_kg` | .dat | 是 | 是 | 否 |
| `ipac_ies` | .dat | 是 | 是 | 否 |
| `ipac_pak` | .tmp | 是 | 是 | 是 |
| `irrlicht_ark` | .dat | 是 | 是 | 否 |
| `irrlicht_pack` | .pack, .tmp | 是 | 是 | 是 |
| `ism_isa` | .tmp | 是 | 是 | 是 |
| `ism_isg` | .dat | 是 | 是 | 否 |
| `ivory_pk` | .dat | 是 | 是 | 否 |
| `ivory_px` | .tmp | 是 | 是 | 是 |
| `ivory_sg` | .dat | 是 | 是 | 否 |
| `jamcreation_dat` | .dat | 是 | 是 | 否 |
| `jupiter_lb5` | .lb5, .idx, .tmp | 是 | 是 | 是 |
| `kaas_pb` | .pb, .tmp | 是 | 是 | 是 |
| `kaas_pd` | .pd | 是 | 是 | 否 |
| `kaguya_af01` | .tmp | 是 | 是 | 是 |
| `kaguya_an00` | .dat | 是 | 是 | 否 |
| `kaguya_an10` | .dat | 是 | 是 | 否 |
| `kaguya_an20` | .dat | 是 | 是 | 否 |
| `kaguya_an21` | .dat | 是 | 是 | 否 |
| `kaguya_lin2` | .tmp | 是 | 是 | 是 |
| `kaguya_link` | .dat | 是 | 是 | 否 |
| `kaguya_pl00` | .tmp | 是 | 是 | 是 |
| `kaguya_pl10` | .dat | 是 | 是 | 否 |
| `kaguya_uf01` | .tmp | 是 | 是 | 是 |
| `kaguya_wfl1` | .dat | 是 | 是 | 否 |
| `kapp_asd` | .asd, .mp3, .wav | 是 | 是 | 否 |
| `kasane_ar2` | .ar2, .idx | 是 | 是 | 否 |
| `kcap` | .tmp | 是 | 是 | 是 |
| `key_oggpak` | .tmp | 是 | 是 | 是 |
| `key_pak` | .dat | 是 | 是 | 否 |
| `kid_datraw` | .dat | 是 | 是 | 否 |
| `kid_klz` | .klz, .tm2 | 是 | 是 | 否 |
| `kid_lnk` | .tmp | 是 | 是 | 是 |
| `kid_p2t` | .p2t, .bin, .dat | 是 | 是 | 否 |
| `kirikiri_tlg_arc` | .dat | 是 | 是 | 否 |
| `kirikiri_xpk` | .tmp | 是 | 是 | 是 |
| `kiss_arc` | .arc, .tmp | 是 | 是 | 是 |
| `kogado_lpk` | .lpk, .tmp | 是 | 是 | 是 |
| `kscript_kpc` | .tmp | 是 | 是 | 是 |
| `kurumi_mpk` | .mpk | 是 | 是 | 否 |
| `lambda_cls` | .tmp | 是 | 是 | 是 |
| `lambda_lax` | .dat | 是 | 是 | 否 |
| `lazycrew_dat` | .dat | 是 | 是 | 否 |
| `leaf_am` | .tmp | 是 | 是 | 是 |
| `leaf_ar2` | .tmp | 是 | 是 | 是 |
| `leaf_lac` | .tmp | 是 | 是 | 是 |
| `leaf_leafpack` | .tmp | 是 | 是 | 是 |
| `leaf_pak_lac` | .tmp | 是 | 是 | 是 |
| `leaf_sdat` | .dat | 是 | 是 | 否 |
| `leaf_tex` | .tmp | 是 | 是 | 是 |
| `liar_lwg` | .dat | 是 | 是 | 否 |
| `liar_xfl` | .xfl, .tmp | 是 | 是 | 是 |
| `libido_arc` | .tmp | 是 | 是 | 是 |
| `liddell_flk` | .flk | 是 | 是 | 否 |
| `lightvn_mcdat` | .dat | 是 | 是 | 否 |
| `lilim_abm_arc` | .dat | 是 | 是 | 否 |
| `lilim_aos` | .tmp | 是 | 是 | 是 |
| `lilim_aos2` | .aos, .cmp, .abm, .tmp | 是 | 是 | 是 |
| `lilim_fga` | .fga | 是 | 是 | 否 |
| `littlewitch_dat` | .dat | 是 | 是 | 否 |
| `littlewitch_repi` | .dat | 是 | 是 | 否 |
| `livemaker_galx` | .tmp | 是 | 是 | 是 |
| `livemaker_vf` | .dat | 是 | 是 | 否 |
| `lucifen_lpk` | .elg | 是 | 是 | 否 |
| `lunasoft_pac` | .tmp | 是 | 是 | 是 |
| `lune_pack` | .dat, .wda, .bgm, .scr, .msk, .tmp | 是 | 是 | 是 |
| `macromedia_dxr` | .dxr, .cxt, .cct, .dcr, .dir, .exe | 是 | 是 | 否 |
| `macromedia_swf` | .swf | 是 | 是 | 否 |
| `mages_arc20` | .tmp | 是 | 是 | 是 |
| `mages_farc` | .tmp | 是 | 是 | 是 |
| `mages_gpda` | .tmp | 是 | 是 | 是 |
| `mages_gtf` | .dat | 是 | 是 | 否 |
| `mages_loveonce` | .dat | 是 | 是 | 否 |
| `mages_mpk` | .tmp | 是 | 是 | 是 |
| `mai_arc` | .tmp | 是 | 是 | 是 |
| `maika_bk` | .gpa | 是 | 是 | 否 |
| `maika_mik01` | .tmp | 是 | 是 | 是 |
| `maika_mk2` | .dat | 是 | 是 | 否 |
| `majiro` | .tmp | 是 | 是 | 是 |
| `malie_lib` | .tmp | 是 | 是 | 是 |
| `malie_libu` | .tmp | 是 | 是 | 是 |
| `mangagamer_mgpk` | .tmp | 是 | 是 | 是 |
| `mangagamer_sha` | .tmp | 是 | 是 | 是 |
| `marble_dns` | .s, .tmp | 是 | 是 | 是 |
| `marble_gra` | .bmp | 是 | 是 | 否 |
| `marron_cpn` | .cpn, .dat, .tmp | 是 | 是 | 是 |
| `masys_mgd` | .dat | 是 | 是 | 否 |
| `masys_mgs` | .wav, .mid | 是 | 是 | 否 |
| `mbl` | .mbl, .dns, .tmp | 是 | 是 | 是 |
| `microvision_arc` | .dat | 是 | 是 | 否 |
| `microvision_gsd` | .tmp | 是 | 是 | 是 |
| `mink_grp` | .msc, .tmp | 是 | 是 | 是 |
| `miris_dat` | .dat | 是 | 是 | 否 |
| `miris_glnk` | .tmp | 是 | 是 | 是 |
| `misc_bin` | .bin | 是 | 是 | 否 |
| `mixwill_arc0` | .tmp | 是 | 是 | 是 |
| `mnoviolet_mnv` | .dat, .tmp | 是 | 是 | 是 |
| `mnp_mma` | .tmp | 是 | 是 | 是 |
| `moonhir_fpk` | .dat | 是 | 是 | 否 |
| `moonstone_datatop` | .tmp | 是 | 是 | 是 |
| `morning_pak` | .tmp | 是 | 是 | 是 |
| `morning_ttd` | .frc, .tmp | 是 | 是 | 是 |
| `mpk` | .mpk, .tmp | 是 | 是 | 是 |
| `musica_ani` | .tmp | 是 | 是 | 是 |
| `musica_mip` | .png | 是 | 是 | 否 |
| `musica_paz` | .png, .ogg, .sc, .avi, .mpg, .mpeg | 是 | 是 | 否 |
| `musica_sqz` | .dat | 是 | 是 | 否 |
| `myadv_pac` | .pac | 是 | 是 | 否 |
| `nags_nfs` | .nfs, .scb | 是 | 是 | 否 |
| `nejii_cdt` | .cdt, .pdt, .vdt, .ovd | 是 | 是 | 否 |
| `nejii_pcd` | .pcd | 是 | 是 | 否 |
| `nekonovel_nkpack` | .nkpack | 是 | 是 | 否 |
| `nekopack` | .tmp | 是 | 是 | 是 |
| `nekopunch_pak` | .tmp | 是 | 是 | 是 |
| `nekosdk_dat` | .dat | 是 | 是 | 否 |
| `nekosdk_nekopack4` | .dat | 是 | 是 | 否 |
| `nekowerks_exfs` | .tmp | 是 | 是 | 是 |
| `nexton_lst` | .lst | 是 | 是 | 否 |
| `nipponichi_casn` | .dat | 是 | 是 | 否 |
| `nipponichi_psfs` | .tmp | 是 | 是 | 是 |
| `nitroplus_npa_sg` | .npa | 是 | 是 | 是 |
| `nitroplus_npasg` | .npa | 是 | 是 | 是 |
| `nitroplus_npk` | .dat | 是 | 是 | 是 |
| `nitroplus_npp` | .tmp | 是 | 是 | 是 |
| `nitroplus_pak` | .dat | 是 | 是 | 否 |
| `noesis_iga` | .s | 是 | 是 | 否 |
| `noncolor_acv` | .dat | 是 | 是 | 否 |
| `noncolor_arc` | .dat | 是 | 是 | 否 |
| `nonono_npf` | .dat | 是 | 是 | 否 |
| `npa` | .png, .jpg, .jpeg, .bmp, .tga, .webp | 是 | 是 | 是 |
| `ns2` | .ns2, .tmp | 是 | 是 | 是 |
| `nsa` | .nsa, .nbz, .bmp, .tmp | 是 | 是 | 是 |
| `nsystem_fjsys` | .tmp | 是 | 是 | 是 |
| `oneup_arc` | .tmp | 是 | 是 | 是 |
| `origin_gaf` | .dat | 是 | 是 | 否 |
| `origin_hed` | .dat, .hed, .tmp | 是 | 是 | 是 |
| `otemoto_tlz` | .dat | 是 | 是 | 否 |
| `pac` | .tmp | 是 | 是 | 是 |
| `packdat` | .pak, .dat | 是 | 是 | 否 |
| `pajamas_gamedat` | .tmp | 是 | 是 | 是 |
| `pak0` | .dat | 是 | 是 | 否 |
| `palette_chr` | .tmp | 是 | 是 | 是 |
| `palette_filepack` | .tmp | 是 | 是 | 是 |
| `palette_pack2` | .tmp | 是 | 是 | 是 |
| `palette_pga` | .dat | 是 | 是 | 否 |
| `palmtree_ar` | .arc | 是 | 是 | 否 |
| `pandora_pbx` | .tmp | 是 | 是 | 是 |
| `paprika_pkdat` | .dat | 是 | 是 | 否 |
| `parsley_cg` | .dat | 是 | 是 | 否 |
| `parsley_cg2` | .dat | 是 | 是 | 否 |
| `parsley_cg3` | .tmp | 是 | 是 | 是 |
| `parsley_pac` | .tmp | 是 | 是 | 是 |
| `parsley_pcg` | .dat | 是 | 是 | 否 |
| `parsley_ucg` | .tmp | 是 | 是 | 是 |
| `patisserie_oz` | .tmp | 是 | 是 | 是 |
| `patisserie_raw` | .tmp | 是 | 是 | 是 |
| `pck` | .pck, .dat, .tmp | 是 | 是 | 是 |
| `penguinworks_dat` | .tmp | 是 | 是 | 是 |
| `penguinworks_pac` | .pac, .tmp | 是 | 是 | 是 |
| `pfs` | .tmp | 是 | 是 | 是 |
| `pinesoft_voice` | .tmp | 是 | 是 | 是 |
| `pkware_zip` | .dat | 是 | 是 | 是 |
| `plantech_pac` | .dat | 是 | 是 | 否 |
| `pmaster_dat` | .dat | 是 | 是 | 否 |
| `pochette_pac` | .idx, .pac, .tmp | 是 | 是 | 是 |
| `primel_pcf` | .dat | 是 | 是 | 否 |
| `propeller_mgr` | .mgr | 是 | 是 | 否 |
| `psp_qpk` | .qpk | 是 | 是 | 否 |
| `purple_msk0` | .dat | 是 | 是 | 否 |
| `qlie` | .tmp | 是 | 是 | 是 |
| `qlie_abmp7` | .png, .bmp, .jpg, .ogg, .argb | 是 | 是 | 否 |
| `qlie_argb` | .dat | 是 | 是 | 否 |
| `qlie_dpng` | .dat | 是 | 是 | 否 |
| `reallive_koe` | .tmp | 是 | 是 | 是 |
| `reallive_ovk` | .ovk, .nwk, .tmp | 是 | 是 | 是 |
| `reallive_owp` | .dat | 是 | 是 | 否 |
| `renpy_rpa` | .tmp | 是 | 是 | 是 |
| `riddle_pac1` | .tmp | 是 | 是 | 是 |
| `rits_saf` | .dat | 是 | 是 | 否 |
| `rpm_arc` | .arc | 是 | 是 | 否 |
| `rsystem_rad` | .rad, .tmp | 是 | 是 | 是 |
| `rugp_rio` | .ici | 是 | 是 | 否 |
| `rune_yk` | .dat | 是 | 是 | 否 |
| `ruri_kbm` | .tmp | 是 | 是 | 是 |
| `sar` | .sar, .nsa, .dat, .tmp | 是 | 是 | 是 |
| `sas5_gar` | .dat | 是 | 是 | 否 |
| `sas5_iar` | .tmp | 是 | 是 | 是 |
| `sas5_sec5` | .tmp | 是 | 是 | 是 |
| `sas5_war` | .ogg, .wav, .tmp | 是 | 是 | 是 |
| `sas5_war2` | .dat | 是 | 是 | 否 |
| `sceneplayer_pma` | .pma | 是 | 是 | 否 |
| `sceneplayer_pmx` | .pmx | 是 | 是 | 否 |
| `scoop_gx` | .dat | 是 | 是 | 否 |
| `scrplayer_pack` | .tmp | 是 | 是 | 是 |
| `seen` | .tmp | 是 | 是 | 是 |
| `seraphim_arch` | .dat | 是 | 是 | 否 |
| `seraphim_cp3` | .dat | 是 | 是 | 否 |
| `seraphim_mc` | .dat | 是 | 是 | 否 |
| `seraphim_scn` | .dat | 是 | 是 | 否 |
| `seraphim_voice` | .dat | 是 | 是 | 否 |
| `shapeshifter_bnd` | .bnd | 是 | 是 | 是 |
| `shiina_chd` | .dat | 是 | 是 | 否 |
| `shiina_ogv` | .dat | 是 | 是 | 否 |
| `shiina_s25` | .dat | 是 | 是 | 否 |
| `shiina_war10` | .dat | 是 | 是 | 否 |
| `shsystem_him4` | .dat | 是 | 是 | 否 |
| `shsystem_him5` | .dat | 是 | 是 | 否 |
| `silky` | .arc, .tmp | 是 | 是 | 是 |
| `silky_ai6win` | .arc, .tmp | 是 | 是 | 是 |
| `silky_awf` | .awf, .mp3 | 是 | 是 | 否 |
| `silky_azurite` | .arc | 是 | 是 | 否 |
| `silky_ifl` | .dat | 是 | 是 | 否 |
| `silky_mfg` | .dat | 是 | 是 | 否 |
| `slg_spd` | .spl | 是 | 是 | 否 |
| `slg_szs` | .tmp | 是 | 是 | 是 |
| `softpal` | .pac, .tmp | 是 | 是 | 是 |
| `softpal_bgm` | .tmp | 是 | 是 | 是 |
| `softpal_bpic` | .dat | 是 | 是 | 否 |
| `softpal_pac2` | .tmp | 是 | 是 | 是 |
| `softpal_vafs` | .wav, .tmp | 是 | 是 | 是 |
| `sohfu_dtl` | .dat | 是 | 是 | 否 |
| `sohfu_ska` | .tmp | 是 | 是 | 是 |
| `sophia_nor` | .nor, .dat | 是 | 是 | 否 |
| `spack` | .tmp | 是 | 是 | 是 |
| `speed_rec` | .tmp | 是 | 是 | 是 |
| `stack_gpk` | .dat | 是 | 是 | 否 |
| `strikes_pck` | .dat | 是 | 是 | 否 |
| `studioego_ant` | .dat | 是 | 是 | 否 |
| `studioego_dat` | .dat | 是 | 是 | 是 |
| `studioego_dat0` | .dat | 是 | 是 | 是 |
| `studiosakura_dat` | .pr3 | 是 | 是 | 否 |
| `succubus` | .tmp | 是 | 是 | 是 |
| `sviu_pkz` | .dat | 是 | 是 | 否 |
| `sysd_dpk` | .tmp | 是 | 是 | 是 |
| `sysd_dwv` | .dat | 是 | 是 | 否 |
| `tactics_arc2` | .dat | 是 | 是 | 否 |
| `tactics_yu` | .dll | 是 | 是 | 否 |
| `tail_pkg` | .tmp | 是 | 是 | 是 |
| `tamasoft_epk` | .tmp | 是 | 是 | 是 |
| `tanaka_bmx` | .tmp | 是 | 是 | 是 |
| `tanaka_mbf` | .dat | 是 | 是 | 否 |
| `tanaka_smv` | .tmp | 是 | 是 | 是 |
| `tanaka_vpk` | .tmp | 是 | 是 | 是 |
| `tanaka_wsm0` | .tmp | 是 | 是 | 是 |
| `tanaka_wsm1` | .tmp | 是 | 是 | 是 |
| `tanaka_wsm2` | .dat | 是 | 是 | 否 |
| `tanaka_wsm4` | .dat | 是 | 是 | 否 |
| `tanaka_wvx` | .tmp | 是 | 是 | 是 |
| `tanukisoft_tac` | .af, .png, .bmp, .jpg, .jpeg, .tga | 是 | 是 | 否 |
| `taskforce` | .tmp | 是 | 是 | 是 |
| `techgian` | .tmp | 是 | 是 | 是 |
| `techgian_bin` | .tmp | 是 | 是 | 是 |
| `technobrain_ipq` | .dat | 是 | 是 | 否 |
| `tetratech_bnd` | .bnd | 是 | 是 | 是 |
| `tigerman_chr` | .chr, .cls, .ev | 是 | 是 | 否 |
| `tigerman_pac` | .pac | 是 | 是 | 是 |
| `tmr_hiro_pac` | .ogg, .grd, .srp | 是 | 是 | 否 |
| `tonko_mpk` | .dat | 是 | 是 | 否 |
| `topcat_tcd1` | .tmp | 是 | 是 | 是 |
| `topcat_tcd3` | .tct, .tsf, .spd, .ogg, .wav | 是 | 是 | 否 |
| `triangle_bmx` | .fx, .gx | 是 | 是 | 否 |
| `triangle_cgf` | .iaf | 是 | 是 | 否 |
| `triangle_dat` | .tmp | 是 | 是 | 是 |
| `triangle_iaf` | .iaf | 是 | 是 | 否 |
| `triangle_sud` | .tmp | 是 | 是 | 是 |
| `types_arc` | .arc | 是 | 是 | 是 |
| `ucom_data` | .dat | 是 | 是 | 否 |
| `ucom_uk` | .tmp | 是 | 是 | 是 |
| `ugos_det` | .det, .nme, .atm, .at2 | 是 | 是 | 否 |
| `uma_cdt` | .cdt, .spt | 是 | 是 | 是 |
| `uma_sdt` | .sdt | 是 | 是 | 否 |
| `umesoft_bin` | .bin | 是 | 是 | 否 |
| `umesoft_mgx` | .tmp | 是 | 是 | 是 |
| `umesoft_pk` | .gpk, .tpk, .wpk, .mpk | 是 | 是 | 否 |
| `umpk` | .dat | 是 | 是 | 否 |
| `unison_vct` | .dat | 是 | 是 | 否 |
| `unity_assets` | .assets, .asset, .ress, .resource | 是 | 是 | 否 |
| `unity_bin` | .idx, .bin | 是 | 是 | 否 |
| `unity_bytes` | .dat | 是 | 是 | 否 |
| `unity_dsm` | .dat | 是 | 是 | 否 |
| `unity_fs` | .resource, .ress | 是 | 是 | 否 |
| `uran_ncl` | .ncl | 是 | 是 | 否 |
| `valkyria_am2` | .am2, .tmp | 是 | 是 | 是 |
| `valkyria_dat` | .dat | 是 | 是 | 否 |
| `valkyria_mal` | .dat | 是 | 是 | 否 |
| `valkyria_odn` | .odn, .dat, .pni | 是 | 是 | 否 |
| `vfs` | .dat | 是 | 是 | 否 |
| `vitamin_sbi` | .dat | 是 | 是 | 否 |
| `vnengine_axr` | .dat | 是 | 是 | 否 |
| `vnengine_zaw` | .dat | 是 | 是 | 否 |
| `weapon_voice` | .dat | 是 | 是 | 是 |
| `westgate_uca` | .uca, .arc | 是 | 是 | 否 |
| `westgate_usf` | .alh, .usf, .udc, .uwb, .arc | 是 | 是 | 否 |
| `westgate_uwf` | .uwf, .arc | 是 | 是 | 否 |
| `wildbug` | .dat | 是 | 是 | 否 |
| `wildbug_wbp` | .dat | 是 | 是 | 否 |
| `wildbug_wpn` | .dat | 是 | 是 | 否 |
| `will` | .s, .scr, .wsc, .ws2, .arc, .tmp | 是 | 是 | 是 |
| `will_pna` | .dat | 是 | 是 | 否 |
| `will_v2` | .ws2, .json, .arc, .ar2, .tmp | 是 | 是 | 是 |
| `will_wip` | .dat | 是 | 是 | 否 |
| `winters_cfp` | .tmp | 是 | 是 | 是 |
| `winters_dat` | .tmp | 是 | 是 | 是 |
| `winters_ifp` | .bmp, .png, .jpg, .tmp | 是 | 是 | 是 |
| `winters_ifx` | .ifx, .tmp | 是 | 是 | 是 |
| `xp3` | .xp3 | 是 | 是 | 是 |
| `xuse_bg` | .dat | 是 | 是 | 否 |
| `xuse_bin` | .tmp | 是 | 是 | 是 |
| `xuse_gd` | .gd, .dll, .tmp | 是 | 是 | 是 |
| `xuse_h` | .dat | 是 | 是 | 否 |
| `xuse_kotori` | .dat | 是 | 是 | 否 |
| `xuse_miko` | .dat | 是 | 是 | 否 |
| `xuse_p4ag` | .dat | 是 | 是 | 否 |
| `xuse_wvb` | .dat | 是 | 是 | 否 |
| `xuse_xarc` | .dat | 是 | 是 | 否 |
| `yanepack` | .tmp | 是 | 是 | 是 |
| `yanesdk_dat` | .dat | 是 | 是 | 否 |
| `yanesdk_hibiki` | .dat, .lst | 是 | 是 | 否 |
| `yatagarasu_pkg` | .pkg | 是 | 是 | 否 |
| `ykc` | .yks, .tmp | 是 | 是 | 是 |
| `youkai_dat` | .dat, .tmp | 是 | 是 | 是 |
| `youkai_snd` | .dat, .tmp | 是 | 是 | 是 |
| `youkai_voice` | .dat, .tmp | 是 | 是 | 是 |
| `yox` | .dat | 是 | 是 | 否 |
| `ypf` | .tmp | 是 | 是 | 是 |
| `yuka_ykg` | .dat | 是 | 是 | 否 |
| `yuris_ycg` | .dat | 是 | 是 | 否 |
| `yuris_ydg` | .dat | 是 | 是 | 否 |
| `zone_pkd` | .pkd | 是 | 是 | 是 |
| `zyx_bdf` | .dat | 是 | 是 | 否 |
| `zyx_mtl` | .dat | 是 | 是 | 否 |
---
## 目录结构
```text
Galgame-mcp/
src/ # MCP TypeScript(stdio server)
dist/server.js # 编译入口
galgame_native/ # 算法、worker、re_tools、侧车逻辑
native/ # DLL/EXE 侧车 + re_tools 下载目录
README.md # 人类:安装 / 功能 / 封包全表
mcp-instructions.md # AI:MCP instructions + prompt galgame_workflow
mcp.example.json # 宿主配置示例
```
---
## 许可
第三方算法与工具保留原作者版权声明,见 `galgame_native/NOTICE`。
开源逆向套件按其原许可证使用;IDA / Binary Ninja 需自备授权。
TDQS
Scored across 99 tools
Many tools have overlapping purposes, such as multiple list/probe/extract tools (e.g., re_strings vs xp3_re_tpm_inspect, archive_list vs gal_list_dir). Despite detailed descriptions, the sheer number and similar names make it hard for an agent to pick the correct tool without reading every description.
Tool names use various inconsistent prefixes (re_, xp3_re_, kirikiri_, vnt_, vntextpatch_, native_, etc.) and mix verb-first and noun-first patterns. While subsets are internally consistent, the overall naming lacks a unified scheme, making it difficult to predict tool names.
With 99 tools, this server is extreme in size. Even for a broad domain like Galgame reverse engineering and translation, this number overwhelms an agent's selection process and suggests insufficient consolidation.
The tool set covers an impressively wide range of operations: archive manipulation, reverse engineering, script/text extraction, translation workflows, and native sidecar management. Minor gaps exist (e.g., some niche formats or automation steps), but overall it is a comprehensive surface for the domain.