Let AI agents interact with debug probes — connect, flash, read/write memory, and reset.
Let AI agents interact with debug probes — connect, flash, read/write memory, and reset. Exposed over MCP by the dbgprobe mcp server, that capability becomes something an assistant can invoke while it works, not something you go and do afterwards.
A stateful debug probe Model Context Protocol (MCP) server for developer tooling and AI agents. Works out of the box with Claude Code, VS Code with Copilot, and any MCP-compatible runtime. Communicates over stdio and drives on-chip debug probes (J-Link first, OpenOCD and pyOCD planned) to flash, debug, and inspect embedded targets.
Installation goes through your MCP client rather than a global install: point it at @modelcontextprotocol/inspector on npm and it is fetched when the client starts. The copy-paste blocks for Claude Desktop, Claude Code and Cursor are further down this page.
Everything the assistant can do here goes through one of these:
Category — ToolsProbe — dbgprobe.probes.list, dbgprobe.connect, dbgprobe.erase, dbgprobe.disconnect, dbgprobe.reset, dbgprobe.halt, dbgprobe.go, dbgprobe.stepIntrospection — dbgprobe.connections.listELF — dbgprobe.elf.attach, dbgprobe.elf.info, dbgprobe.elf.lookup, dbgprobe.elf.symbolsSVD — dbgprobe.svd.attach, dbgprobe.svd.info, dbgprobe.svd.read, dbgprobe.svd.write, dbgprobe.svd.set_field, dbgprobe.svd.update_fieldsRTT — dbgprobe.rtt.start, dbgprobe.rtt.stop, dbgprobe.rtt.read, dbgprobe.rtt.write, dbgprobe.rtt.statusPlugins — dbgprobe.plugin.list, dbgprobe.plugin.template, dbgprobe.plugin.load, dbgprobe.plugin.reloadTracing — dbgprobe.trace.status, dbgprobe.trace.tailDemo — Video walkthrough — connecting to a J-Link probe, flashing firmware, loading ELF and SVD for symbol-aware debuggingServer — The Server tool exposed by this serverYou will need 5 environment variables: DBGPROBE_JLINK_DEVICE, DBGPROBE_MCP_TOOL_SEPARATOR, PULL, DBGPROBE_JLINK_PATH, DBGPROBE_JLINK_GDBSERVER_PATH. Keep credentials in your client's env block or a secrets manager rather than in a file you might commit.
Plenty of developer tooling servers cover similar ground. The differences that matter in practice are scope of access and how much setup stands between you and a working tool call. Dbgprobe's toolset — Category, Probe, Introspection and 7 more — is a fair guide to whether it matches your workflow. It is maintained by es617; worth a glance at recent repository activity before you build anything load-bearing on it.
SyncDev reviews every entry in this directory against the project's own documentation before publishing, and revisits them as servers change.
| Tool | What it does |
|---|---|
| Category | Tools |
| Probe | dbgprobe.probes.list, dbgprobe.connect, dbgprobe.erase, dbgprobe.disconnect, dbgprobe.reset, dbgprobe.halt, dbgprobe.go, dbgprobe.step, dbgprobe.status, dbgprobe.flash, dbgprobe.mem.read, dbgprobe.mem.write, dbgprobe.bre |
| Introspection | dbgprobe.connections.list |
| ELF | dbgprobe.elf.attach, dbgprobe.elf.info, dbgprobe.elf.lookup, dbgprobe.elf.symbols |
| SVD | dbgprobe.svd.attach, dbgprobe.svd.info, dbgprobe.svd.read, dbgprobe.svd.write, dbgprobe.svd.set_field, dbgprobe.svd.update_fields, dbgprobe.svd.list_peripherals, dbgprobe.svd.list_registers, dbgprobe.svd.list_fields, dbg |
| RTT | dbgprobe.rtt.start, dbgprobe.rtt.stop, dbgprobe.rtt.read, dbgprobe.rtt.write, dbgprobe.rtt.status |
| Plugins | dbgprobe.plugin.list, dbgprobe.plugin.template, dbgprobe.plugin.load, dbgprobe.plugin.reload |
| Tracing | dbgprobe.trace.status, dbgprobe.trace.tail |
| Demo | [Video walkthrough](https://youtu.be/nLt0Vj8TAHs) — connecting to a J-Link probe, flashing firmware, loading ELF and SVD for symbol-aware debugging, RTT logging, and breakpoints. |
| Server | The Server tool exposed by this server. |
{
"mcpServers": {
"dbgprobe": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/inspector"],
"env": {
"DBGPROBE_JLINK_DEVICE": "your-value",
"DBGPROBE_MCP_TOOL_SEPARATOR": "your-value",
"PULL": "your-value",
"DBGPROBE_JLINK_PATH": "your-value",
"DBGPROBE_JLINK_GDBSERVER_PATH": "your-value"
}
}
}
}Add to claude_desktop_config.json, then restart Claude Desktop.
| Variable | Description | Required |
|---|---|---|
| DBGPROBE_JLINK_DEVICE | Configuration value read at startup. | Optional |
| DBGPROBE_MCP_TOOL_SEPARATOR | Configuration value read at startup. | Optional |
| PULL | Configuration value read at startup. | Optional |
| DBGPROBE_JLINK_PATH | Filesystem location the server is allowed to use. | Optional |
| DBGPROBE_JLINK_GDBSERVER_PATH | Filesystem location the server is allowed to use. | Optional |
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
GitHub's official server — repos, issues, pull requests, Actions and code security, straight from your assistant.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Local repository surgery — status, diffs, commits, branches and history for any repo on disk.
Timezone sanity for AI — current time anywhere and correct conversions, without the model doing date math.