dbgprobe-mcp-server — Claude Code MCP server: what it does and install
Connects AI assistants to hardware debug probes over the MCP protocol. It lets agents flash target chips, inspect memory, and set breakpoints from conversation.
claude mcp add --env DBGPROBE_BACKEND=<DBGPROBE_BACKEND> --env DBGPROBE_MCP_LOG_LEVEL=<DBGPROBE_MCP_LOG_LEVEL> --env DBGPROBE_JLINK_PATH=<DBGPROBE_JLINK_PATH> --env DBGPROBE_JLINK_GDBSERVER_PATH=<DBGPROBE_JLINK_GDBSERVER_PATH> --env DBGPROBE_JLINK_DEVICE=<DBGPROBE_JLINK_DEVICE> --transport stdio dbgprobe-mcp-server -- uvx dbgprobe-mcp-serverWhat dbgprobe-mcp-server does
The server runs via stdio and translates model tool calls into hardware probe operations. Currently, SEGGER J-Link units are functional. Agents obtain structured tools prefixed with dbgprobe. to halt cores, step instructions, erase flash, and read target RAM. Backends for OpenOCD and pyOCD are planned for later releases.
Beyond basic memory readouts, it loads ELF binaries to resolve symbol addresses and parses SVD descriptions. This lets the agent query peripheral registers by hardware name rather than raw hexadecimal offsets. It also captures target RTT streams.
Without the official SEGGER J-Link Software Pack containing JLinkExe, the server fails to connect. In Cursor, you must configure DBGPROBE_MCP_TOOL_SEPARATOR=_ because the editor rejects standard dots in tool identifiers.
What it helps with
- flash binary or hex images to target microcontrollers
- inspect memory offsets and peripheral registers without external terminals
- attach ELF binaries to map symbols to memory locations
- stream hardware logs using RTT channels during test runs
Example prompts for the agent
- List attached J-Link probes and connect to the target board.
- Erase flash, upload
build/app.hex, and reset the microcontroller. - Load
target.svdand read the status register of USART1.
How to install dbgprobe-mcp-server
Platform CLI
claude mcp add --env DBGPROBE_BACKEND=<DBGPROBE_BACKEND> --env DBGPROBE_MCP_LOG_LEVEL=<DBGPROBE_MCP_LOG_LEVEL> --env DBGPROBE_JLINK_PATH=<DBGPROBE_JLINK_PATH> --env DBGPROBE_JLINK_GDBSERVER_PATH=<DBGPROBE_JLINK_GDBSERVER_PATH> --env DBGPROBE_JLINK_DEVICE=<DBGPROBE_JLINK_DEVICE> --transport stdio dbgprobe-mcp-server -- uvx dbgprobe-mcp-serverReplace <…> with your own values. 4 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from dbgprobe-mcp-server <command>
Platform CLI
codex mcp add dbgprobe-mcp-server --env DBGPROBE_BACKEND=<DBGPROBE_BACKEND> --env DBGPROBE_MCP_LOG_LEVEL=<DBGPROBE_MCP_LOG_LEVEL> --env DBGPROBE_JLINK_PATH=<DBGPROBE_JLINK_PATH> --env DBGPROBE_JLINK_GDBSERVER_PATH=<DBGPROBE_JLINK_GDBSERVER_PATH> --env DBGPROBE_JLINK_DEVICE=<DBGPROBE_JLINK_DEVICE> -- uvx dbgprobe-mcp-serverReplace <…> with your own values. 4 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from dbgprobe-mcp-server <command>
Config file
{
"mcpServers": {
"dbgprobe-mcp-server": {
"command": "uvx",
"args": [
"dbgprobe-mcp-server"
],
"env": {
"DBGPROBE_BACKEND": "<DBGPROBE_BACKEND>",
"DBGPROBE_MCP_LOG_LEVEL": "<DBGPROBE_MCP_LOG_LEVEL>",
"DBGPROBE_JLINK_PATH": "<DBGPROBE_JLINK_PATH>",
"DBGPROBE_JLINK_GDBSERVER_PATH": "<DBGPROBE_JLINK_GDBSERVER_PATH>",
"DBGPROBE_JLINK_DEVICE": "<DBGPROBE_JLINK_DEVICE>"
}
}
}
}Replace <…> with your own values. 4 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from dbgprobe-mcp-server <command>
Config file
{
"servers": {
"dbgprobe-mcp-server": {
"type": "stdio",
"command": "uvx",
"args": [
"dbgprobe-mcp-server"
],
"env": {
"DBGPROBE_BACKEND": "<DBGPROBE_BACKEND>",
"DBGPROBE_MCP_LOG_LEVEL": "<DBGPROBE_MCP_LOG_LEVEL>",
"DBGPROBE_JLINK_PATH": "<DBGPROBE_JLINK_PATH>",
"DBGPROBE_JLINK_GDBSERVER_PATH": "<DBGPROBE_JLINK_GDBSERVER_PATH>",
"DBGPROBE_JLINK_DEVICE": "<DBGPROBE_JLINK_DEVICE>"
}
}
}
}Replace <…> with your own values. 4 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from dbgprobe-mcp-server <command>
Platform CLI
gemini mcp add -e DBGPROBE_BACKEND=<DBGPROBE_BACKEND> -e DBGPROBE_MCP_LOG_LEVEL=<DBGPROBE_MCP_LOG_LEVEL> -e DBGPROBE_JLINK_PATH=<DBGPROBE_JLINK_PATH> -e DBGPROBE_JLINK_GDBSERVER_PATH=<DBGPROBE_JLINK_GDBSERVER_PATH> -e DBGPROBE_JLINK_DEVICE=<DBGPROBE_JLINK_DEVICE> dbgprobe-mcp-server uvx dbgprobe-mcp-serverReplace <…> with your own values. 4 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from dbgprobe-mcp-server <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about dbgprobe-mcp-server
How to install dbgprobe-mcp-server in Claude Code?
Run claude mcp add dbgprobe-mcp-server -- uvx dbgprobe-mcp-server. To configure custom paths or devices, provide them via --env, such as --env DBGPROBE_JLINK_PATH=<DBGPROBE_JLINK_PATH>.
Which debug probe hardware is currently supported?
The server currently works with SEGGER J-Link hardware such as EDU, PLUS, and PRO. Support for OpenOCD and pyOCD backends remains on the roadmap.
What software dependencies are required on the host machine?
You need Python 3.11 or later and the SEGGER J-Link Software Pack with JLinkExe installed. You can set DBGPROBE_JLINK_PATH if the executable is outside your system PATH.