Skip to main content
Glama
retrace-mcp

retrace-mcp

by anthoo582

Retrace MCP

Ingeniería inversa verificable de Nintendo 64 y PlayStation 2 dentro de tu agente de IA.

Version MCP Node Python Tests License

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, devuelve UNSUPPORTED. Nunca se simula un resultado.


Contenido


Related MCP server: Antardrishti

Estado

Componente

Estado

Servidor MCP TypeScript (src/index.ts)

Implementación de referencia · 76 tools registradas · transporte stdio · 78 tests Vitest

Python auxiliar (src/mips/py)

Bridge Capstone invocado por TypeScript; requiere RETRACE_PYTHON con Capstone

Servidor Python alternativo (src/retrace_mcp)

Compatibilidad/investigación; no es la instalación MCP principal

Skills de ingeniería (skills/)

23 procedimientos especializados

Diagramas

Fuentes .drawio + PNG en docs/diagrams

Decisión de stack

TypeScript es la implementación principal (ADR-005); Python se conserva como sidecar de análisis

Diagnóstico

npm run probe y la tool retrace_probe

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 evidence y limitations.

  • 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: false con un código de error verificable, nunca una respuesta inventada.


Arquitectura

Capas principales:

Capa

Ruta

Responsabilidad

Transporte MCP

src/index.ts

Registro de tools y conexión stdio/JSON-RPC

Tools

