retrace-mcp
Provides tools for reverse engineering PlayStation 2 ELF executables, including ELF inspection, section/segment/symbol listing, function lookup, and MIPS R5900 disassembly.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@retrace-mcp Inspect this PS2 ELF and list its symbols"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Retrace MCP
Ingeniería inversa verificable de Nintendo 64 y PlayStation 2 dentro de tu agente de IA.
Retrace es un servidor Model Context Protocol (MCP) para analizar ROMs de Nintendo 64, ejecutables ELF de PlayStation 2 y binarios MIPS (R4300i y R5900). Expone parsers, desensamblado, memoria, gráficos, audio, comparación de funciones, un grafo de conocimiento y un pipeline de portabilidad N64 → PS2. Cada respuesta incluye datos, evidencia y límites explícitos: el agente puede investigar un binario sin inventar lo que no puede probar.
Diseñado para evidencia, no para demos. Si falta una dependencia, una tool devuelve
dependency_missing. Si un formato no está implementado, devuelveUNSUPPORTED. Nunca se simula un resultado.
Contenido
Related MCP server: Antardrishti
Estado
Componente | Estado |
Servidor MCP TypeScript ( | Implementación de referencia · 76 tools registradas · transporte stdio · 78 tests Vitest |
Python auxiliar ( | Bridge Capstone invocado por TypeScript; requiere |
Servidor Python alternativo ( | Compatibilidad/investigación; no es la instalación MCP principal |
Skills de ingeniería ( | 23 procedimientos especializados |
Diagramas | Fuentes |
Decisión de stack | TypeScript es la implementación principal (ADR-005); Python se conserva como sidecar de análisis |
Diagnóstico |
|
Runtimes | Node.js >= 20 y Python >= 3.10 |
Principios de diseño
Evidencia antes que nombres. Un símbolo, un string o una heurística no prueban comportamiento. Las respuestas incluyen
evidenceylimitations.Solo lectura por defecto. ROMs, ELFs y dumps se abren como datos; nunca se ejecuta código extraído de ellos.
Una implementación por capacidad. El servidor TypeScript es la referencia; el sidecar Python aporta Capstone/pyelftools cuando corresponde.
Sin datos de juegos en el repositorio. No hay ROMs, BIOS, ISOs ni assets. Los fixtures de test son sintéticos.
Fallar de forma explícita.
ok: falsecon un código de error verificable, nunca una respuesta inventada.
Arquitectura
Capas principales:
Capa | Ruta | Responsabilidad |
Transporte MCP |
| Registro de tools y conexión stdio/JSON-RPC |
Tools |
| Validación Zod, permisos y respuestas |
Dominio |
| Análisis puro, sin I/O de red |
Infraestructura |
| Rutas, ejecución sin shell y límites |
Evidencia |
| Formato uniforme de resultado |
Sidecar |
| Capstone, pyelftools y análisis opcional |
Cada tool se registra con registerTool, valida su esquema con Zod y resuelve
rutas mediante resolveInWorkspace. Las lecturas pasan por readFileCapped y
las escrituras requieren RETRACE_ALLOW_WRITE=1 más confirmación explícita.
Secuencia de una llamada
El orden es deliberado: primero se valida el esquema, después la ruta, después el tamaño. El motor de análisis no toca la red. El sidecar es opcional y, si no está disponible, la respuesta lo declara en vez de degradar silenciosamente.
Capacidades y herramientas
76 tools MCP agrupadas por subsistema:
Subsistema | Herramientas | Nº |
Sistema |
| 4 |
Repositorio |
| 6 |
N64 ROM |
| 4 |
ELF PS2 |
| 4 |
MIPS |
| 3 |
Comparación N64/PS2 |
| 4 |
Portabilidad |
| 3 |
Intake y toolchains |
| 3 |
Orquestación |
| 12 |
Autopilot |
| 2 |
Variables y ABI |
| 4 |
Memoria y crashes |
| 4 |
Gráficos |
| 4 |
Audio |
| 3 |
Decomp config |
| 4 |
Knowledge Graph |
| 4 |
Reportes y build |
| 3 |
Cada tool devuelve un sobre uniforme:
{
"ok": true,
"data": {},
"evidence": [],
"limitations": []
}o, en caso de error:
{
"ok": false,
"error": { "code": "dependency_missing", "message": "capstone is not installed" }
}El catálogo detallado, parámetros y política de escritura viven en
docs/TOOLS.md. Los 23 procedimientos de ingeniería están en
docs/SKILLS.md y se leen con retrace_skill_list /
retrace_skill_read.
Flujo de portabilidad N64 a PS2
Intake y validación —
project_intake,rom_validate,toolchain_probe,retrace_probe.Inspección binaria —
rom_inspect,rom_identify_format,rom_find_code_regions,elf_inspect,elf_list_symbols.Análisis y evidencia —
mips_disassemble,mips_analyze_function,ghidra_import,graph_ingest,compare_functions,equivalence_record.Traducción y proyecto —
port_project_plan,binary_translate,generate_ps2_project,decomp_config_apply_changes,split_rom.Build y validación —
build_ps2,build_run,port_validate_translation,emulator-hardware-validation,generate_forensic_report.
Regla de oro: confirmed solo se escribe con equivalence_record y
evidencia no vacía. La similitud estructural no es equivalencia semántica. Toda
escritura exige RETRACE_ALLOW_WRITE=1 y confirmación explícita.
Seguridad y límites
Path traversal: toda ruta se resuelve contra los workspace roots; una ruta externa devuelve
PATH_OUTSIDE_WORKSPACE.Límite de lectura:
RETRACE_MAX_FILE_BYTES(512 MiB por defecto) yRETRACE_MAX_SCAN_FILES(20 000 por defecto).Binarios no confiables: se parsean como datos; nunca se ejecutan.
Herramientas externas: se invocan como procesos conocidos, con argumentos validados,
shell: falsey timeout (RETRACE_COMMAND_TIMEOUT_MS).Escrituras: solo tools de escritura, con
RETRACE_ALLOW_WRITE=1,apply/confirmywriteFileGuarded. Los archivos originales no se sobrescriben.Sin simulación: una dependencia ausente se informa como
dependency_missing; un formato no soportado, comoUNSUPPORTED.
Instalación
Requisitos
Node.js >= 20 y npm.
Python >= 3.10 con
capstoneypyelftoolspara el sidecar de análisis.Opcionales: binutils MIPS, radare2, Ghidra, toolchain PS2, PCSX2. Se detectan en runtime y su ausencia no se simula.
Servidor TypeScript (recomendado)
git clone https://github.com/anthoo582/retrace-mcp.git
cd retrace-mcp
npm ci
npm run build
npm run probePara instalar el paquete publicado sin clonar el repositorio:
npm install -g @anthoo582/retrace-mcp
retrace-mcpnpm run probe comprueba Node, workspace, límites y adaptadores externos.
Para arrancar el servidor:
node dist/index.jsPython bridge y servidor alternativo
El servidor oficial sigue siendo node dist/index.js. Para las tools MIPS,
TypeScript ejecuta bajo demanda src/mips/py/mips_disasm.py con el intérprete
definido por RETRACE_PYTHON; ese bridge requiere capstone instalado.
El paquete src/retrace_mcp es un servidor MCP Python alternativo, conservado
para compatibilidad e investigación. No es necesario para arrancar el servidor
TypeScript ni debe confundirse con la instalación principal.
python -m venv .venv
# Windows (PowerShell)
.venv\Scripts\Activate.ps1
# Linux / macOS
source .venv/bin/activate
pip install -e ".[dev]"
python -m retrace_mcp --transport stdiopyelftools se usa en el servidor Python alternativo y en validaciones auxiliares;
el parser ELF principal del servidor TypeScript está en src/parsers/elf.ts.
Variables de entorno
Variable | Default | Uso |
|
| Roots permitidos, separados por |
|
| Grafo de conocimiento, equivalencias y hallazgos |
|
|
|
|
| Tamaño máximo de archivo leído |
|
| Máximo de archivos al escanear un repo |
|
| Timeout de procesos externos |
|
| Intérprete para el sidecar |
|
| Host HTTP opcional |
| — | Activa transporte HTTP si está definido |
|
| Ruta HTTP del servidor MCP |
Conexión a clientes MCP
Configuraciones listas en configs/:
OpenCode —
configs/opencode.json. Copia el bloquemcp.retracea tuopencode.json.Claude Code —
configs/claude.mcp.json. Renómbralo a.mcp.jsonen la raíz del proyecto o usaclaude mcp add.Codex —
configs/codex.config.toml. Fusiona el bloque[mcp_servers.retrace]en~/.codex/config.toml.
Ejemplo para OpenCode (ajusta las rutas absolutas):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"retrace": {
"type": "local",
"command": ["node", "C:/ruta/a/retrace-mcp/dist/index.js"],
"enabled": true,
"environment": {
"RETRACE_WORKSPACE": "C:/ruta/a/tu/proyecto",
"RETRACE_PYTHON": "python"
}
}
}
}Guías paso a paso en docs/installation.md.
Uso
Con el servidor conectado, el agente dispone de las tools como funciones. Frases típicas y tools que resuelven cada una:
Pregunta del agente | Tools |
"Inspecciona este ELF y lista sus símbolos." |
|
"Identifica el formato de esta ROM N64." |
|
"Desensambla la función en |
|
"Busca referencias a |
|
"¿Estas dos funciones son candidatas a equivalencia?" |
|
"Prepara un port de N64 a PS2 y traduce estas palabras MIPS." |
|
"¿Qué tengo instalado y puedo empezar?" |
|
"Guarda este hallazgo en el grafo." |
|
"Genera un reporte forense del análisis." |
|
Antes de una sesión de reversing conviene ejecutar retrace_probe: informa
versión, roots, política de escritura y adaptadores disponibles.
Estructura del repositorio
src/
index.ts # arranque MCP y registro de las 76 tools
tools/ # validación y superficie MCP por subsistema
parsers/ # N64 ROM, ELF, símbolos
mips/ # desensamblado, análisis y reconstrucción
memory/ # regiones, alineación, overlap y crashes
graphics/ # texturas N64 RDP y PS2 GS
audio/ # VADPCM N64 y VAG PS2
compare/ # comparación estructural N64/PS2
port/ # plan de portabilidad y traducción binaria
knowledge/ # grafo de conocimiento e ingestión
build/ # análisis y ejecución de builds
reports/ # reportes forenses
adapters/ # detección de herramientas externas
core/ # evidencia y ejecución sin shell
security/ # resolución segura de rutas
retrace_mcp/ # sidecar Python (servidor alternativo)
python/retrace_analysis/ # motores Python: capstone, pyelftools
skills/ # 23 skills de ingeniería
tests/ # vitest (TypeScript) y pytest (Python)
docs/
diagrams/ # fuentes .drawio + PNG generados
assets/ # logo en pixel art
configs/ # ejemplos para OpenCode, Claude Code y Codex
scripts/ # probe y generador de diagramasDocumentación
Documento | Contenido |
Capas, flujo de una tool y modelo de certeza | |
Catálogo de las 76 tools y política de escritura | |
Conteos reproducibles, entorno y límites conocidos | |
Las 23 skills y su procedencia | |
Normalización, métricas y niveles de equivalencia | |
Nodos, aristas e ingestión | |
Herramientas externas y licencias | |
Auditoría del entorno | |
Próximos pasos y límites | |
Instalación por cliente | |
Investigación y hoja de ruta del port | |
Historial de versiones |
Los diagramas son generados desde un único modelo:
pip install -e ".[graphics]"
python scripts/build_diagrams.pyEso reescribe los PNG y los .drawio de docs/diagrams. El
script requiere Pillow (extra graphics).
Desarrollo y verificación
npm ci
npm run typecheck
npm test
python -m pytest tests -qEstado esperado: 78 tests Vitest y 40 tests pytest en verde.
Reglas del repositorio:
masteres la rama de integración. Trabaja enwork/<area>y actualiza con rebase.Reclama una capacidad en
coordination/STATUS.mdantes de implementarla.No se commitean ROMs, BIOS, ISOs, assets de juegos ni secretos.
No se agrega una segunda implementación de una capacidad existente.
Protocolo completo en docs/coordination/PROTOCOL.md.
Licencia
MIT. Consulta LICENSE.
Retrace no distribuye ni incluye datos de juegos. Las herramientas externas
(binutils, radare2, Ghidra, toolchains, emuladores) se invocan como procesos
opcionales y conservan sus propias licencias; la procedencia se documenta en
docs/INTEGRATIONS.md.
Available Tools
76 toolsanalyze_n64_romB
Analyze an authorized local N64 ROM and produce format, region, entrypoint, checksum, code-region and string metadata.
Inputs: romPath (required), maxStrings.
audio_decode_fileA
Decode a PS2 VAG/VAGi or N64 AIFC VADPCM file to 16-bit PCM WAV. N64 decoding requires the file's own VADPCMCODES codebook and refuses to invent one.
Inputs: path (required), apply, format, outPath.
audio_decode_vag_blockB
Decode a 16-byte Sony PS2 VAG ADPCM block into 28 linear 16-bit PCM samples.
Inputs: hex (required).
audio_inspectB
Inspect an audio asset file (PS2 VAG, N64 bank, or raw ADPCM) to detect sample rate, channels, and compression.
Inputs: path (required).
binary_translateA
Translate encoding-preserving MIPS words between N64 and PS2 endian representations. Refuses console-specific instructions unless explicitly allowed.
Inputs: hex (required), sourcePlatform (required), targetPlatform (required), apply, +2 more.
build_analyzeA
Inspect real build manifests and report build systems, scripts, targets, toolchain hints and safety warnings without executing commands.
Inputs: root.
build_ps2B
Build a PS2 port workspace through the existing allowlisted build runner. Requires explicit confirmation and RETRACE_ALLOW_WRITE=1.
Inputs: confirm (required), portPath (required), args, command.
build_runA
Run one allowlisted build command with shell:false, a workspace-bound cwd, a timeout and no shell metacharacters. Requires RETRACE_ALLOW_WRITE=1 and confirm=true.
Inputs: command (required), confirm (required), cwd, args, +1 more.
compare_functionsB
Compare two functions across N64 (R4300i) and PS2 (R5900) by canonical instruction shape. Returns exact|structural|probable|unknown and never claims confirmed equivalence.
Inputs: target (required), candidate (required), stackFrameTarget, stackFrameCandidate.
compare_rankC
Rank candidate functions against a reference by canonical instruction-shape similarity.
Inputs: target (required), candidates (required), limit.
crash_analyzeA
Analyze a crash log or register dump from PCSX2 or an N64 emulator: parses PC, RA, SP, BadVAddr, correlates symbols, and formulates hypotheses.
Inputs: arch (required), logText (required).
create_ps2_projectC
Alias with an explicit pipeline name for generating the guarded PS2SDK project scaffold.
Inputs: outputDir (required), projectName (required), apply.
decomp_config_apply_changesB
Apply an approved modification proposal to a decompilation configuration file. Requires RETRACE_ALLOW_WRITE=1.
Inputs: path (required), apply (required), address (required), symbolName (required).
decomp_config_inspectB
Inspect a decompilation configuration file (YAML, JSON, splat) for functions, segments, and symbols.
Inputs: path (required).
decomp_config_propose_changesB
Prepare a safe proposed modification to a decompilation config and inspect the unified diff before applying.
Inputs: path (required), address (required), symbolName (required).
decomp_config_validateC
Validate the syntax and structure of a decompilation configuration file.
Inputs: path (required).
decompile_functionB
Run m2c over an authorized assembly file and return candidate C plus raw diagnostics. Candidate code is never treated as recovered source.
Inputs: assemblyPath (required), cwd, address.
diff_functionC
Compare two MIPS function byte strings using the internal canonical diff engine and return an explicit unverified match level.
Inputs: targetHex (required), candidateHex (required), arch, targetAddress, +1 more.
elf_find_functionC
Locate a function by virtual address within a PS2 ELF binary.
Inputs: path (required), address (required).
elf_inspectA
Inspect a PlayStation 2 or MIPS ELF executable: header, machine type, entry point, section count, segment count.
Inputs: path (required).
elf_list_sectionsA
List all sections in a PlayStation 2 ELF binary with memory addresses, sizes, and permissions.
Inputs: path (required).
elf_list_symbolsB
List symbols from .symtab and .dynsym of a PS2 ELF binary.
Inputs: path (required), kind.
equivalence_listC
List recorded confirmed N64<->PS2 equivalences for a workspace.
Inputs: file, n64Name, ps2Name, workspace.
equivalence_recordA
Record a CONFIRMED N64<->PS2 function equivalence with mandatory evidence. Only this tool can mark equivalence as confirmed.
Inputs: confirm (required), n64Name (required), ps2Name (required), evidence (required), +9 more.
generate_forensic_reportB
Generate a structured forensic investigation report as Markdown, JSON, or both. The default is read-only; writing files requires RETRACE_ALLOW_WRITE=1 and write=true.
Inputs: title (required), conclusion (required), build, risks, +15 more.
generate_ps2_projectC
Generate a minimal PS2 port scaffold with CMake, a C entrypoint and an explicit pending-layer checklist.
Inputs: outputDir (required), projectName (required), apply.
ghidra_analyzeC
Run the same reproducible Ghidra Headless import/analyze step under an explicit tool name for pipeline orchestration.
Inputs: project (required), inputPath (required), apply.
ghidra_importB
Import and analyze an authorized ROM/ELF using Ghidra Headless. Requires explicit write confirmation because Ghidra creates a project.
Inputs: project (required), romPath (required), apply.
graph_edge_upsertC
Add or update a relationship edge between two nodes in the Knowledge Graph.
Inputs: to (required), from (required), relationship (required), props.
graph_ingestB
Ingest an ELF, an N64 ROM, or a symbol table into the Knowledge Graph. Extracts only what is actually parsed; no code is decompiled during ingestion.
Inputs: kind (required), path, text, source.
graph_node_upsertC
Add or update a node in the project Knowledge Graph (file, function, symbol, structure, texture, audio, crash).
Inputs: id (required), type (required), label (required), props.
graph_query_neighborsB
Query related nodes in the Knowledge Graph up to a given depth (e.g. what textures does this function render? What crashes are linked to this address?).
Inputs: nodeId (required), depth.
infer_structsC
Group repeated base-register offsets into candidate structs and fields for N64-to-PS2 variable translation.
Inputs: hex (required), arch, address.
infer_variablesB
Infer stack locals, globals, arguments, returns and register roles from MIPS dataflow observations. Results are candidates with evidence, not automatic source edits.
Inputs: hex (required), arch, address.
iso_verifyB
Verify a PS2 ISO with an installed ISO reader and confirm that SYSTEM.CNF and BOOT.ELF are present. This is a filesystem gate, not a gameplay claim.
Inputs: isoPath (required), expectedSha256.
memory_analyze_overlapC
Detect memory layout collisions between buffers, heaps, display lists, and texture staging areas.
Inputs: regions (required).
memory_check_alignmentB
Check a pointer for 4-byte or 8-byte alignment, nullness, and architectural valid range.
Inputs: arch (required), address (required).
memory_inspect_regionA
Inspect a virtual memory address: checks which region it belongs to (RDRAM, KSEG, Main RAM, GS registers, VRAM) on N64 or PS2.
Inputs: arch (required), address (required).
mips_analyze_functionB
Analyze a MIPS function: detects stack frame size, saved registers (ra, s0-s7, fp), calls, jumps, basic blocks and pseudocode.
Inputs: hex (required), arch, address.
mips_disassembleA
Disassemble raw MIPS machine code instructions (R4300i for N64 big-endian or R5900 for PS2 little-endian) using Capstone engine.
Inputs: hex (required), arch, endian, address.
mips_reconstruct_functionA
Reconstruct a function's structure from MIPS instructions: CFG edges, stack frame, saved registers, parameters, loops and heuristic pseudo-C. Never claims to be original source.
Inputs: hex (required), abi, arch, name, +1 more.
package_ps2_isoC
Build a PS2 ISO from an authorized ELF and project tree using mkisofs/genisoimage. The source tree and SYSTEM.CNF remain in the project.
Inputs: confirm (required), elfPath (required), outputIso (required), projectRoot (required).
port_project_planC
Build an evidence-driven N64/PS2 porting plan with ISA, ABI, runtime, asset and validation gates.
Inputs: sourcePlatform (required), targetPlatform (required).
port_source_manifestC
Verify that a port project contains inspectable generated source, translated variables and provenance before packaging an ISO.
Inputs: projectRoot (required), sourceDir.
port_startC
Create a resumable, evidence-driven N64-to-PS2 port job. It preserves the ROM and never claims a port before validation.
Inputs: romPath (required), projectRoot (required), confirm, profile.
port_statusB
Read the last persisted port job, including blocked stages, tool versions, artifacts and source provenance.
Inputs: projectRoot (required).
port_validate_translationB
Validate that a supported N64/PS2 encoding translation round-trips exactly; this is not a semantic equivalence proof.
Inputs: hex (required), sourcePlatform (required), targetPlatform (required).
project_autopilotB
Plan or execute the evidence-driven N64-to-PS2 pipeline. It runs only installed adapters and records blocked stages instead of simulating results.
Inputs: romPath (required), projectRoot (required), mode, confirm, +2 more.
project_intakeC
Create a read-only, reproducible intake record for an authorized N64 to PS2 port project.
Inputs: name (required), sourcePlatform (required), targetPlatform (required), rightsConfirmed (required), +2 more.
project_stateC
Read or persist the reproducible project manifest used by the N64-to-PS2 autopilot.
Inputs: action (required), projectRoot (required), state, confirm.
recompile_romC
Run the installed N64Recomp CLI with an authorized config. Returns generated output and diagnostics; it never claims a PS2 port.
Inputs: romPath (required), outputDir (required), configPath (required), apply.
repo_find_dependenciesC
Analyze dependencies declared in build files (Make, CMake, Cargo, npm) in the repository.
Inputs: root.
repo_find_referencesB
Find literal references to a symbol or identifier across repository source files without executing project code.
Inputs: symbol (required), root, maxResults.
repo_get_architectureB
Summarize the repository architecture from its real files: languages, build systems, binaries, symbol/config files, directory ownership and Git state.
Inputs: root, maxFiles.
repo_get_file_historyC
Get git commit history for a file in the repository.
Inputs: path (required), maxCommits.
repo_inspectB
Inspect the workspace repository: file tree, detected languages, build tools, binary assets and architecture summary.
Inputs: root, maxFiles.
repo_search_codeC
Search repository code files for symbol names, function signatures, or string patterns.
Inputs: query (required), root, maxResults.
retrace_limitsA
Show the active safety limits and the level classification of an operation before doing anything destructive.
Inputs: no named parameters.
retrace_probeA
Diagnose the Retrace installation: Node version, workspace roots, write policy, external analyzer availability (Capstone, binutils, radare2, Ghidra, PS2 toolchain, emulators) and the number of registered tools. Run this first in any session.
Inputs: refresh.
retrace_skill_listA
List the bundled engineering skills (hardware, reverse engineering, graphics, audio, build/validation) with their purpose and path.
Inputs: no named parameters.
retrace_skill_readB
Read the full instructions of one bundled skill before performing the matching engineering task.
Inputs: name (required).
rom_compareA
Compare two N64 ROM versions byte-by-byte and report segment differences.
Inputs: pathA (required), pathB (required).
rom_find_code_regionsB
Scan an N64 ROM for executable MIPS code regions using prologue patterns.
Inputs: path (required), maxBytes.
rom_identify_formatA
Identify byte-order format of an N64 ROM without reading entire file.
Inputs: path (required).
rom_inspectB
Inspect an N64 ROM file: detects byte-order format (.z64, .v64, .n64), parses header, entry point, CRC and ROM name.
Inputs: path (required).
rom_validateB
Validate a local N64 ROM header, byte order, checksum metadata and hash without copying or modifying it.
Inputs: path (required), requireChecksum.
run_pcsx2B
Launch an authorized PS2 ELF with the installed PCSX2 adapter after explicit confirmation; captures are not claimed unless the configured CLI emits them.
Inputs: confirm (required), elfPath (required), args, timeoutMs.
save_findingC
Persist an attributed reverse-engineering finding in the workspace knowledge graph.
Inputs: notes (required), function (required), symbols, workspace.
split_romB
Run the installed splat CLI against a versioned config and return the generated tree. Dry-run is the default.
Inputs: romPath (required), outputDir (required), configPath (required), apply.
suggest_variable_namesC
Return evidence-ranked names for inferred variables without modifying source files.
Inputs: variables (required), context.
texture_analyze_paletteB
Analyze an N64 TLUT palette buffer: count transparent vs opaque colors, unique colors, and hex values.
Inputs: hex (required), endian.
texture_decode_n64C
Decode raw N64 texture data into RGBA pixels and PNG image.
Inputs: size (required), width (required), format (required), height (required), +2 more.
texture_decode_ps2B
Decode a PS2 GS texture (PSMCT32/16/16S, PSMT8/4) from swizzled or linear data, optionally with a CSM2 CLUT, into RGBA and PNG.
Inputs: psm (required), width (required), height (required), dataHex (required), +3 more.
texture_inspectB
Calculate N64 texture metadata (format, size, required buffer bytes, completeness) based on format code, size code, width and height.
Inputs: width (required), height (required), sizeCode (required), formatCode (required), +2 more.
toolchain_probeC
Probe optional N64 reversing and PS2 development tools and report which automated stages are actually available.
Inputs: refresh, sourcePlatform, targetPlatform.
validate_variable_mapC
Validate inferred variable names, offsets, widths and conflicting observations before an ABI translation is reviewed.
Inputs: variables (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 76 tools
Many tools overlap heavily: ghidra_import and ghidra_analyze are explicit aliases, generate_ps2_project and create_ps2_project duplicate the same scaffold generation, and port_start/project_intake/project_autopilot project_state/port_status are hard to distinguish. Several analysis tools also overlap, such as compare_functions, diff_function, compare_rank, and port_validate_translation, making tool selection error-prone despite generally detailed descriptions.
All names use snake_case, which helps, but conventions are mixed: some are verb_noun (generate_forensic_report, analyze_n64_rom, validate_variable_map), others are noun_verb or domain-first (rom_inspect, elf_list_sections, texture_decode_n64, project_intake). Explicit aliases with different naming styles further weaken predictability.
With 76 tools, the surface is far beyond a well-scoped set and includes multiple aliases and redundant pipeline names. For a reverse-engineering/porting server this is an extreme count mismatch, even if the domain is broad.
Coverage is unusually broad across ROM/ELF inspection, MIPS analysis, memory/crash analysis, textures/audio, config editing, graph knowledge, build/run, porting, and ISO packaging/verification. Only minor lifecycle gaps remain, such as graph node deletion, asset encoding, or direct patching operations.
Maintenance
Related MCP Connectors
Evidence-oriented REA + Ghidra static-analysis workflows, read-only PE32 and Delphi VMT tools.
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Machine-native research commons for agent evidence, discovery, rooms, and bounded research quests.
AI Agent Utility Layer for agent safety, web monitoring, crypto research and tool discovery.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to perform headless reverse engineering of retro game ROMs using Ghidra, with automated platform detection and triage.1Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to locally analyze and reverse engineer binaries through a compact 12-tool MCP interface for triage, function discovery, disassembly/decompilation, cross-references, strings/imports, call graphs, memory reads, annotations, and binary diffs.1MIT
- FlicenseNot gradedqualityAmaintenanceEnables AI agents to import, disassemble, and debug binaries directly so they can perform cross-reference reasoning, rename stripped functions, and recover structure layouts during native reverse-engineering workflows. It integrates with offline ELF reconnaissance output to support symbol and struct recovery without opening the Ghidra GUI.-
- AlicenseNot gradedqualityBmaintenanceEnables an AI agent to reverse-engineer a compiled program with Ghidra — inspecting decompiled code, instructions, callers, memory bytes, and strings — without any source code. Every reply is labelled as fact, computed, or guess, and each claim traces back to hash-checked saved evidence.82 PyPIApache 2.0