
paolorondot/surfer-mcp
Developer tools이 페이지는 AI로 자동 번역되었습니다. 기술적인 세부 사항은 원문을 확인하세요. 원문 보기
MCP server for controlling Surfer waveform viewer via WCP
개요
An MCP server that lets AI assistants control Surfer, an open-source waveform viewer for hardware design and verification. It communicates with Surfer over the Waveform Communication Protocol (WCP) and can also read waveform files directly via pywellen. - waveform files (VCD, FST, GHW, etc.) - — list scopes and signals in the design - — add/remove signals, set cursor position, zoom, set viewport range, add markers, change signal colors - — get values at a timestamp, find edges, search for values, get all transitions in a time window - the Surfer window (macOS) - Python 3.10+ - Surfer installed and on your PATH - macOS (the screenshot feature uses Quartz; other features work cross-platform if you remove the pyobjc dependency) Add to your Claude Code MCP settings (~/.claude/settings.json or project .mcp.json): When a tool is first called, the server automatically: 1. Launches Surfer with WCP enabled 2. Connects over TCP and performs the WCP handshake 3.
README
원문 README의 일부입니다. 원문 보기.
surfer-mcp
An MCP server that lets AI assistants control Surfer, an open-source waveform viewer for hardware design and verification. It communicates with Surfer over the Waveform Communication Protocol (WCP) and can also read waveform files directly via pywellen.
Features
- Load & reload waveform files (VCD, FST, GHW, etc.)
- Browse hierarchy — list scopes and signals in the design
- Control the viewer — add/remove signals, set cursor position, zoom, set viewport range, add markers, change signal colors
- Read signal data — get values at a timestamp, find edges, search for values, get all transitions in a time window
- Screenshot the Surfer window (macOS)
Requirements
- Python 3.10+
- Surfer installed and on your
PATH - macOS (the screenshot feature uses Quartz; other features work cross-platform if you remove the
pyobjcdependency)
Installation
# Clone the repo
git clone https://github.com/PaoloRondot/surfer-mcp.git
cd surfer-mcp
# Install with uv (recommended)
uv pip install -e .
# Or with pip
pip install -e .
Usage with Claude Code
Add to your Claude Code MCP settings (~/.claude/settings.json or project .mcp.json):
{
"mcpServers": {
"surfer": {
"command": "uv",
"args": ["run", "--directory", "/path/to/surfer-mcp", "surfer-mcp"]
}
}
}
Or if you installed it globally:
{
"mcpServers": {
"surfer": {
"command": "surfer-mcp"
}
}
}
Usage with other MCP clients
The server runs over stdio. Start it with:
surfer-mcp
Or without installing:
uv run --directory /path/to/surfer-mcp surfer-mcp
Available Tools
| Tool | Description |
|---|---|
load_waveform |
Load a waveform file into Surfer |
reload_waveform |
Reload the current waveform |
list_scopes |
List all scopes (modules/instances) in the hierarchy |
list_signals |
List signals within a scope |
add_signals |
Add signals to the viewer by name |
add_scope |
Add all signals in a scope |
add_items / remove_items |
Add or remove items by path/ID |
get_item_list / get_item_info |
Query displayed items |
set_cursor |
Move the cursor to a timestamp |
set_viewport_range / set_viewport_to |
Control the visible time range |
zoom_to_fit |
Zoom to fit all data |
add_markers |
Add named time markers |
focus_item |
Scroll to an item |
set_item_color |
Change signal display color |
get_signal_values |
Read signal values at a timestamp |
find_rising_edge / find_falling_edge |
Find next edge of a signal |
find_value |
Find next occurrence of a specific value |
get_transitions |
Get all transitions in a time window |
get_time_range |
Get simulation time range and timescale |
설치
This server does not publish a one-line install command.
Open the repository installation guide MCP 초보자라면? mcpskill.org 가이드부터 시작하세요 →설정
{
"mcpServers": {
"surfer": {
"command": "uv",
"args": ["run", "--directory", "/path/to/surfer-mcp", "surfer-mcp"]
}
}
}