gdb-multiarch-mcp
gdb-multiarch-mcp
Un servidor MCP (Model Context Protocol) que brinda a asistentes de IA como Claude acceso directo a gdb-multiarch para depurar ejecutables de Nintendo Switch que se ejecutan en Yuzu o en una consola real con un stub de GDB.
Construido sobre Ipiano/gdb-mcp, este fork añade herramientas de depuración específicas para Switch para puntos de interrupción basados en desplazamiento, parcheo de instrucciones (NOP/stub/reemplazo), seguimientos de pila de puntero de marco y localización de direcciones, todo relativo a la dirección base del juego ($main).
Qué hace
Cuando Claude (o cualquier cliente MCP) llama a switch_start_session, el servidor:
Inicia
gdb-multiarchdentro de WSLCarga los comandos de depuración de Switch (
.gdbinit.switch)Se conecta al stub de GDB mediante
target extended-remoteEspera a que la aplicación se inicie y se adjunta a ella
Establece automáticamente
$mainen la dirección base decross2_Release.nss
A partir de ahí, todas las operaciones estándar de GDB y las herramientas específicas de Switch están disponibles a través de llamadas a herramientas MCP.
Requisitos previos
Windows con WSL —
gdb-multiarchse ejecuta dentro de WSL (probado con Debian)gdb-multiarch instalado en WSL (
sudo apt install gdb-multiarch)Python 3.10+ en WSL
Un stub de GDB — ya sea el stub de GDB integrado de Yuzu o una Switch con sys-gdbstub
Claude Code (o cualquier cliente compatible con MCP)
Instalación
1. Instalar gdb-multiarch en WSL
wsl -d Debian
sudo apt install gdb-multiarch2. Instalar el servidor MCP
Desde Windows, ejecuta:
wsl.exe -d Debian -e bash -c 'export PATH=$HOME/.local/bin:$PATH && pip install --break-system-packages -e /mnt/c/path/to/gdb-multiarch-mcp'O desde dentro de WSL:
pip install -e /mnt/c/path/to/gdb-multiarch-mcp3. Añadir a Claude Code
claude mcp add gdb-multiarch -s user -- wsl.exe -d Debian -e bash -c "export PATH=\$HOME/.local/bin:\$PATH && python3 -m gdb_multiarch_mcp"O añádelo manualmente a tu .claude.json:
{
"mcpServers": {
"gdb-multiarch": {
"type": "stdio",
"command": "wsl.exe",
"args": [
"-d", "Debian", "-e", "bash", "-c",
"export PATH=$HOME/.local/bin:$PATH && python3 -m gdb_multiarch_mcp"
]
}
}
}4. Verificar
claude mcp listDeberías ver gdb-multiarch: ... - Connected.
Configuración
Establece estas variables de entorno en WSL para personalizar la conexión:
Variable | Predeterminado | Descripción |
|
| Dirección IP del stub de GDB de la Switch/Yuzu |
|
| Puerto del stub de GDB |
|
| Ruta al binario de gdb-multiarch |
|
| Nivel de registro (DEBUG, INFO, WARNING, ERROR) |
Para configurarlas, añade env a tu configuración de MCP:
{
"mcpServers": {
"gdb-multiarch": {
"type": "stdio",
"command": "wsl.exe",
"args": ["..."],
"env": {
"SWITCH_IP": "192.168.1.100",
"SWITCH_PORT": "22225"
}
}
}
}Herramientas disponibles
Gestión de sesiones
Herramienta | Descripción |
| Conectar a la Switch/Yuzu, adjuntar al juego, establecer |
| Desconectar y limpiar |
Herramientas de depuración de Switch
Herramienta | Descripción |
| Establecer punto de interrupción en |
| Instrucción NOP en el desplazamiento (escribe |
| Función stub en el desplazamiento (escribe |
| Reemplazar instrucción en el desplazamiento con un valor arbitrario |
| Obtener PC como desplazamiento relativo a |
| Convertir dirección absoluta a desplazamiento relativo a |
| Seguimiento de pila como direcciones absolutas (recorrido de puntero de marco) |
| Seguimiento de pila con desplazamientos relativos a |
| Combinado: desplazamiento de PC + desplazamiento de LR + seguimiento de pila completo |
| Volcado hexadecimal de memoria |
| Volcar 4 instrucciones originales en el desplazamiento para restaurarlas después |
Herramientas estándar de GDB
Todas las herramientas estándar de gdb-mcp también están disponibles:
Herramienta | Descripción |
| Ejecutar cualquier comando GDB (CLI o MI) |
| Establecer punto de interrupción en función/archivo:línea/dirección |
| Listar todos los puntos de interrupción |
| Eliminar punto de interrupción por número |
| Habilitar punto de interrupción |
| Deshabilitar punto de interrupción |
| Continuar ejecución |
| Entrar en (step into) |
| Pasar por encima (step over) |
| Pausar programa en ejecución |
| Seguimiento de pila estándar de GDB |
| Listar hilos |
| Cambiar a hilo |
| Seleccionar marco de pila |
| Información del marco actual |
| Evaluar expresión C/C++ |
| Variables locales para un marco |
| Valores de registros de CPU |
| Llamar a función en el proceso objetivo |
| Estado de la sesión |
Solución de problemas
"No route to host" al conectar
La red de WSL puede ser complicada. Intenta:
Confirmar que SSH se está ejecutando en WSL:
sudo service ssh startProbar conectividad:
nc -vz <switch_ip> 22225Añadir una ruta si es necesario:
sudo ip route add 192.168.1.0/24 via <gateway_ip>Proxy de puerto desde Windows PowerShell:
netsh interface portproxy add v4tov4 listenport=22225 listenaddress=127.0.0.1 connectport=22225 connectaddress=<switch_ip>El stub de GDB no responde
Asegúrate de que el juego se esté ejecutando en Yuzu/Switch antes de llamar a
switch_start_sessionVerifica que el stub de GDB de Yuzu esté habilitado en
Emulation > Configure > Debug > Enable GDB Stub
Sesión ya en ejecución
Llama primero a switch_stop_session y luego a switch_start_session de nuevo.
Créditos
Ipiano/gdb-mcp por Andrew Stelter — el servidor MCP ascendente para GDB sobre el que se construye este proyecto
Coolsonickirby/smash-ultimate-research-setup — el
.gdbinit.switchmodificado yattach.py(script de auto-adjuntar) utilizados en este proyectoblujay — los comandos originales de
.gdbinit.switchGradualSyrup —
print_addr_setup.py(resolución de dirección a desplazamiento)Gdbinit por mammon_, elaine, pusillus, mong, zhang le, l0kit, truthix, fG!, gln — la configuración extendida de
.gdbinit
Licencia
MIT — ver LICENSE.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sbergeron42/gdb-multiarch-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server