The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Digilent WaveForms MCP Server listing page.
MCP Server for Digilent WaveForms
instruments — oscilloscope, arbitrary waveform generator (AWG), and logic analyzer.
Built on dwfpy, a Python binding for the
Digilent WaveForms SDK (libdwf).
libdwf.so is added
via a derived Dockerfile layer (see Installation).root:root 0664. If the container
cannot find any devices, add a udev rule on the host:
Then reload: sudo udevadm control --reload-rules && sudo udevadm triggerThe public Docker image does not bundle any Digilent proprietary software
(Adept 2 Runtime, WaveForms SDK / libdwf.so). You must create a derived image
that adds them.
Create a file named Dockerfile.dwf:
Add to claude_desktop_config.json:
Pass --privileged so the container can access USB devices.
If you have cloned this repository, copy the bundled example to a project-local
.mcp.json (which is gitignored) so Claude Code picks it up automatically when
opened against this directory:
Edit the resulting .mcp.json to match your local image tag or to add other
servers; the original .mcp.example.json stays clean and shareable.
| Tool | Description |
|---|---|
list_devices | List all connected Digilent WaveForms devices |
device_info | Get detailed information about a specific device |
analog_capture | Capture analog waveform samples (oscilloscope); supports action="single" / "start" / "read" / "stop" for continuous capture across tool calls |
generate_waveform | Generate an analog signal (AWG): sine, square, triangle, ...; supports action="pulse" / "start" / "stop" for persistent output |
measure | Measure DC voltage, RMS, frequency, period, or peak-to-peak |
power_supply | Control the programmable power supply (V+ / V-) |
digital_capture | Capture digital logic signals (logic analyzer); supports action="single" / "start" / "read" / "stop" for continuous capture across tool calls |
gpio_read | Read the logic level of a digital I/O pin |
gpio_write | Set the logic level of a digital I/O pin |
spi_transfer | Send and receive data over SPI using the digital protocol interface |
device_state | Report per-sub-instrument running/idle status (AWG, scope, LA, power supply) |
close_device | Close the persistent device session and stop all outputs |
device_session_status | Check whether the persistent device session is currently open |
See CLAUDE.md for development setup, coding conventions, and release procedures.