gdb-multiarch-mcp
gdb-multiarch-mcp
MCP-сервер (Model Context Protocol), который предоставляет ИИ-ассистентам, таким как Claude, прямой доступ к gdb-multiarch для отладки исполняемых файлов Nintendo Switch, запущенных в Yuzu или на реальной консоли с GDB-заглушкой.
Построенный на базе Ipiano/gdb-mcp, этот форк добавляет инструменты отладки, специфичные для Switch: точки останова по смещению, патчинг инструкций (NOP/stub/замена), трассировку стека по указателю кадра и локализацию адресов — всё относительно базового адреса игры ($main).
Что он делает
Когда Claude (или любой другой MCP-клиент) вызывает switch_start_session, сервер:
Запускает
gdb-multiarchвнутри WSLЗагружает команды отладки Switch (
.gdbinit.switch)Подключается к GDB-заглушке через
target extended-remoteОжидает запуска приложения и подключается к нему
Автоматически устанавливает
$mainна базовый адресcross2_Release.nss
После этого все стандартные операции GDB и инструменты для Switch становятся доступны через вызовы инструментов MCP.
Предварительные требования
Windows с WSL —
gdb-multiarchработает внутри WSL (протестировано на Debian)gdb-multiarch, установленный в WSL (
sudo apt install gdb-multiarch)Python 3.10+ в WSL
GDB-заглушка — либо встроенная в Yuzu, либо консоль Switch с sys-gdbstub
Claude Code (или любой другой MCP-совместимый клиент)
Установка
1. Установите gdb-multiarch в WSL
wsl -d Debian
sudo apt install gdb-multiarch2. Установите MCP-сервер
В Windows выполните:
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'Или изнутри WSL:
pip install -e /mnt/c/path/to/gdb-multiarch-mcp3. Добавьте в 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"Или вручную добавьте в ваш файл .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. Проверка
claude mcp listВы должны увидеть gdb-multiarch: ... - Connected.
Конфигурация
Установите следующие переменные окружения в WSL для настройки подключения:
Переменная | По умолчанию | Описание |
|
| IP-адрес GDB-заглушки Switch/Yuzu |
|
| Порт GDB-заглушки |
|
| Путь к бинарному файлу gdb-multiarch |
|
| Уровень логирования (DEBUG, INFO, WARNING, ERROR) |
Чтобы задать их, добавьте env в вашу конфигурацию MCP:
{
"mcpServers": {
"gdb-multiarch": {
"type": "stdio",
"command": "wsl.exe",
"args": ["..."],
"env": {
"SWITCH_IP": "192.168.1.100",
"SWITCH_PORT": "22225"
}
}
}
}Доступные инструменты
Управление сессией
Инструмент | Описание |
| Подключиться к Switch/Yuzu, прикрепиться к игре, установить |
| Отключиться и выполнить очистку |
Инструменты отладки Switch
Инструмент | Описание |
| Установить точку останова по адресу |
| Инструкция NOP по смещению (записывает |
| Заглушка функции по смещению (записывает |
| Заменить инструкцию по смещению произвольным значением |
| Получить PC как смещение относительно |
| Преобразовать абсолютный адрес в смещение относительно |
| Трассировка стека с абсолютными адресами (обход по указателю кадра) |
| Трассировка стека со смещениями относительно |
| Комбинированный: смещение PC + смещение LR + полная трассировка стека |
| Шестнадцатеричный дамп памяти |
| Дамп 4 исходных инструкций по смещению для последующего восстановления |
Стандартные инструменты GDB
Также доступны все стандартные инструменты gdb-mcp:
Инструмент | Описание |
| Выполнить любую команду GDB (CLI или MI) |
| Установить точку останова по функции/файлу:строке/адресу |
| Список всех точек останова |
| Удалить точку останова по номеру |
| Включить точку останова |
| Отключить точку останова |
| Продолжить выполнение |
| Шаг с заходом |
| Шаг без захода |
| Приостановить выполнение программы |
| Стандартная трассировка стека GDB |
| Список потоков |
| Переключиться на поток |
| Выбрать кадр стека |
| Информация о текущем кадре |
| Вычислить выражение C/C++ |
| Локальные переменные для кадра |
| Значения регистров процессора |
| Вызвать функцию в целевом процессе |
| Статус сессии |
Устранение неполадок
Ошибка "No route to host" при подключении
Сеть в WSL может быть капризной. Попробуйте:
Убедитесь, что SSH запущен в WSL:
sudo service ssh startПроверьте соединение:
nc -vz <switch_ip> 22225Добавьте маршрут, если нужно:
sudo ip route add 192.168.1.0/24 via <gateway_ip>Проксирование порта из Windows PowerShell:
netsh interface portproxy add v4tov4 listenport=22225 listenaddress=127.0.0.1 connectport=22225 connectaddress=<switch_ip>GDB-заглушка не отвечает
Убедитесь, что игра запущена в Yuzu/Switch до вызова
switch_start_sessionПроверьте, что GDB-заглушка Yuzu включена в
Emulation > Configure > Debug > Enable GDB Stub
Сессия уже запущена
Сначала вызовите switch_stop_session, затем снова switch_start_session.
Авторы
Ipiano/gdb-mcp от Andrew Stelter — исходный MCP-сервер для GDB, на котором построен этот проект
Coolsonickirby/smash-ultimate-research-setup — модифицированные
.gdbinit.switchиattach.py(скрипт автоподключения), используемые в этом проектеblujay — оригинальные команды
.gdbinit.switchGradualSyrup —
print_addr_setup.py(разрешение адреса в смещение)Gdbinit от mammon_, elaine, pusillus, mong, zhang le, l0kit, truthix, fG!, gln — расширенная конфигурация
.gdbinit
Лицензия
MIT — см. 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