Reported issues for Digilent WaveForms MCP Server
Pod holds 17 of 38 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.
Back to Digilent WaveForms MCP Server.
Most discussed
Add startup diagnostics to detect DWF SDK silent failure conditions
Summary
Add startup-time environment checks in server.py that detect DWF SDK silent failure conditions and emit clear log warnings, instead of letting tools silently produce no physical output.
Background & Motivation
The DWF SDK has a dangerous failure mode: when certain prerequisites are missing, FDwfEnum() returns 0 devices with no error, or API calls succeed but produce no physical signals. This was discovered during Docker USB passthrough debugging (see `docs/debug-docker-silen
Read the thread · 2026-03-06 · closed · 2 comments
AWG output stops immediately after generate_waveform returns (close resets analog_output)
Problem
Calling generate_waveform to start a continuous waveform (duration=0) does not produce any signal that survives the tool call. Any follow-up measurement — via analog_capture, measure, or an external scope — shows no signal at the W1 pin.
Reproduction
Loopback W1 to Scope CH1+ (or attach external scope to W1)
Call:
generate_waveform(channel=1, waveform="square", frequency=1000, amplitude=2.5, offset=2.5, duration=0) # → retur
Read the thread · 2026-04-27 · closed · 1 comment
Release v0.1.0
Summary
First release with hardware-validated tools.
Tasks
- Update
versioninpyproject.tomlto0.1.0 - Update
versioninserver.jsonto0.1.0 - Final review of
README.mdbadges and descriptions - Create CHANGELOG (optional)
- Push tag
v0.1.0→ GitHub Actions publishes Docker image + MCP Registry
Files
pyproject.tomlserver.jsonREADME.md
Dependencies
- M0 (environment setup) complete
- M1 (bug fixes) complete
- M2 (power & GPIO) complete
- M3 (SPI
Read the thread · 2026-02-27 · closed · 1 comment
Hardware validation — analog (W1→CH1 loopback)
Summary
Validate analog tools using a W1 output → CH1 input loopback connection on the AD3.
Tasks
- Use
generate_waveformto output each waveform type (sine, square, triangle, ramp-up, ramp-down) - Use
analog_captureto capture waveforms and verify correct shape - Use
measureto verify all 5 measurement types (frequency, min, max, mean, pk2pk) return reasonable values - Append results to
docs/hardware-validation.md
Files
docs/hardware-validation.md
Dependencies
Read the thread · 2026-02-27 · closed · 1 comment
Add render_image option to protocol decode tools (SPI/I2C/UART)
Summary
Extend the render_image pattern introduced in PR #88 (analog_capture / digital_capture / measure) to protocol decode tools, so that spi_transfer (and future i2c_transfer / uart_transfer) can return an annotated waveform PNG alongside the decoded frame data.
Background & Motivation
PR #88 established the dual-output pattern for capture tools: a vision-capable LLM gets a PNG image (overview / pattern recognition) plus ToolResult.structured_content JSON (machine-readable
Read the thread · 2026-05-11 · open · 0 comments
Add waveform image rendering to capture tools
Summary
Add an opt-in render_image: bool = False parameter to analog_capture, digital_capture, and measure so the tools can return a PNG plot of the captured waveform alongside the existing samples / metrics. Vision-capable LLM clients can then "see" the signal directly instead of having to reason over thousands of raw sample values.
Background & Motivation
When an LLM agent is helping with hardware bring-up or IC debugging, the most useful question is often "does this waveform
Read the thread · 2026-05-09 · closed · 0 comments
Adopt uv.lock for reproducible builds (Docker + CI)
Summary
Commit uv.lock and migrate Docker and CI from uv pip install to uv sync --frozen so that dependency versions are pinned per release tag and lock-file drift is detected automatically.
Background & Motivation
The published image at ghcr.io/kenosinc/dwf-mcp-server:X.Y.Z is currently not reproducible:
Dockerfileinstalls dependencies withuv pip install --system --no-cache ., which resolves the>=constraints inpyproject.toml(fastmcp>=3.0,dwfpy>=1.0) at b
Read the thread · 2026-05-09 · closed · 0 comments
Hybrid device connection lifecycle (auto-connect + explicit close + idle timeout)
Summary
Replace the per-tool-call open/close device pattern (with dwf.Device(...)) with a hybrid persistent session model: auto-connect on first tool use, keep the device open across calls, support explicit close_device, and auto-close after idle timeout.
Background & Motivation
Currently, all 8 tool call sites open and close the device on every invocation via with dwf.Device(device_id=...) as device:. This causes three problems:
- AWG continuous output stops immediately — `
Read the thread · 2026-03-07 · closed · 0 comments
Most recent
Build Docker image without bundled libdwf — install dependencies only
Problem
The current Dockerfile downloads and installs both the Adept 2 Runtime and the WaveForms SDK (which includes libdwf.so) at build time. Since libdwf.so is proprietary (Digilent/NI), bundling it in a publicly distributed Docker image raises licensing concerns.
Approach
- Public image: Includes only the Adept 2 Runtime (dependency libraries).
libdwf.sois not bundled. - User installation: Users create a derived Dockerfile that installs the WaveForms SDK as an
Read the thread · 2026-02-27 · closed · 0 comments
Document libdwf installation and verify AD3 connectivity
Summary
Document the step-by-step procedure to install the WaveForms SDK (libdwf) on the host machine and verify that an Analog Discovery 3 (AD3) is recognized and usable by dwf-mcp-server.
Background
libdwf.sois proprietary and must be installed on the host (never bundled in Docker).dwfpydepends onlibdwf.soat runtime; the server fails at startup if it is missing.- Users with a freshly connected AD3 need a clear, copy-paste-friendly checklist to go from zero to a worki
Read the thread · 2026-02-27 · closed · 0 comments
Release v0.2.0
Summary
Major update release including all protocol tools and advanced analog features.
Tasks
- Update
versioninpyproject.tomlto0.2.0 - Update
versioninserver.jsonto0.2.0 - Update
README.md(new tool list) - Update CHANGELOG
- Push tag
v0.2.0→ GitHub Actions publishes Docker image + MCP Registry
Files
pyproject.tomlserver.jsonREADME.md
Dependencies
- M6 (I2C, UART, CAN) complete
- M7 (advanced analog) complete
Size: S
Read the thread · 2026-02-27 · closed · 0 comments
Add AM/FM modulation and custom waveform to generate_waveform
Summary
Extend generate_waveform with AM/FM modulation and custom waveform (arbitrary sample array) support.
Tasks
- Add
modulationparameter (AM / FM / none) - Add
modulation_frequencyandmodulation_depthparameters - Add
waveform="custom"+samples: list[float]parameter - Add mock tests
- Update README with parameter descriptions
Files
src/dwf_mcp_server/tools/analog.pytests/test_server.pyREADME.md
Size: L
Read the thread · 2026-02-27 · open · 0 comments
Add trigger settings to analog_capture / measure
Summary
Add trigger configuration parameters to analog_capture and measure for stable waveform acquisition.
Tasks
- Add
trigger_source,trigger_level,trigger_slopeparameters - Use
scope.setup_edge_trigger() - Support no-trigger mode (existing behavior) as the default
- Add mock tests
- Update README with parameter descriptions
Files
src/dwf_mcp_server/tools/analog.pytests/test_server.pyREADME.md
Dependencies
- #17 (analog API fix)
Size: M
Read the thread · 2026-02-27 · open · 0 comments
Add device_telemetry tool
Summary
Add an MCP tool to retrieve AD3 internal telemetry (temperature, voltage, current).
Tasks
- Read AD3 PCB / FPGA temperature
- Read USB voltage/current, AUX voltage/current
- Implement
device_telemetry(device_index)tool - Add mock tests
- Update README with tool description
Files
src/dwf_mcp_server/tools/devices.pytests/test_server.pyREADME.md
Size: S
Read the thread · 2026-02-27 · open · 0 comments
Add can_send / can_receive tools
Summary
Expose AD3 CAN protocol functionality as MCP tools.
Tasks
- Use
device.protocols.can - Implement
can_send(device_index, bitrate, id, data, extended)tool - Implement
can_receive(device_index, bitrate, timeout)tool - Add mock tests
- Update README with tool descriptions
Files
src/dwf_mcp_server/tools/protocols.pytests/test_server.pyREADME.md
Size: M
Read the thread · 2026-02-27 · open · 0 comments
Add uart_send / uart_receive tools
Summary
Expose AD3 UART protocol functionality as MCP tools.
Tasks
- Use
device.protocols.uart - Implement
uart_send(device_index, baud_rate, data_bits, parity, stop_bits, data)tool - Implement
uart_receive(device_index, baud_rate, data_bits, parity, stop_bits, timeout)tool - Add mock tests
- Update README with tool descriptions
Files
src/dwf_mcp_server/tools/protocols.pytests/test_server.pyREADME.md
Size: M
Read the thread · 2026-02-27 · open · 0 comments
Add i2c_read / i2c_write tools
Summary
Expose AD3 I2C protocol functionality as MCP tools.
Tasks
- Use
device.protocols.i2c - Implement
i2c_read(device_index, address, register, length)tool - Implement
i2c_write(device_index, address, register, data)tool - Handle NACK (return error response)
- Add mock tests
- Update README with tool descriptions
Files
src/dwf_mcp_server/tools/protocols.pysrc/dwf_mcp_server/server.pytests/test_server.pyREADME.md
Size: M
Read the thread · 2026-02-27 · open · 0 comments
The remaining reports are on the project's issue tracker.