src/tools/**

Validación Zod, permisos y respuestas ok/fail

Dominio

src/parsers, src/mips, src/memory, src/graphics, src/audio, src/compare, src/port, src/knowledge, src/build

Análisis puro, sin I/O de red

Infraestructura

src/security/paths.ts, src/core/exec.ts, src/config.ts

Rutas, ejecución sin shell y límites

Evidencia

src/core/evidence.ts

Formato uniforme de resultado

Sidecar

src/retrace_mcp/**, src/python/**

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

retrace_probe, retrace_skill_list, retrace_skill_read, retrace_limits

4

Repositorio

repo_inspect, repo_get_architecture, repo_search_code, repo_find_references, repo_find_dependencies, repo_get_file_history

6

N64 ROM

rom_inspect, rom_identify_format, rom_find_code_regions, rom_compare

4

ELF PS2

elf_inspect, elf_list_sections, elf_list_symbols, elf_find_function

4

MIPS

mips_disassemble, mips_analyze_function, mips_reconstruct_function

3

Comparación N64/PS2

compare_functions, compare_rank, equivalence_record, equivalence_list

4

Portabilidad

port_project_plan, binary_translate, port_validate_translation

3

Intake y toolchains

project_intake, rom_validate, toolchain_probe

3

Orquestación

analyze_n64_rom, split_rom, ghidra_import, ghidra_analyze, decompile_function, recompile_rom, diff_function, generate_ps2_project, create_ps2_project, build_ps2, run_pcsx2, save_finding

12

Autopilot

project_autopilot, project_state

2

Variables y ABI

infer_variables, infer_structs, suggest_variable_names, validate_variable_map

4

Memoria y crashes

memory_inspect_region, memory_check_alignment, memory_analyze_overlap, crash_analyze

4

Gráficos

texture_inspect, texture_analyze_palette, texture_decode_n64, texture_decode_ps2

4

Audio

audio_inspect, audio_decode_vag_block, audio_decode_file

3

Decomp config

decomp_config_inspect, decomp_config_validate, decomp_config_propose_changes, decomp_config_apply_changes

4

Knowledge Graph

graph_node_upsert, graph_edge_upsert, graph_query_neighbors, graph_ingest

4

Reportes y build

generate_forensic_report, build_analyze, build_run

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

  1. Intake y validación — project_intake, rom_validate, toolchain_probe, retrace_probe.

  2. Inspección binaria — rom_inspect, rom_identify_format, rom_find_code_regions, elf_inspect, elf_list_symbols.

  3. Análisis y evidencia — mips_disassemble, mips_analyze_function, ghidra_import, graph_ingest, compare_functions, equivalence_record.

  4. Traducción y proyecto — port_project_plan, binary_translate, generate_ps2_project, decomp_config_apply_changes, split_rom.

  5. 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) y RETRACE_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: false y timeout (RETRACE_COMMAND_TIMEOUT_MS).

  • Escrituras: solo tools de escritura, con RETRACE_ALLOW_WRITE=1, apply/confirm y writeFileGuarded. Los archivos originales no se sobrescriben.

  • Sin simulación: una dependencia ausente se informa como dependency_missing; un formato no soportado, como UNSUPPORTED.


Instalación

Requisitos

  • Node.js >= 20 y npm.

  • Python >= 3.10 con capstone y pyelftools para 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 probe

Para instalar el paquete publicado sin clonar el repositorio:

npm install -g @anthoo582/retrace-mcp
retrace-mcp

npm run probe comprueba Node, workspace, límites y adaptadores externos. Para arrancar el servidor:

node dist/index.js

Python 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 stdio

pyelftools 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

RETRACE_WORKSPACE / RETRACE_ROOTS

cwd

Roots permitidos, separados por path.delimiter (; en Windows, : en Unix)

RETRACE_DATA_DIR

~/.retrace

Grafo de conocimiento, equivalencias y hallazgos

RETRACE_ALLOW_WRITE

0

1 o true habilita tools de escritura

RETRACE_MAX_FILE_BYTES

536870912

Tamaño máximo de archivo leído

RETRACE_MAX_SCAN_FILES

20000

Máximo de archivos al escanear un repo

RETRACE_COMMAND_TIMEOUT_MS

60000

Timeout de procesos externos

RETRACE_PYTHON

python

Intérprete para el sidecar

RETRACE_HTTP_HOST

127.0.0.1

Host HTTP opcional

RETRACE_HTTP_PORT

—

Activa transporte HTTP si está definido

RETRACE_HTTP_PATH

/mcp

Ruta HTTP del servidor MCP


Conexión a clientes MCP

Configuraciones listas en configs/:

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."

elf_inspect + elf_list_symbols

"Identifica el formato de esta ROM N64."

rom_identify_format

"Desensambla la función en 0x80000400 como R4300i."

mips_disassemble

"Busca referencias a main_func."

repo_find_references

"¿Estas dos funciones son candidatas a equivalencia?"

compare_functions + compare_rank

"Prepara un port de N64 a PS2 y traduce estas palabras MIPS."

port_project_plan + binary_translate + port_validate_translation

"¿Qué tengo instalado y puedo empezar?"

project_intake + rom_validate + toolchain_probe

"Guarda este hallazgo en el grafo."

graph_node_upsert + graph_edge_upsert

"Genera un reporte forense del análisis."

generate_forensic_report

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 diagramas

Documentación

Documento

Contenido

docs/ARCHITECTURE.md

Capas, flujo de una tool y modelo de certeza

docs/TOOLS.md

Catálogo de las 76 tools y política de escritura

docs/VERIFIED-STATUS.md

Conteos reproducibles, entorno y límites conocidos

docs/SKILLS.md

Las 23 skills y su procedencia

docs/COMPARISON_ENGINE.md

Normalización, métricas y niveles de equivalencia

docs/KNOWLEDGE_GRAPH.md

Nodos, aristas e ingestión

docs/INTEGRATIONS.md

Herramientas externas y licencias

docs/AUDIT.md

Auditoría del entorno

docs/ROADMAP.md

Próximos pasos y límites

docs/installation.md

Instalación por cliente

reports/Portabilidad N64 a PS2.md

Investigación y hoja de ruta del port

CHANGELOG.md

Historial de versiones

Los diagramas son generados desde un único modelo:

pip install -e ".[graphics]"
python scripts/build_diagrams.py

Eso 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 -q

Estado esperado: 78 tests Vitest y 40 tests pytest en verde.

Reglas del repositorio:

  • master es la rama de integración. Trabaja en work/<area> y actualiza con rebase.

  • Reclama una capacidad en coordination/STATUS.md antes 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 tools
analyze_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

    C2.7/5.0

    Scored across 76 tools

    Disambiguation2/5

    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.

    Naming Consistency3/5

    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.

    Tool Count1/5

    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.

    Completeness4/5

    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

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI assistants to perform headless reverse engineering of retro game ROMs using Ghidra, with automated platform detection and triage.
      1
      Apache 2.0
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables 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.
      1
      MIT
    • F
      license
      Not graded
      quality
      A
      maintenance
      Enables 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.
      -
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables 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 PyPI
      Apache 2.0