dwf-mcp-server
Click on "Deploy 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., "@dwf-mcp-serverlist connected Digilent devices"
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.
dwf-mcp-server
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).
Supported Devices
Analog Discovery 2 (AD2)
Analog Discovery 3 (AD3)
Digital Discovery (DD)
Any device supported by the Digilent WaveForms SDK
Related MCP server: niscope-mcp
Prerequisites
Docker installed on the host machine.
No host-side WaveForms SDK installation is required. The proprietary
libdwf.sois added via a derived Dockerfile layer (see Installation).USB device permissions — Digilent USB devices default to
root:root 0664. If the container cannot find any devices, add a udev rule on the host:# /etc/udev/rules.d/99-digilent.rules SUBSYSTEM=="usb", ATTRS{idVendor}=="1443", MODE="0666"Then reload:
sudo udevadm control --reload-rules && sudo udevadm trigger
Installation
The 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.
1. Create a derived Dockerfile
Create a file named Dockerfile.dwf:
FROM ghcr.io/kenosinc/dwf-mcp-server:latest
ARG ADEPT_VERSION=2.27.9
ARG WAVEFORMS_VERSION=3.24.4
RUN ARCH="$(dpkg --print-architecture)" \
&& apt-get update \
&& apt-get install -y --no-install-recommends curl \
&& curl -fsSL "https://files.digilent.com/Software/Adept2%20Runtime/${ADEPT_VERSION}/digilent.adept.runtime_${ADEPT_VERSION}-${ARCH}.deb" \
-o /tmp/adept-runtime.deb \
&& curl -fsSL "https://files.digilent.com/Software/Waveforms/${WAVEFORMS_VERSION}/digilent.waveforms_${WAVEFORMS_VERSION}_${ARCH}.deb" \
-o /tmp/waveforms.deb \
&& (apt-get install -y --no-install-recommends /tmp/adept-runtime.deb /tmp/waveforms.deb || true) \
&& for cmd in xdg-desktop-menu xdg-icon-resource xdg-mime; do \
printf '#!/bin/sh\nexit 0\n' > "/usr/bin/$cmd" && chmod +x "/usr/bin/$cmd"; \
done \
&& dpkg --configure -a \
&& apt-get purge -y curl \
&& apt-get autoremove -y \
&& rm -f /tmp/adept-runtime.deb /tmp/waveforms.deb \
&& rm -rf /var/lib/apt/lists/*2. Build the image
docker build -f Dockerfile.dwf -t dwf-mcp-server .3. Configure your MCP client
Claude Code
claude mcp add dwf -- docker run -i --rm --privileged dwf-mcp-serverClaude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"dwf": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--privileged",
"dwf-mcp-server"
]
}
}
}Pass --privileged so the container can access USB devices.
Project-level config (Claude Code)
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:
cp .mcp.example.json .mcp.jsonEdit the resulting .mcp.json to match your local image tag or to add other
servers; the original .mcp.example.json stays clean and shareable.
Available MCP Tools
Tool | Description |
| List all connected Digilent WaveForms devices |
| Get detailed information about a specific device |
| Capture analog waveform samples (oscilloscope); supports |
| Generate an analog signal (AWG): sine, square, triangle, ...; supports |
| Measure DC voltage, RMS, frequency, period, or peak-to-peak |
| Control the programmable power supply (V+ / V-) |
| Capture digital logic signals (logic analyzer); supports |
| Read the logic level of a digital I/O pin |
| Set the logic level of a digital I/O pin |
| Send and receive data over SPI using the digital protocol interface |
| Report per-sub-instrument running/idle status (AWG, scope, LA, power supply) |
| Close the persistent device session and stop all outputs |
| Check whether the persistent device session is currently open |
Development
See CLAUDE.md for development setup, coding conventions, and release procedures.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Create RF signal projects from prompts, inspect graphs, and export IQ data.
Drive real devices from your AI Coding tool. Embed a client SDK (Unity, Godot, Flutter, iOS/macOS, Android, React Native, Web) in your app, then capture screenshots, traverse the UI tree, inject taps and key events, and run automated test tasks on the physical device over a secure relay.
Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
Control your Discord community: send/read messages, manage channels and forums, and handle webhook…
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables LLMs like Claude to interact with PicoScope oscilloscopes for signal acquisition, measurement, and analysis. Supports device management, data capture, triggering, and signal generation through natural language commands.245-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to directly control NI oscilloscopes (e.g., PXIe-5160/5164/5110) through the Model Context Protocol, including waveform acquisition, measurement, and configuration.MIT
- AlicenseNot gradedqualityBmaintenanceEnables LLMs to control a PicoScope 5000A USB oscilloscope for signal generation, block capture, measurements, and frequency response sweeps.1MIT
- AlicenseAqualityAmaintenanceEnables LLMs to control RIGOL oscilloscopes over SCPI via LAN or USB, including configuring channels/timebase/trigger, taking measurements, capturing waveforms and screenshots, decoding serial protocols, running FFT analysis, and controlling the built-in AFG.38MIT