ae-hw-bridge
Provides tools for interacting with NVIDIA Jetson target boards via hardware-in-the-loop automation, including hardware reset and power sequencing, entering NVIDIA Force Recovery mode, rebooting to bootloader, automated Linux shell login, and retrieving network and system telemetry.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ae-hw-bridgereboot the target board and wait for the login prompt"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AE-HW-BRIDGE (Agents Engine Hardware Bridge)
Hardware-in-the-Loop (HIL) automation gateway and FastMCP server for the Agents Engine (ae) ecosystem.
ae-hw-bridge provides AI agents (Agents Engine, Claude, Gemini, etc.) with a safe, programmable, tool-based interface to interact with physical development boards (DUTs) via Model Context Protocol (MCP).
It pairs with the hw-puppet Dual-CDC USB bridge. Precompiled firmware binaries are available on the hw-puppet Releases page.
1. System Architecture
[ AI Agent / Agents Engine (ae) / Claude / Gemini ]
│
│ stdio / SSE (JSON-RPC via Model Context Protocol)
▼
[ ae-hw-bridge FastMCP Server ]
│
│ Unix Domain Socket IPC (/tmp/ae-hw-bridge.sock)
▼
[ ae-hw-bridge Daemon ]
├─ Bounded Circular Log Buffer (collections.deque)
├─ Target Domain Logic (.ae-hw-bridge/targets/)
│
├─── CDC 0: MicroPython Raw REPL (/dev/hw-puppet-control or /dev/ttyACM0) ──┐
└─── CDC 1: Target UART Console (/dev/hw-puppet-uart or /dev/ttyACM1) ─┐│
││ (USB Full-Speed)
▼▼
[ hw-puppet (ESP32-S3) ]
(Firmware & HIL Adapter)
│ │
(Control lines) (TX/RX UART)
▼ ▼
[ Target Dev Board ]
(NVIDIA Jetson, Pi, etc.)Key Principles
Separation of Concerns: Hardware/firmware lives in
hw-puppet, while high-level orchestration, IPC multiplexing, and MCP tools live inae-hw-bridge.Zero Host Contention: An auto-spawning, single-owner daemon (
ae-hw-bridge-daemon) manages exclusive access to the serial devices. Multiple agents and CLI clients connect via non-blocking Unix domain socket IPC.Agent Safety: Internal
@replmethods are filtered out from MCP exposure; agents interact strictly through vetted, high-level business tools (full_reboot,login,send_target_command,wait_for_console_pattern, etc.).Dynamic Target Loading: Target behavior (pin definitions, boot sequences, login credentials) is defined modularly in project repositories under
.ae-hw-bridge/targets/<target_name>/target.py.
Related MCP server: mcp-micropython-bridge
2. FastMCP Tools Exposed to Agents
When connected, agents receive the following MCP tools:
MCP Tool | Description |
| Software version, connected ESP32-S3 |
| Read lines from circular console buffer (passive UART reception). |
| Send interactive shell command to target UART and capture delta response. |
| Wait for regex pattern on console stream (e.g. login prompt, bootloader). |
| Clear the background circular console buffer. |
| Execute custom MicroPython script in ESP32-S3 RAM via raw REPL (zero flash wear). |
Custom Target Tools | Any public method declared in |
3. Installation & Setup
Prerequisites
Linux (with udev support)
Python 3.10+
A connected
hw-puppet(ESP32-S3) device
Automated Installation (Smithery)
Install automatically to your preferred AI assistant using the Smithery CLI:
# Claude Desktop / Claude Code
npx -y @smithery/cli install ae-hw-bridge --client claude
# Cursor
npx -y @smithery/cli install ae-hw-bridge --client cursorZero-Install Execution (uvx)
Run the MCP server directly using uvx without installing into your local Python environment:
uvx ae-hw-bridgeManual Installation
pip install ae-hw-bridge
# Or editable mode for development:
pip install -e .Configure Serial Ports & Device Naming
By default, ae-hw-bridge automatically detects ports in the following priority order:
Environment variables
HW_PUPPET_CONTROL_PORT/HW_PUPPET_UART_PORTStandard HW Puppet Udev symlinks:
/dev/hw-puppet-control//dev/hw-puppet-uartStandard Linux CDC fallbacks:
/dev/ttyACM0and/dev/ttyACM1
Device Naming Reference Matrix
Context | Name / Identifier | Purpose |
Hardware Platform | HW Puppet ( | Dedicated ESP32-S3 test harness firmware |
USB Manufacturer |
| USB Device Descriptor manufacturer |
USB Product |
| USB Device Descriptor product |
Control Interface |
| CDC 0: MicroPython Raw REPL RPC |
UART Interface |
| CDC 1: Transparent target console |
Host Package |
| FastMCP server, background daemon, and orchestrator |
Linux Udev Setup (Recommended)
Install the provided udev rules to enable non-root access and persistent device names:
sudo cp udev/99-hw-puppet.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger4. MCP Client Configuration
Claude Code CLI
claude mcp add ae-hw-bridge uvx ae-hw-bridgeClaude Desktop (claude_desktop_config.json) / Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"ae-hw-bridge": {
"command": "uvx",
"args": ["ae-hw-bridge"]
}
}
}Standalone Daemon (Optional)
The server automatically launches the background daemon if it is not already running. To run the daemon manually in foreground for debugging:
ae-hw-bridge-daemon --idle-timeout 05. Target Definitions
Target dev boards (DUTs) are configured modularly in .ae-hw-bridge/targets/<target_name>/.
Complete Target Example:
See the NVIDIA Jetson Target Example (examples/targets/jetson/README.md) and its target implementation (target.py).
It provides a production-grade reference showing:
Hardware reset & power button sequencing with MicroPython
@replEntering NVIDIA Force Recovery mode for flashing
Rebooting directly to bootloader
Automated Linux shell login state machine (
wait_for_shell,login)Network and system telemetry retrieval (
get_network_info,get_system_info)WS2812 RGB LED board status indication
Quick Minimal Target Example
# .ae-hw-bridge/targets/jetson/target.py
import time
from machine import Pin
from ae_hw_bridge.targets.base import BaseTarget, repl
class JetsonTarget(BaseTarget):
name = "jetson"
@repl
def reset_pulse(self):
"""MicroPython method executed directly in ESP32 RAM (hidden from MCP)."""
rst = Pin(1, Pin.OUT, value=1)
rst.value(0)
time.sleep(0.2)
rst.value(1)
def full_reboot(self) -> str:
"""High-level target operation automatically registered as an MCP tool."""
self.reset_pulse()
return "Jetson hardware reboot initiated"6. Running Tests
pytest44 unit and integration tests covering the console reader, raw REPL client, IPC protocol, daemon server/client, target loader, and MCP tool registration.
This server cannot be deployed
Maintenance
Related MCP Connectors
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
LLM Orchestration Agent (Mcp)
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Related MCP Servers
- AlicenseAqualityCmaintenanceStateful MCP server for driving debug probes (J-Link) to flash, debug, and inspect embedded targets. Enables AI agents to perform flash, memory, breakpoint, and ELF/SVD-aware operations conversationally.4133 PyPI10MIT
- FlicenseBqualityDmaintenanceMCP server for controlling MicroPython devices (ESP32, RP2040, etc.) via USB Serial or WebREPL, enabling code execution, file operations, and device management from MCP clients.299-
- AlicenseNot gradedqualityAmaintenanceMCP server for simulating firmware on virtual microcontroller instances, allowing AI agents to upload, run, and read UART output from supported boards such as STM32 and Nordic.17MIT
- AlicenseAqualityAmaintenanceAgentic Hardware-in-the-Loop (Agentic HIL) lets coding agents develop firmware on real embedded boards: flash, reset, read UART and exchange CAN traffic, diagnose and fix. Local, policy-gated MCP tools support OpenOCD, pyOCD and STM32CubeProgrammer, with pytest for CI.4417Apache 2.0