Metadata-Version: 2.4
Name: wal-mcp
Version: 0.1.0
Summary: MCP server for RTL waveform analysis using WAL
Author: Yossi Nivin
Maintainer: Kaleb Barrett
License: BSD-3-Clause
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: mcp>=1.0.0
Requires-Dist: wal-lang>=0.8.0
Requires-Dist: pylibfst
Dynamic: license-file

# Waveform MCP Server

MCP (Model Context Protocol) server for RTL waveform analysis using WAL (Waveform Analysis Language).

## Tools

### get_signal_list
Get hierarchical list of signals from waveform file with optional regex filtering.
- `waveform_file` (required): Path to waveform file
- `pattern` (optional): Regex pattern to filter signals

**Example:**
```json
{"tool": "get_signal_list", "arguments": {"waveform_file": "sim.vcd", "pattern": "cpu.*"}}
```

### get_signal_transitions
Extract signal transitions within specified time ranges.
- `waveform_file` (required): Path to waveform file
- `signal_name` (required): Full signal name
- `start_time` (optional): Start time, default 0
- `end_time` (optional): End time, default end of simulation

**Example:**
```json
{"tool": "get_signal_transitions", "arguments": {"waveform_file": "sim.vcd", "signal_name": "clk", "start_time": 0, "end_time": 100}}
```

### get_waveform_length
Get the total simulation length/duration.
- `waveform_file` (required): Path to waveform file

**Example:**
```json
{"tool": "get_waveform_length", "arguments": {"waveform_file": "sim.vcd"}}
```

### execute_wal_expression
Execute WAL expressions for advanced waveform analysis.
- `waveform_file` (required): Path to waveform file
- `expression` (required): WAL expression to execute

**Example:**
```json
{"tool": "execute_wal_expression", "arguments": {"waveform_file": "sim.vcd", "expression": "(find (= clk 1))"}}
```

### get_wal_examples
Generate signal-specific WAL examples for your waveform.
- `waveform_file` (required): Path to waveform file

**Example:**
```json
{"tool": "get_wal_examples", "arguments": {"waveform_file": "sim.vcd"}}
```

## Supported Formats

- VCD (Value Change Dump)
- FST (Fast Signal Trace)
- Other formats supported by WAL

## Credits

Built on [WAL (Waveform Analysis Language)](https://github.com/ics-jku/wal), a domain-specific language for hardware waveform analysis. See the [WAL website](https://wal-lang.org/) for more information.

## Installation

```bash
pip install -e .
```

## Development

To set up a development environment, install the `dev` dependencies:

```bash
pip install -e .[dev]
```

## Testing

To run the test suite:

```bash
pytest
```

## Usage

Add to your MCP client configuration:

```json
{
  "mcpServers": {
    "waveform": {
      "type": "stdio",
      "command": "wal-mcp-server",
      "args": []
    }
  }
}
```

For WAL expression syntax and advanced examples, see the [WAL documentation](https://wal-lang.org/documentation/usage).

## Requirements

- Python 3.10+
- `cmake` (for FST support)
- [WAL (Waveform Analysis Language)](https://github.com/ics-jku/wal) >= 0.8.0
- MCP Python SDK >= 1.0.0

## License

BSD 3-Clause License. See [LICENSE](LICENSE) for details.
