DebugForge
Integrates with GitHub Copilot to perform TRACE32 debugging via MCP, allowing AI-driven hardware debugging.
Allows Hermes agents to connect to TRACE32 for autonomous debugging tasks via MCP.
Enables Codex CLI (OpenAI) to access and control a TRACE32 debugger for autonomous hardware debugging.
Click on "Install 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., "@DebugForgeSet a breakpoint at main and read the call stack"
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.
Highlights
47 MCP Tools — Full TRACE32 access for AI agents: execution control, breakpoints, memory, registers, variables, symbols, and more
Autonomous Debugging — AI agents can independently connect to your target, reproduce issues, locate root causes, and suggest fixes
Local + Remote — Debug locally or connect to a remote Windows TRACE32 via WinRM/SSH with full file transfer support
Project-Aware — Configure once via
debugforge.toml, your AI agent automatically knows your ELF paths, flash scripts, and TRACE32 setupReal Hardware — Battle-tested on TC397 TriCore via USB. Your AI agent controls actual silicon, not a simulator
Advanced Breakpoints — Conditional, data watchpoints, hit-count, task-specific, action triggers, and temporary breakpoints
Deep Inspection — AI agents can read call stacks with locals, expand structs, view disassembly, inspect peripherals
Any MCP Agent — Works with Claude Code, Codex CLI, Qwen, or any MCP-compatible AI assistant
Zero Lock-in — MIT licensed, open source, no vendor dependencies beyond TRACE32 itself
Related MCP server: gdb_mcp
Architecture
┌─────────────────┐ MCP (stdio) ┌──────────────┐ PYRCL/TCP ┌──────────────┐
│ │◄───────────────────────────►│ │◄─────────────────────►│ │
│ AI Agent │ JSON-RPC tool calls │ DebugForge │ Remote Control API │ TRACE32 │
│ (Claude Code, │ (47 debugging tools) │ MCP Server │ (lauterbach-trace32 │ PowerView │
│ Codex, etc.) │ │ │ -rcl) │ │
│ │◄───────────────────────────►│ │◄─────────────────────►│ │
└─────────────────┘ Results └──────────────┘ Hardware └──────┬───────┘
│
┌──────▼───────┐
│ Target MCU │
│ (e.g. TC397) │
└──────────────┘Remote Mode
┌─────────────────────────────────────────────────────────────┐
│ Local Linux (Agent) │
│ - Source/ELF/CMM files │
│ - AI Agent (DebugForge MCP Server) │
└────────────────┬────────────────────────┬───────────────────┘
│ SCP/WinRM │ PYRCL (port 20000)
│ File transfer │ Remote control
▼ ▼
┌─────────────────────────────────────────────────────────────┐
│ Remote Windows │
│ - TRACE32 PowerView │
│ - Hardware target (TC38x/TC39x) │
└─────────────────────────────────────────────────────────────┘Quick Start
# 1. Install DebugForge
pip install debugforge
# 2. Install TRACE32 Python package (from your TRACE32 installation)
pip install <YOUR_T32_PATH>/demo/api/python/rcl/dist/lauterbach_trace32_rcl-*.whl
# 3. Add to your AI agent's MCP config (e.g. .claude/settings.json){
"mcpServers": {
"debugforge": {
"command": "debugforge"
}
}
}# 4. Configure your project
cp debugforge.toml.example debugforge.toml
# Edit debugforge.toml with your paths and connection settings
# 5. Start TRACE32 with API port enabled, then ask your AI agent:
# "Connect to TRACE32, load the firmware, find why the system crashes at boot"Installation
Prerequisites
Requirement | Details |
Python | 3.10 or higher |
TRACE32 | PowerView running with Remote API enabled |
PYRCL |
|
Step 1: Install DebugForge
pip install debugforgeOr install from source:
git clone https://github.com/YangPan2020/debugforge.git
cd debugforge
pip install -e .Step 2: Install TRACE32 Python Library
The PYRCL wheel is bundled with your TRACE32 installation:
pip install <T32_INSTALL_PATH>/demo/api/python/rcl/dist/lauterbach_trace32_rcl-*.whlStep 3: Enable TRACE32 Remote API
Add these lines to your TRACE32 configuration file (.t32 or config.t32):
RCL=NETTCP
PORT=20000Then restart TRACE32 PowerView.
Configuration
Project Configuration (debugforge.toml)
Create a debugforge.toml in your project root. A complete template is provided:
cp debugforge.toml.example debugforge.toml[mode]
mode = "local" # "local" or "remote"
[connection]
node = "localhost"
port = 20000
protocol = "TCP"
auto_connect = true
[remote]
host = "192.168.1.100"
winrm_port = 5985
winrm_user = "user@domain.local"
winrm_password = "your_password"
ssh_user = "username"
staging_dir = "D:\\T32\\debugforge"
[project]
elf = "output/build/firmware.elf"
[scripts]
flash = "tools/Trace32/flash.cmm"Note:
debugforge.tomlcontains credentials and is gitignored. Never commit it.
MCP Client Setup
Add to .claude/settings.json:
{
"mcpServers": {
"debugforge": {
"command": "debugforge"
}
}
}{
"mcpServers": {
"debugforge": {
"command": "debugforge",
"env": {
"T32_AUTO_CONNECT": "true",
"T32_PORT": "20000"
}
}
}
}Any MCP-compatible client can use DebugForge. Configure the command as debugforge with stdio transport.
Environment Variables
Environment variables override debugforge.toml values (highest priority):
Variable | Default | Description |
| — | TRACE32 installation directory |
|
| TRACE32 host address |
|
| TRACE32 API port |
|
| Communication protocol (TCP/UDP) |
|
| Auto-connect on server start |
|
| Path to config file |
Available Tools (47)
Connection & Configuration
Tool | Description |
| Connect to a TRACE32 PowerView instance |
| Disconnect from TRACE32 |
| Get connection status, TRACE32 version, and system state |
| Get the loaded project configuration (paths, scripts, settings) |
Execution Control
Tool | Description |
| Start/continue program execution |
| Single-step execution (into, over, or out) |
| Stop program execution |
| Reset the target CPU |
| Get current CPU execution state |
| Get current source file and line |
| Get name of currently executing function |
| Combined run/halt statistics |
Breakpoints
Tool | Description |
| Set a program/read/write/readwrite breakpoint |
| List all active breakpoints |
| Delete a breakpoint |
| Delete all breakpoints at once |
| Enable/disable a breakpoint without deleting |
Advanced Breakpoints
Tool | Description |
| Breakpoint with HLL condition (e.g., |
| Trigger on memory access with optional value match |
| Stop after N-th hit (loop debugging) |
| Trigger only for a specific OS task/thread |
| Execute a TRACE32 command on hit |
| Auto-deletes after first hit |
Memory
Tool | Description |
| Read target memory (hex dump format) |
| Write data to target memory |
| Read through CPU data cache |
| Read bypassing cache |
Registers
Tool | Description |
| Read a single CPU register |
| Read multiple registers at once |
| Write a value to a CPU register |
Variables
Tool | Description |
| Read a C/C++ variable by symbol name |
| Write a value to a C/C++ variable |
| View a variable/struct/array with full expansion |
Symbols
Tool | Description |
| Look up symbol address by name |
| Look up symbol name by address |
Commands & Scripting
Tool | Description |
| Execute any TRACE32 PRACTICE command |
| Run a PRACTICE (.cmm) script with timeout |
| Evaluate a TRACE32 expression or function |
Debug Views
Tool | Description |
| Get call stack with function names |
| Get call stack with all local variables per frame |
| Formatted memory dump (hex + ASCII) |
| Full register view with all flags |
| Get text content of any TRACE32 window command |
Multicore
Tool | Description |
| Switch debugger focus to a specific core |
| Get chip stepping and configuration |
| Get execution state of all cores |
| Synchronized Go/Break/Step across cores |
On-chip Trace (MCDS)
Tool | Description |
| Configure and start trace recording |
| Stop trace recording |
| Display trace buffer contents |
| Clear trace buffer |
| Set trace start/stop triggers |
System Configuration
Tool | Description |
| Configure reset handling |
| Enable/disable cache-aware reads |
| Suspend peripherals on halt |
| Load ELF debug symbols |
| Get all system option settings |
Usage Examples
Basic Debug Session
You: "Connect to TRACE32 and help me find why the system crashes after boot"
AI Agent workflow:
1. get_project_config() → learns your ELF path and scripts
2. connect() → connects to TRACE32
3. run_practice("flash.cmm") → flashes firmware
4. set_breakpoint("main")
5. go() → runs to main
6. step("over") → steps through code
7. get_callstack() → analyzes the call stack
8. read_variable("error_code") → checks variables
→ "Found it: error_code = -1 because init_hardware() fails at line 84"Remote Debug Session
You: "Connect to the remote TRACE32 on Windows and debug the TC397 board"
AI Agent workflow:
1. get_project_config() → detects remote mode, gets WinRM credentials
2. connect(node="192.168.1.100") → connects via PYRCL over network
3. run_practice("tc39x_flash.cmm") → flashes via remote TRACE32
4. go() → halt() → get_callstack()
→ Debugging the remote target as if it were localSupported AI Agents
Agent | Status | Configuration |
✅ Tested |
| |
✅ Compatible | MCP stdio transport | |
✅ Compatible | MCP stdio transport | |
Any MCP Client | ✅ Compatible | Standard MCP protocol |
File Structure
debugforge/
├── src/debugforge/ # MCP Server core
│ ├── server.py # FastMCP server entry
│ ├── config.py # Configuration (local + remote)
│ ├── state.py # Connection state management
│ └── tools/ # Tool implementations (47 tools)
├── examples/ # Example scripts
│ ├── remote_debug.py # Remote debug via WinRM + PYRCL
│ ├── remote_debug_tc38x.py
│ ├── test_all_tools.py # Full tool verification
│ └── debug_tc397_live.py # TC397 complete workflow
├── debugforge.toml.example # Configuration template
├── WINDOWS_SSH_SETUP.md # Remote Windows setup guide
└── README.mdDevelopment
Setup
git clone https://github.com/YangPan2020/debugforge.git
cd debugforge
pip install -e ".[dev]"Run Tests
pytest tests/ -vCode Style
ruff check src/ tests/
ruff format src/ tests/License
MIT — free for personal and commercial use.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/YangPan2020/debugforge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server