J-Link MCP — MCP-сервер для Claude Code: отладка прошивок
Подключает ИИ-ассистента к реальному железу через пробники SEGGER J-Link: чтение регистров, прошивка, RTT-логи и разбор падений Cortex-M.
claude mcp add --env JLINK_DEVICE=<JLINK_DEVICE> --env JLINK_SERIAL=<JLINK_SERIAL> --env SVD_PATH=<SVD_PATH> --env JLINK_RTT_ADDR=<JLINK_RTT_ADDR> --transport stdio j-link-mcp -- npx -y jlink-mcpЧто делает J-Link MCP
Сервер даёт ассистенту инструменты для работы с отладочным пробником: читать регистры и память, прошивать и сбрасывать устройство, стримить RTT-логи с поиском по уровню, модулю или регулярному выражению, останавливать и продолжать выполнение, ставить точки останова, поднимать GDB-сервер. Отдельная функция — diagnose_crash: она сама декодирует регистры ошибок ARM Cortex-M, разворачивает стек исключения и называет инструкцию, на которой всё упало.
Если указать CMSIS-SVD файл цели, периферийные регистры перестают быть просто шестнадцатеричными числами: сервер подставляет имена полей и значения перечислений из описания производителя. Помимо J-Link поддерживаются бэкенды OpenOCD (ST-Link, CMSIS-DAP, FTDI) и Black Magic Probe.
Что нужно заранее: установленный пакет SEGGER J-Link, Node 18+ и сам пробник, подключённый к цели на ARM Cortex-M. Для альтернативных бэкендов вместо этого понадобится OpenOCD или arm-none-eabi-gdb. Без JLINK_DEVICE сервер не поймёт, с какой микросхемой работать, поэтому переменную задают при регистрации.
Какие задачи решает
- разобрать HardFault и найти упавшую инструкцию
- прошить плату и сбросить её без ручного ввода команд
- отфильтровать RTT-лог по модулю или уровню
- прочитать периферийный регистр по имени поля из SVD
- поднять GDB-сессию для полноценной отладки
Примеры запросов агенту
- Продиагностируй падение: вызови
diagnose_crashи покажи, где упало - Прошей прошивку на моей nRF52840 и сбрось плату
- Покажи последние предупреждения из RTT-лога по модулю sensor_drv
Как установить J-Link MCP
Командой платформы
claude mcp add --env JLINK_DEVICE=<JLINK_DEVICE> --env JLINK_SERIAL=<JLINK_SERIAL> --env SVD_PATH=<SVD_PATH> --env JLINK_RTT_ADDR=<JLINK_RTT_ADDR> --transport stdio j-link-mcp -- npx -y jlink-mcpВместо <…> подставьте свои значения
Командой платформы
codex mcp add j-link-mcp --env JLINK_DEVICE=<JLINK_DEVICE> --env JLINK_SERIAL=<JLINK_SERIAL> --env SVD_PATH=<SVD_PATH> --env JLINK_RTT_ADDR=<JLINK_RTT_ADDR> -- npx -y jlink-mcpВместо <…> подставьте свои значения
Файл настроек
{
"mcpServers": {
"j-link-mcp": {
"command": "npx",
"args": [
"-y",
"jlink-mcp"
],
"env": {
"JLINK_DEVICE": "<JLINK_DEVICE>",
"JLINK_SERIAL": "<JLINK_SERIAL>",
"SVD_PATH": "<SVD_PATH>",
"JLINK_RTT_ADDR": "<JLINK_RTT_ADDR>"
}
}
}
}Вместо <…> подставьте свои значения
Файл настроек
{
"servers": {
"j-link-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"jlink-mcp"
],
"env": {
"JLINK_DEVICE": "<JLINK_DEVICE>",
"JLINK_SERIAL": "<JLINK_SERIAL>",
"SVD_PATH": "<SVD_PATH>",
"JLINK_RTT_ADDR": "<JLINK_RTT_ADDR>"
}
}
}
}Вместо <…> подставьте свои значения
Командой платформы
gemini mcp add -e JLINK_DEVICE=<JLINK_DEVICE> -e JLINK_SERIAL=<JLINK_SERIAL> -e SVD_PATH=<SVD_PATH> -e JLINK_RTT_ADDR=<JLINK_RTT_ADDR> j-link-mcp npx -y jlink-mcpВместо <…> подставьте свои значения
По шагам, с командами для каждой платформы: Как подключить MCP-сервер: Claude Code, Codex, Cursor, VS Code, Gemini CLI и другие
Вопросы о J-Link MCP
Как установить J-Link MCP в Claude Code?
Через маркетплейс плагинов: сначала claude mcp add jlink-mcp -e JLINK_DEVICE=<JLINK_DEVICE> -- npx -y jlink-mcp. Есть и вариант с дополнительными переменными: `claude mcp add --env JLINK_DEVICE=<JLINK_DEVICE> --env JLINK_SERIAL=<JLINK_SERIAL> --env SVD_PATH=<SVD_PATH> --env JLINK_RTT_ADDR=<JLINK_RTT_ADDR> --transport stdio j-link-mcp -- npx -y jlink-mcp`.
Что делает J-Link MCP?
Соединяет ИИ-ассистента с отладочным пробником SEGGER J-Link: чтение регистров и памяти, прошивка, RTT-логи, управление выполнением, GDB-сервер и автоматический разбор ошибок Cortex-M.
Какие бэкенды поддерживаются кроме J-Link?
OpenOCD с пробниками ST-Link, CMSIS-DAP и FTDI, а также Black Magic Probe. Для них нужен OpenOCD или arm-none-eabi-gdb.