aioscilloscope / AI / MCP

An MCP server for your oscilloscope

dho-mcp lets Claude, or any AI assistant that speaks the Model Context Protocol, drive a Rigol DHO or MHO: look at the screen, name the signals, measure with units and uncertainty, capture, decode and analyse, then tell you what it found. Every change it makes is reported and can be undone.

CH1What you can ask

The assistant picks the tools, reads the answers, and explains them in plain language. You stay at the bench.

CH2The tools

ToolWhat it does
describeThe model, its real limits, the image it runs and every current setting.
identifyNames what is on each channel: a square at 1 kHz, a sine, a UART at 115200 8N1, I²C, noise.
measureMeasurements with units, statistics and an uncertainty; optional pass, fail or marginal against limits you give.
screenshotThe screen as an image the assistant can look at.
configureChannels, timebase, trigger and acquisition; every change is read back as old → requested → actual.
captureA full record summarised: statistics, measurements, a small CSV, a thumbnail; the full record can be kept as evidence.
decodeBus decodes and their event tables, including the NovaOS decoders.
eye_jitterEye diagram and jitter breakdown.
generateDrives the built-in generator, only within the amplitude and offset limits the operator set.
snapshot · restoreSaves and puts back the scope's settings.
autoscale · run · stop · single · queryThe basics, and read-only queries.

CH3Safe by design

CH4On NovaOS, and on stock firmware

On a scope running NovaOS, the scope itself computes Identify, the eye and jitter, and the density rate. On a scope running Rigol's stock firmware, the server reads the waveform and runs the same analysis code on the PC, so most tools work there too.

Setup with Claude Code

claude mcp add dho -- dho-mcp --host <your-scope>
# add --read-only to look without touching anything,
# or --gen-max-vpp 2 to let it use the generator up to 2 Vpp

An example exchange

→ identify
← CH1 square 1 kHz, duty 50 %, 3.3 Vpp, rise 4 ns (0.97)
  CH2 sine 1 kHz, THD 0.1 % (0.95)
  CH3 UART 115200 8N1 (0.92)
→ measure CH1 Vpp, rise time, 4 readings, limit rise ≤ 5 ns
← Vpp 3.3 V · rise 4.1 ns ± 0.8 ns pass
→ configure CH1 scale 0.5 V/div
← 1.0 → 0.5 V/div, set · undo: restore

The example runs against the test suite's simulated scope. The server has been checked read-only on our own DHO924S; it is not available to download yet. Tell us if you want to try it: [email protected].