MCP.Market

STM32 GDB Debugger MCP server

by Zeraissh·io.github.Zeraissh/stm32-gdb-mcp·v0.15.1·2 stars

Debug STM32 firmware on real hardware via GDB + OpenOCD/ST-Link/J-Link with decoded results.

A92/100grade A
What users say
No reviews yet
Be the first
Safety scan
A92/100

full report

Adoption
Growing

2 stars42 downloads/wk

Reviews

Write one

Nobody has reviewed STM32 GDB Debugger yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

STM32 GDB Debugger tools (100, 16 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • acceptance_loop_status

    Read the acceptance loop's trajectory (per-iteration pass/fail counts, status)

  • address_of

    Resolves the address of a symbol (&symbol).

  • analyze_stack

    Reports stack used/free bytes and a clear overflow verdict for the halted

  • assert_expressions

    Reads GDB expressions and evaluates assertions with operators ==, !=, >, >=, <, <=.

  • batchwrite action

    Runs several tool calls in ONE round trip and returns ALL their full

  • build_firmware

    Builds firmware with Keil uVision (UV4), CMake, make, or a custom command,

  • call

    Invoke ANY stm32-gdb-mcp tool by name — including one that is NOT in your

  • call_read

    Like call, but restricted to tools that only READ state — so it needs no

  • capture_coredumpwrite action

    Writes a core dump (RAM + registers) of the halted target to a file for

  • capture_debug_snapshot

    Captures a structured debug snapshot: core registers, fault registers, call stack, PC disassembly, GDB events, server logs, and optional project/RTOS context.

  • capture_expressions

    Reads GDB expressions and returns parsed values. Optionally builds an indexed table from

  • capture_rtos_snapshot

    Captures FreeRTOS detection, current task, ready tasks, and task-list snapshot.

  • capture_state

    One-call 'where am I': decoded core registers + a PC/LR/SP summary, the

  • clear_logs

    Clears the buffered log lines for a channel (rtt/swo/uart) without stopping capture.

  • clear_session_journal

    Clears the session journal (keeps the run-id).

  • compare_expressions_after_action

    Captures expressions, performs one debug action, captures them again, and reports changes.

  • configure_debug_freeze

    Freezes peripherals (IWDG, WWDG, RTC, timers) while the core is halted via

  • continue_execution

    Resumes execution of the target device until the next breakpoint.

  • debug_until

    One-call repro step: set an optional conditional/temporary breakpoint at

  • decode_peripheral_register

    Reads and decodes a peripheral register with SVD bitfield names and enumerated values.

  • delete_breakpointwrite action

    Deletes a breakpoint by its ID.

  • describe_acceptance

    Read the loaded AcceptanceSpec or the last verdict. what=summary (name +

  • describe_board

    Read the BoardDescription imported by import_netlist. what=summary (MCU +

  • describe_framework

    Read the synthesized FrameworkPlan. what=summary (mcu + clocks + peripherals),

  • design_framework

    Synthesize a deterministic FrameworkPlan (Pillar D) from the session's imported

  • detect_rtos

    Detects whether FreeRTOS symbols are available in the current GDB session.

  • diagnose_fault

    Reads and decodes Cortex-M fault registers into likely fault causes.

  • disassemble

    Disassembles N instructions at a location (default $pc).

  • export_debug_reportwrite action

    Writes a single self-contained JSON report (journal + metrics + profile,

  • flash_and_runwrite action

    One-call bring-up: flash an ELF (loads symbols), reset-halt, set a

  • flash_erase

    Erases a flash range on the target (OpenOCD 'flash erase_address pad'),

  • flash_firmware

    Flashes a compiled firmware binary to the target. Accepts GCC .elf or Keil

  • get_debug_profile

    Returns the stored board/session defaults.

  • get_logs

    Returns captured log lines for a channel (rtt/swo/uart).

  • get_session

    Returns this session's record by view: 'journal' (every tool call with

  • get_timeouts

    Returns the current named GDB operation timeouts (connect, reset, memory,

  • get_write_audit_logwrite action

    Returns the append-only audit log of every memory-write decision

  • halt_execution

    Interrupts/halts the target device execution.

  • import_netlist

    Parse a schematic netlist (KiCad .net today) into a machine-readable

  • import_spec

    Translate a controlled-vocabulary product spec (human/product terms) into the

  • inspect_project

    Discovers firmware project artifacts such as ELF, map, linker script, SVD, and STM32CubeMX .ioc metadata.

  • list_breakpoints

    Lists breakpoints with their HIT COUNTS. A hit_count of 0 means the code

  • list_functions

    Lists functions in the loaded symbols, optionally filtered by a regex.

  • list_source

    Lists source lines around a location (function, 'file.c:42', or '*0xADDR').

  • list_variables

    Lists global/static variables in the loaded symbols, optionally filtered by a regex.

  • load_acceptance

    Load a machine-checked AcceptanceSpec (product-spec → deterministic checks)

  • load_coredump

    Loads a previously captured core file for offline analysis.

  • load_device_pack

    Register a verified device-fact pack (Pillar F) so the deterministic solvers cover a new

  • load_svd

    Loads an SVD file for peripheral parsing.

  • load_symbols

    Loads symbols from an ELF/AXF into the current GDB session WITHOUT flashing.

  • lookup_type

    Shows the type/layout of an expression or type name (GDB ptype).

  • mcp_info

    Identifies THIS running stm32-gdb-mcp server: release version, git commit, the

  • read_call_stack

    Reads the call stack as a decoded list of frames

  • read_core_registers

    Reads CPU core registers as a decoded {name: hex} map plus a one-line

  • read_cycle_counter

    Enables (if needed) and reads the DWT cycle counter (DWT_CYCCNT) for

  • read_fault_registers

    Reads Cortex-M SCB fault status registers (CFSR, HFSR, DFSR, MMFAR, BFAR, AFSR).

  • read_frame_variables

    Returns a decoded {name: value} map of locals and arguments for a stack

  • read_freertos

    Reads FreeRTOS state by 'what': 'current_task' (pxCurrentTCB), 'tasks' (ready

  • read_memory

    Reads a block of memory from the target. Returns the raw bytes in memory

  • read_peripheral_register

    Reads a peripheral register using its name from the loaded SVD.

  • read_typed_memory

    Reads memory with an explicit element width and count.

  • read_variable

    Reads the value of a C variable currently in scope.

  • reconstruct_fault_context

    Reconstructs the full crash site after a HardFault: decodes fault

  • render_framework

    Render the synthesized FrameworkPlan to a HAL C init skeleton (bsp_init.c +

  • report_issue

    Files a GitHub issue about an MCP problem from THIS session — auto-bundling

  • reset_target

    Resets the target device. Can optionally halt immediately after reset.

  • resolve_address

    Maps an address or expression (e.g. '$pc', '0x08001234') to its source

  • run_acceptancewrite action

    Evaluate the loaded AcceptanceSpec against live silicon state and return a

  • run_acceptance_iterationwrite action

    Run one bounded loop iteration: (optional build) → (optional flash+run-to) →

  • run_and_waitwrite action

    Resumes the target and waits, returning a structured stop event

  • run_for_durationwrite action

    Runs the target freely for a wall-clock duration, halts it, and returns

  • run_pipelinewrite action

    Spec-to-silicon capstone (Pillar G): run the whole deterministic DESIGN half in one call.

  • run_scenariowrite action

    Replays a declarative scenario — a list of {tool, args} steps —

  • run_to_linewrite action

    Runs until a given location is reached (function, 'file.c:42', or '*0xADDR').

  • sample_pc

    Statistical PC profiler: enables DWT and samples the program counter while

  • save_debug_config

    Saves a YAML debug config file.

  • select_frame

    Selects a stack frame by level (0 = innermost) for subsequent variable reads.

  • set_breakpoint

    Sets a breakpoint at a function, line, or address. Supports an optional

  • set_timeouts

    Overrides one or more named timeouts (positive seconds). Useful for a slow

  • set_watchpoint

    Sets a hardware watchpoint on a memory address or variable.

  • set_write_policywrite action

    Configures memory-write guardrails: mode ('enforce' or 'dry_run'), and

  • setup_swo

    One-call SWO/ITM printf setup. Configures the target's TPIU+ITM from the

  • sizeof

    Evaluates sizeof(expr) against the loaded symbols.

  • solve_clock_tree

    Synthesize a concrete SystemClock_Config() for the session's FrameworkPlan

  • solve_timer

    Solve a timer's Prescaler/Period (PSC/ARR) for a target update frequency

  • start_acceptance_loop

    Start a bounded spec-to-silicon acceptance loop (Pillar C) for the loaded

  • start_debug_session

    Starts the specified GDB Server (openocd, stlink, jlink) and connects the GDB Client to it.

  • start_logging

    Starts background log capture on a channel: 'rtt' (SEGGER RTT, default cmd

  • step

    Single-steps the target: kind='over' (over the line), 'into' (into calls),

  • stop_debug_session

    Stops the GDB client/server, variable tracking, and all active RTT/SWO/UART readers.

  • stop_logging

    Stops background log capture on a channel (rtt/swo/uart).

  • synthesize_acceptance

    Auto-derive a machine-checked AcceptanceSpec from the synthesized FrameworkPlan

  • tool_help

    Returns descriptions and complete schemas for full-surface tools, including tools hidden in compact mode.

  • track_variable

    Background variable tracking: action='start' (needs variable + interval_ms),

  • validate_board

    Validate the imported BoardDescription: detect a package pin wired to

  • validate_debug_config

    Validates a YAML debug config object without saving it.

  • verify_flash

    Verifies that target flash matches an ELF (GDB compare-sections). Compares

  • wait_for_stop

    Waits for the next stop event WITHOUT resuming the target, returning

  • write_memorywrite action

    Writes a value to a specific memory address.

  • write_typed_memorywrite action

    Writes memory with an explicit C integer width.

Public scan report

scanner v0.1.10 · 2026-10-27 · same rubric, same numbers if you re-run it

no findings
  • Code scan110 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitylocal package, no credentials required12/15
  • Maintenancelast push 3 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Overall 92/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How STM32 GDB Debugger compares

Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
92/100
higher than 95% of 48,255 servers
Tools
100
the typical server has 7
Tools that change things
16%
typical: 0%. Fewer write tools means less an agent can break
GitHub stars
2
more than 75% of 28,688 servers
Downloads a week
42
more than 34% of 12,191 servers with a package

What its tools let an agent do: 71 read · 6 create · 10 change · 1 delete · 12 run or deploy

Install STM32 GDB Debugger in Claude Code, Cursor or VS Code

claude mcp add stm32-gdb-mcp -- uvx stm32-gdb-mcp
Add to Cursor

What the publisher says

From the STM32 GDB Debugger repository's README, as published. We do not edit it. Read it on GitHub

STM32 GDB MCP Server / STM32 GDB MCP 服务器

<!-- mcp-name: io.github.Zeraissh/stm32-gdb-mcp -->

An MCP server that lets an AI agent debug STM32 firmware on real hardware — drive GDB + OpenOCD/ST-Link/J-Link to flash, breakpoint, inspect memory/registers/RTOS, triage HardFaults, and profile — and get back decoded, structured evidence instead of raw GDB text.

让 AI 智能体在真实硬件上调试 STM32:通过 GDB + OpenOCD/ST-Link/J-Link 烧录、打断点、查 内存/寄存器/RTOS、定位 HardFault、做性能采样,返回已解码的结构化证据而非原始 GDB 文本。

uvx stm32-gdb-mcp          # any MCP client: command "uvx", args ["stm32-gdb-mcp"]

Needs arm-none-eabi-gdb (or gdb-multiarch) and a GDB server (OpenOCD / J-Link / st-util) on PATH; stm32-gdb-mcp-check-env prints the install command for your OS. See Install for one-command setup in Claude Code, Cursor, VSCode and others. / 需要 PATH 中有 arm-none-eabi-gdb(或 gdb-multiarch)和一种 GDB Server; stm32-gdb-mcp-check-env 会给出本机系统的安装命令。各客户端的一键安装见下方 Install。

Why this server / 为什么选它

Pick a probe-rs-based server if you need RISC-V or ESP32; pick this one when you debug STM32 and want the agent to get from symptom to root cause with fewer calls. / 需要 RISC-V 或 ESP32 时选 probe-rs 系;调试 STM32、希望 agent 用更少调用从现象走到根因时选本项目。

What you get / 能力一览

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

STM32 GDB Debugger: common questions

Is STM32 GDB Debugger MCP server safe?
Yes, by our scan: it is graded A (92/100). Read the STM32 GDB Debugger safety report
How do I install STM32 GDB Debugger?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does STM32 GDB Debugger need an API key?
No secret keys are declared. It reads 1 setting from the environment.
Is STM32 GDB Debugger maintained?
The last commit was 11 days ago (2026-10-24). The latest release is v0.15.1.
How does STM32 GDB Debugger compare with other MCP servers?
safety score 92/100 (higher than 95% of 48,255 servers); tools 100 (the typical server has 7); tools that change things 16% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.