Skip to content

MCP server & tools

Hard Fault ships a compiled local MCP server inside every native BYO release bundle. A project initialized with BYO configures both Codex and Claude to start that server as a subprocess through the stable launcher.

Terminal window
cd /path/to/your/firmware-project
byo init
byo codex firmware
# Or:
byo claude firmware

byo init writes the managed project configuration and runs a health check. The selected client starts the private compiled sidecar through byo mcp serve; project configuration never points at Python or directly at the versioned sidecar executable. You normally should not start byo mcp serve by hand.

Restart any Codex or Claude session that was already open when you initialized the project so it reloads the MCP configuration. See Getting started for the native installation commands and Uninstall BYO for removal scopes.

With a board id set, the server resolves that board’s facts — target, recover policy, silicon id, baud — from boards/<board>.yaml, so connect needs no raw target and get_board_info reports the loaded facts.

The current tools, all live-validated on the scoped boards:

  • Session — connect, disconnect, get_board_info, get_state
  • Execution control — halt, resume, step, reset
  • Registers & memory — read_core_register, write_core_register, read_memory, read_memory_block, write_memory
  • Breakpoints — set_breakpoint, remove_breakpoint
  • Firmware & serial — flash_firmware, read_serial
  • Recovery — unlock_recover

connect(...) creates a visible session_id, and each run writes runs/<session_id>/logs/events.jsonl plus runs/<session_id>/run-metadata/session.json for inspection.

Mutating tools are gated. See Guardrails for how flash and recover gates and the mutation watchers behave.