Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_BRIDGE_PORT | No | The TCP port the bridge listens on (default is 9876). This is also used to determine the path of the readiness signal file (/tmp/mcp_bridge_ready_<port>). | 9876 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| connect_simulator | Connect to a SimVision instance running mcp_bridge.tcl. Args: host: SimVision host (use localhost with SSH tunnel for remote). port: TCP port of the Tcl bridge (default 9876). timeout: Connection timeout in seconds. |
| disconnect_simulator | Disconnect from the SimVision bridge. |
| sim_run | Run the simulation, optionally for a specified duration. Args: duration: Simulation time to run (e.g. "100ns", "1us"). Empty = run until breakpoint or end. timeout: MCP response timeout in seconds (default 600s for gate-level sim support). |
| sim_stop | Stop a running simulation. |
| sim_restart | Restart the simulation from time 0. |
| sim_status | Get current simulation status (time, scope, state). |
| set_breakpoint | Set a conditional breakpoint in the simulation. Args: condition: Tcl expression (e.g. "{/tb/dut/state == 3}"). name: Optional breakpoint name. |
| get_signal_value | Read current values of one or more signals. Args: signals: List of signal paths (e.g. ["/tb/dut/clk", "/tb/dut/data[7:0]"]). |
| describe_signal | Get detailed information about a signal (type, width, direction). Args: signal: Full hierarchical signal path. |
| find_drivers | Find all drivers of a signal (useful for X/Z debugging). Args: signal: Full hierarchical signal path. |
| list_signals | List signals in a scope, optionally filtered by pattern. Args: scope: Hierarchical scope path (e.g. "/tb/dut"). pattern: Glob pattern to filter signals (default "*"). |
| deposit_value | Force-deposit a value onto a signal. Args: signal: Full hierarchical signal path. value: Value to deposit (e.g. "1'b1", "8'hFF", "0"). |
| release_signal | Release a previously deposited signal, restoring driven value. Args: signal: Full hierarchical signal path. |
| waveform_add_signals | Add signals to the SimVision waveform viewer. Args: signals: List of signal paths to add. group_name: Optional group name for organizing signals. |
| waveform_zoom | Set the waveform viewer time range (zoom to region). Args: start_time: Start time (e.g. "0ns"). end_time: End time (e.g. "100ns"). |
| cursor_set | Set a waveform cursor to a specific time. Args: time: Simulation time (e.g. "50ns"). cursor_name: Cursor name (default "TimeA"). |
| take_waveform_screenshot | Capture a screenshot of the SimVision waveform window. Returns the screenshot as a PNG image that Claude can analyze. |
| run_debugger_mode | Comprehensive debug snapshot: simulation state + signal values + screenshot + debugging guide. Returns a combined text report and waveform screenshot for AI-assisted hardware debugging. |
| shutdown_simulator | Safely shutdown the simulator, preserving SHM waveform data. Closes all SHM databases and terminates xmsim gracefully. Always use this instead of disconnect_simulator when ending a debug session. WARNING: exit or pkill will lose SHM data. This is the only safe way. |
| watch_signal | Set a watchpoint to stop simulation when a signal matches a condition. The simulation will automatically stop at the exact clock edge where the condition becomes true. Much more efficient than manual probing. Args: signal: Full hierarchical signal path (e.g. "top.dut.r_state[3:0]"). op: Comparison operator ("==", "!=", ">", "<", ">=", "<="). value: Target value in Verilog format (e.g. "8'h10", "4'b1010"). |
| watch_clear | Clear watchpoints. Use "all" to clear all, or a specific stop ID. Args: watch_id: Watchpoint ID to clear, or "all" for all watchpoints. |
| probe_control | Control SHM waveform recording to manage dump file size. Disable probes during uninteresting simulation periods to save disk space. Re-enable before the region of interest. Optionally target a specific scope. Args: mode: "enable" to start recording, "disable" to pause, "status" to check. scope: Hierarchical scope to target (e.g. "top.hw.u_ext"). Empty = all probes. |
| save_checkpoint | Save a simulation checkpoint for later restoration. Checkpoints capture the complete simulator state. Use restore_checkpoint to return to this point without re-simulating from time 0. Args: name: Checkpoint name (alphanumeric, e.g. "chk_10ms"). Auto-generated if empty. |
| restore_checkpoint | Restore simulation to a previously saved checkpoint. Args: name: Checkpoint name to restore. Empty = last saved checkpoint. |
| bisect_signal | Find when a signal condition first becomes true using automated binary search. Internally saves checkpoints and repeatedly restores/runs with watchpoints to narrow down the exact time. Returns iteration log and final time range. Args: signal: Full hierarchical signal path. op: Comparison operator (e.g. "=="). value: Target value (e.g. "8'h11"). start_ns: Start of search range in nanoseconds. end_ns: End of search range in nanoseconds. precision_ns: Stop when range is narrower than this (default 1000ns). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |