Embedded Debugger MCP logo

Embedded Debugger MCP

by adancurusul

Rust MCP server for controlling, flashing, diagnosing, and communicating with supported embedded targets through probe-rs or OpenOCD.

Install Embedded Debugger MCP

Pick your client, then add it in one click or paste the config.

No confirmed install command yet

We only publish a config when the install details come from the project itself — its README, its docs, or a verified owner. We haven’t found those for adancurusul/embedded-debugger-mcp, and we’d rather show nothing than a guess you’d paste into your client.

Open setup steps on GitHub

Overview

The adancurusul/embedded-debugger-mcp MCP server exposes embedded debugging operations through probe-rs or OpenOCD. It lets an MCP client discover probes, connect to a target, control execution, inspect memory, manage hardware breakpoints, flash firmware, and use SEGGER RTT. Cortex-M targets can also be investigated with structured fault-register evidence and source-mapped exception unwinding. Reach for it when an AI-assisted workflow needs direct access to a connected MCU or an OpenOCD GDB endpoint.

Use cases

  • Debug a connected ARM Cortex-M target
  • Flash and verify embedded firmware
  • Inspect Cortex-M crash evidence and source frames
  • Read and write target memory during a session
  • Capture or send logs through SEGGER RTT

Key features

  • probe-rs and OpenOCD backends
  • Core control and hardware breakpoints
  • ELF, HEX, and BIN flashing
  • Cortex-M fault diagnosis and unwinding
  • SEGGER RTT channel access
  • MCP and CLI workflows

Tools24

What Embedded Debugger MCP lets your agent do. Expand a tool for its parameters.

Self-reported~409 tokens of context

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked Today

Recent health check succeeded.

19/19 checks healthy over the last 81d

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars211Stargazers on the source repository.
Last commit3mo agoMost recent push to the default branch.
Tools exposed24Callable tools this server registers over MCP.
Directory activity6 viewsConfig copies, upvotes, and views on AllMCPs.

How Embedded Debugger MCP works

What adancurusul/embedded-debugger-mcp MCP server does

The adancurusul/embedded-debugger-mcp MCP server provides one tool set for embedded target control through two backends: native probe-rs and OpenOCD through the GDB Remote Serial Protocol. It is designed for hardware debugging workflows involving supported debug probes, target chips, and working SWD or JTAG wiring.

The server covers the full session lifecycle. An agent can find connected probes, connect to a target, inspect the active session, halt or resume execution, reset and single-step the core, read status, and disconnect cleanly. Memory access, hardware breakpoints, flash operations, and SEGGER RTT communication are also exposed.

Cortex-M crash workflows include reading SCB fault registers together with PC, SP, and LR, then unwinding an exception and mapping frames to source lines. These calls report evidence for analysis rather than claiming a definitive root cause.

How it works

The client communicates with a single MCP tool set, while the selected backend performs the hardware operations. The default probe-rs backend supports native probe access, flash programming, and RTT. The experimental openocd backend connects to an already running OpenOCD instance, using 127.0.0.1:3333 by default, and is intended in part for targets not covered by probe-rs, such as Xtensa ESP32 devices through openocd-esp32.

The backend is selected in the connect call. OpenOCD support has been validated for memory access and halt, run, step, and reset operations on an ESP32-S3. Flash and RTT are limited to the probe-rs backend. Cortex-M-specific fault diagnosis and exception unwinding do not apply to Xtensa targets.

Setup and configuration

Build the Rust project with a stable Rust toolchain:

text
cargo build --release

The resulting executable is target/release/embedded-debugger-mcp. Run embedded-debugger-mcp serve to expose MCP over standard input and output; invoking the executable without a subcommand also starts MCP mode. An MCP client configuration can point its command to that binary and pass serve as an argument.

A probe-rs setup needs a compatible probe, such as an ST-Link, J-Link, DAPLink, Black Magic Probe, or supported FTDI-based probe, plus a supported target and suitable wiring. The OpenOCD path requires a running OpenOCD process with a reachable GDB port. Its configuration must disable the GDB memory map probing; the README gives gdb_memory_map disable as the required setting for the documented ESP32-S3 example.

Tools and capabilities

The adancurusul/embedded-debugger-mcp MCP server exposes tools for:

  • Probe discovery, connection details, session status, and cleanup.
  • Core halt, resume, reset, single-step, memory reads, optional memory writes, and hardware breakpoints.
  • Flash erase, ELF/HEX/BIN programming, raw verification, and combined firmware deployment with optional RTT attachment.
  • RTT attachment, detachment, channel discovery, and bounded reads and writes.
  • Cortex-M fault-register collection and source-aware exception unwinding when an ELF with debug-line information is available.

The repository also includes CLI commands for diagnostics, configuration inspection, probe listing, MCP serving, and installing its bundled workflow skill for Codex or Claude Code.

Limitations and notes

Write-memory and flash-erase behavior depend on configuration permissions. Fault diagnosis should be run after halting the target. Exception unwinding needs an elf_path pointing to firmware built with debug information, including .debug_line. On OpenOCD, register reads currently use ARM GDB register numbers, so PC and SP are incorrect on Xtensa. The project has been validated on real ESP32-S3 hardware, but support still depends on the selected backend, probe, target, and wiring.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Embedded Debugger MCP

Clone the repository and build it with `cargo build --release` using a stable Rust toolchain. Run the resulting `target/release/embedded-debugger-mcp` binary with `serve` for MCP mode.

The README provides an MCP client configuration using a command path and the `serve` argument, and identifies Claude among supported workflow environments. A Claude Desktop-specific validation is not stated.

Yes. Its `flash_program` tool programs ELF, HEX, or BIN files through probe-rs flash algorithms. Flash support is limited to the probe-rs backend.

Halt the target first, then use `diagnose_fault` to collect SCB fault registers and PC, SP, and LR. Use `unwind_exception` with an ELF containing debug-line information to map frames to source lines.

Yes. Select the `openocd` backend in `connect` and provide an OpenOCD GDB endpoint when needed. The default address is `127.0.0.1:3333`, and OpenOCD must be configured with GDB memory-map probing disabled.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewEmbedded Debugger MCP AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/adancurusul-embedded-debugger-mcp?style=directory)](https://allmcps.com/mcp/adancurusul-embedded-debugger-mcp)
HTML Embed
<a href="https://allmcps.com/mcp/adancurusul-embedded-debugger-mcp"><img src="https://allmcps.com/api/badge/adancurusul-embedded-debugger-mcp?style=directory" alt="Embedded Debugger MCP on AllMCPs" /></a>