{"name":"io.github.Zeraissh/stm32-gdb-mcp","slug":"zeraissh-stm32-gdb-mcp","title":"STM32 GDB Debugger","description":"Debug STM32 firmware on real hardware via GDB + OpenOCD/ST-Link/J-Link with decoded results.","url":"https://mcp.market/server/zeraissh-stm32-gdb-mcp","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":31,"stars":2,"forks":0,"downloads_week":42,"last_push_at":"2026-10-24T07:13:44.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/Zeraissh/stm32-gdb-mcp","website":"https://github.com/Zeraissh/stm32-gdb-mcp","version":"0.15.1","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"stm32-gdb-mcp","version":"0.15.1","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Set to 1 to expose only the core tools; every other tool stays reachable through call(tool, args).","default":"1","name":"STM32_GDB_MCP_COMPACT"}]}],"tools":[{"name":"acceptance_loop_status","description":"Read the acceptance loop's trajectory (per-iteration pass/fail counts, status)","write_action":false,"price_micros":0,"input_schema":null},{"name":"address_of","description":"Resolves the address of a symbol (&symbol).","write_action":false,"price_micros":0,"input_schema":null},{"name":"analyze_stack","description":"Reports stack used/free bytes and a clear overflow verdict for the halted","write_action":false,"price_micros":0,"input_schema":null},{"name":"assert_expressions","description":"Reads GDB expressions and evaluates assertions with operators ==, !=, >, >=, <, <=.","write_action":false,"price_micros":0,"input_schema":null},{"name":"batch","description":"Runs several tool calls in ONE round trip and returns ALL their full","write_action":true,"price_micros":0,"input_schema":null},{"name":"build_firmware","description":"Builds firmware with Keil uVision (UV4), CMake, make, or a custom command,","write_action":false,"price_micros":0,"input_schema":null},{"name":"call","description":"Invoke ANY stm32-gdb-mcp tool by name — including one that is NOT in your","write_action":false,"price_micros":0,"input_schema":null},{"name":"call_read","description":"Like call, but restricted to tools that only READ state — so it needs no","write_action":false,"price_micros":0,"input_schema":null},{"name":"capture_coredump","description":"Writes a core dump (RAM + registers) of the halted target to a file for","write_action":true,"price_micros":0,"input_schema":null},{"name":"capture_debug_snapshot","description":"Captures a structured debug snapshot: core registers, fault registers, call stack, PC disassembly, GDB events, server logs, and optional project/RTOS context.","write_action":false,"price_micros":0,"input_schema":null},{"name":"capture_expressions","description":"Reads GDB expressions and returns parsed values. Optionally builds an indexed table from","write_action":false,"price_micros":0,"input_schema":null},{"name":"capture_rtos_snapshot","description":"Captures FreeRTOS detection, current task, ready tasks, and task-list snapshot.","write_action":false,"price_micros":0,"input_schema":null},{"name":"capture_state","description":"One-call 'where am I': decoded core registers + a PC/LR/SP summary, the","write_action":false,"price_micros":0,"input_schema":null},{"name":"clear_logs","description":"Clears the buffered log lines for a channel (rtt/swo/uart) without stopping capture.","write_action":false,"price_micros":0,"input_schema":null},{"name":"clear_session_journal","description":"Clears the session journal (keeps the run-id).","write_action":false,"price_micros":0,"input_schema":null},{"name":"compare_expressions_after_action","description":"Captures expressions, performs one debug action, captures them again, and reports changes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"configure_debug_freeze","description":"Freezes peripherals (IWDG, WWDG, RTC, timers) while the core is halted via","write_action":false,"price_micros":0,"input_schema":null},{"name":"continue_execution","description":"Resumes execution of the target device until the next breakpoint.","write_action":false,"price_micros":0,"input_schema":null},{"name":"debug_until","description":"One-call repro step: set an optional conditional/temporary breakpoint at","write_action":false,"price_micros":0,"input_schema":null},{"name":"decode_peripheral_register","description":"Reads and decodes a peripheral register with SVD bitfield names and enumerated values.","write_action":false,"price_micros":0,"input_schema":null},{"name":"delete_breakpoint","description":"Deletes a breakpoint by its ID.","write_action":true,"price_micros":0,"input_schema":null},{"name":"describe_acceptance","description":"Read the loaded AcceptanceSpec or the last verdict. what=summary (name +","write_action":false,"price_micros":0,"input_schema":null},{"name":"describe_board","description":"Read the BoardDescription imported by import_netlist. what=summary (MCU +","write_action":false,"price_micros":0,"input_schema":null},{"name":"describe_framework","description":"Read the synthesized FrameworkPlan. what=summary (mcu + clocks + peripherals),","write_action":false,"price_micros":0,"input_schema":null},{"name":"design_framework","description":"Synthesize a deterministic FrameworkPlan (Pillar D) from the session's imported","write_action":false,"price_micros":0,"input_schema":null},{"name":"detect_rtos","description":"Detects whether FreeRTOS symbols are available in the current GDB session.","write_action":false,"price_micros":0,"input_schema":null},{"name":"diagnose_fault","description":"Reads and decodes Cortex-M fault registers into likely fault causes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"disassemble","description":"Disassembles N instructions at a location (default $pc).","write_action":false,"price_micros":0,"input_schema":null},{"name":"export_debug_report","description":"Writes a single self-contained JSON report (journal + metrics + profile,","write_action":true,"price_micros":0,"input_schema":null},{"name":"flash_and_run","description":"One-call bring-up: flash an ELF (loads symbols), reset-halt, set a","write_action":true,"price_micros":0,"input_schema":null},{"name":"flash_erase","description":"Erases a flash range on the target (OpenOCD 'flash erase_address pad'),","write_action":false,"price_micros":0,"input_schema":null},{"name":"flash_firmware","description":"Flashes a compiled firmware binary to the target. Accepts GCC .elf or Keil","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_debug_profile","description":"Returns the stored board/session defaults.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_logs","description":"Returns captured log lines for a channel (rtt/swo/uart).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_session","description":"Returns this session's record by view: 'journal' (every tool call with","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_timeouts","description":"Returns the current named GDB operation timeouts (connect, reset, memory,","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_write_audit_log","description":"Returns the append-only audit log of every memory-write decision","write_action":true,"price_micros":0,"input_schema":null},{"name":"halt_execution","description":"Interrupts/halts the target device execution.","write_action":false,"price_micros":0,"input_schema":null},{"name":"import_netlist","description":"Parse a schematic netlist (KiCad .net today) into a machine-readable","write_action":false,"price_micros":0,"input_schema":null},{"name":"import_spec","description":"Translate a controlled-vocabulary product spec (human/product terms) into the","write_action":false,"price_micros":0,"input_schema":null},{"name":"inspect_project","description":"Discovers firmware project artifacts such as ELF, map, linker script, SVD, and STM32CubeMX .ioc metadata.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_breakpoints","description":"Lists breakpoints with their HIT COUNTS. A hit_count of 0 means the code","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_functions","description":"Lists functions in the loaded symbols, optionally filtered by a regex.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_source","description":"Lists source lines around a location (function, 'file.c:42', or '*0xADDR').","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_variables","description":"Lists global/static variables in the loaded symbols, optionally filtered by a regex.","write_action":false,"price_micros":0,"input_schema":null},{"name":"load_acceptance","description":"Load a machine-checked AcceptanceSpec (product-spec → deterministic checks)","write_action":false,"price_micros":0,"input_schema":null},{"name":"load_coredump","description":"Loads a previously captured core file for offline analysis.","write_action":false,"price_micros":0,"input_schema":null},{"name":"load_device_pack","description":"Register a verified device-fact pack (Pillar F) so the deterministic solvers cover a new","write_action":false,"price_micros":0,"input_schema":null},{"name":"load_svd","description":"Loads an SVD file for peripheral parsing.","write_action":false,"price_micros":0,"input_schema":null},{"name":"load_symbols","description":"Loads symbols from an ELF/AXF into the current GDB session WITHOUT flashing.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lookup_type","description":"Shows the type/layout of an expression or type name (GDB ptype).","write_action":false,"price_micros":0,"input_schema":null},{"name":"mcp_info","description":"Identifies THIS running stm32-gdb-mcp server: release version, git commit, the","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_call_stack","description":"Reads the call stack as a decoded list of frames","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_core_registers","description":"Reads CPU core registers as a decoded {name: hex} map plus a one-line","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_cycle_counter","description":"Enables (if needed) and reads the DWT cycle counter (DWT_CYCCNT) for","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_fault_registers","description":"Reads Cortex-M SCB fault status registers (CFSR, HFSR, DFSR, MMFAR, BFAR, AFSR).","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_frame_variables","description":"Returns a decoded {name: value} map of locals and arguments for a stack","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_freertos","description":"Reads FreeRTOS state by 'what': 'current_task' (pxCurrentTCB), 'tasks' (ready","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_memory","description":"Reads a block of memory from the target. Returns the raw bytes in memory","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_peripheral_register","description":"Reads a peripheral register using its name from the loaded SVD.","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_typed_memory","description":"Reads memory with an explicit element width and count.","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_variable","description":"Reads the value of a C variable currently in scope.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reconstruct_fault_context","description":"Reconstructs the full crash site after a HardFault: decodes fault","write_action":false,"price_micros":0,"input_schema":null},{"name":"render_framework","description":"Render the synthesized FrameworkPlan to a HAL C init skeleton (bsp_init.c +","write_action":false,"price_micros":0,"input_schema":null},{"name":"report_issue","description":"Files a GitHub issue about an MCP problem from THIS session — auto-bundling","write_action":false,"price_micros":0,"input_schema":null},{"name":"reset_target","description":"Resets the target device. Can optionally halt immediately after reset.","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve_address","description":"Maps an address or expression (e.g. '$pc', '0x08001234') to its source","write_action":false,"price_micros":0,"input_schema":null},{"name":"run_acceptance","description":"Evaluate the loaded AcceptanceSpec against live silicon state and return a","write_action":true,"price_micros":0,"input_schema":null},{"name":"run_acceptance_iteration","description":"Run one bounded loop iteration: (optional build) → (optional flash+run-to) →","write_action":true,"price_micros":0,"input_schema":null},{"name":"run_and_wait","description":"Resumes the target and waits, returning a structured stop event","write_action":true,"price_micros":0,"input_schema":null},{"name":"run_for_duration","description":"Runs the target freely for a wall-clock duration, halts it, and returns","write_action":true,"price_micros":0,"input_schema":null},{"name":"run_pipeline","description":"Spec-to-silicon capstone (Pillar G): run the whole deterministic DESIGN half in one call.","write_action":true,"price_micros":0,"input_schema":null},{"name":"run_scenario","description":"Replays a declarative scenario — a list of {tool, args} steps —","write_action":true,"price_micros":0,"input_schema":null},{"name":"run_to_line","description":"Runs until a given location is reached (function, 'file.c:42', or '*0xADDR').","write_action":true,"price_micros":0,"input_schema":null},{"name":"sample_pc","description":"Statistical PC profiler: enables DWT and samples the program counter while","write_action":false,"price_micros":0,"input_schema":null},{"name":"save_debug_config","description":"Saves a YAML debug config file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"select_frame","description":"Selects a stack frame by level (0 = innermost) for subsequent variable reads.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_breakpoint","description":"Sets a breakpoint at a function, line, or address. Supports an optional","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_timeouts","description":"Overrides one or more named timeouts (positive seconds). Useful for a slow","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_watchpoint","description":"Sets a hardware watchpoint on a memory address or variable.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_write_policy","description":"Configures memory-write guardrails: mode ('enforce' or 'dry_run'), and","write_action":true,"price_micros":0,"input_schema":null},{"name":"setup_swo","description":"One-call SWO/ITM printf setup. Configures the target's TPIU+ITM from the","write_action":false,"price_micros":0,"input_schema":null},{"name":"sizeof","description":"Evaluates sizeof(expr) against the loaded symbols.","write_action":false,"price_micros":0,"input_schema":null},{"name":"solve_clock_tree","description":"Synthesize a concrete SystemClock_Config() for the session's FrameworkPlan","write_action":false,"price_micros":0,"input_schema":null},{"name":"solve_timer","description":"Solve a timer's Prescaler/Period (PSC/ARR) for a target update frequency","write_action":false,"price_micros":0,"input_schema":null},{"name":"start_acceptance_loop","description":"Start a bounded spec-to-silicon acceptance loop (Pillar C) for the loaded","write_action":false,"price_micros":0,"input_schema":null},{"name":"start_debug_session","description":"Starts the specified GDB Server (openocd, stlink, jlink) and connects the GDB Client to it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"start_logging","description":"Starts background log capture on a channel: 'rtt' (SEGGER RTT, default cmd","write_action":false,"price_micros":0,"input_schema":null},{"name":"step","description":"Single-steps the target: kind='over' (over the line), 'into' (into calls),","write_action":false,"price_micros":0,"input_schema":null},{"name":"stop_debug_session","description":"Stops the GDB client/server, variable tracking, and all active RTT/SWO/UART readers.","write_action":false,"price_micros":0,"input_schema":null},{"name":"stop_logging","description":"Stops background log capture on a channel (rtt/swo/uart).","write_action":false,"price_micros":0,"input_schema":null},{"name":"synthesize_acceptance","description":"Auto-derive a machine-checked AcceptanceSpec from the synthesized FrameworkPlan","write_action":false,"price_micros":0,"input_schema":null},{"name":"tool_help","description":"Returns descriptions and complete schemas for full-surface tools, including tools hidden in compact mode.","write_action":false,"price_micros":0,"input_schema":null},{"name":"track_variable","description":"Background variable tracking: action='start' (needs variable + interval_ms),","write_action":false,"price_micros":0,"input_schema":null},{"name":"validate_board","description":"Validate the imported BoardDescription: detect a package pin wired to","write_action":false,"price_micros":0,"input_schema":null},{"name":"validate_debug_config","description":"Validates a YAML debug config object without saving it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"verify_flash","description":"Verifies that target flash matches an ELF (GDB compare-sections). Compares","write_action":false,"price_micros":0,"input_schema":null},{"name":"wait_for_stop","description":"Waits for the next stop event WITHOUT resuming the target, returning","write_action":false,"price_micros":0,"input_schema":null},{"name":"write_memory","description":"Writes a value to a specific memory address.","write_action":true,"price_micros":0,"input_schema":null},{"name":"write_typed_memory","description":"Writes memory with an explicit C integer width.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-10-27T18:17:26.232Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-27T18:17:26.187Z","components":{"code":{"score":25,"max":25,"notes":["110 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 3 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"stm32-gdb-mcp","version":"0.15.1","found":true,"weeklyDownloads":42,"license":"MIT","dependencyCount":12,"publishedAt":"2026-10-17T09:51:17.416985Z"}],"repo":{"found":true,"owner":"Zeraissh","repo":"stm32-gdb-mcp","archived":false,"pushedAt":"2026-10-24T07:13:44Z","stars":2,"forks":0,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/216186225?v=4","ownerCreatedAt":"2025-06-13T14:11:42Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/216186225?v=4&s=128","source":"github"},"presence":{"stars":2,"forks":0,"downloadsWeek":42,"license":"MIT","lastPushAt":"2026-10-24T07:13:44.000Z","score":31}}}},"grade_history":[],"reviews":[]}