I thought it would be a fun experiment to see what Claude would be capable of if I gave it control of my oscilloscope. Maybe it could save time by automatically verifying changes or recording results. To do this, I (and Claude) created an MCP server that uses PyVISA to control the scope.
Some examples I tried were asking Claude to verify if I2C was functional after porting MicroPython to the DUT Hub. Or checking if PWM frequency was correct. These aren't particularly difficult tasks to do manually, but it is pretty fun to watch it write the code, setup the scope and fix any issues in less than a minute or two.
Scope Control via MCP
The integration works by exposing a set of tools to Claude that map to standard SCPI commands. This allows the agent to treat the oscilloscope like any other API. Here are the current supported commands.
| Tool | Description |
|---|---|
scope_idn |
Identify the scope |
scope_autoscale |
Auto-configure all channels and timebase |
scope_run / scope_stop / scope_single |
Acquisition control |
scope_set_timebase |
Set time/div and delay |
scope_set_channel |
Set V/div, offset, coupling, BW limit |
scope_set_trigger |
Configure edge trigger |
scope_measure |
Single measurement (frequency, Vpp, rise time, …) |
scope_measure_all |
All measurements for a channel at once |
scope_waveform |
Download digitized waveform data |
scope_serial_setup_uart |
Configure UART serial decode |
scope_serial_trigger |
Trigger on UART events |
scope_serial_read |
Read decoded serial frames |
scope_screenshot |
Capture scope display as PNG |
scope_state |
Full snapshot of current configuration |
Checkout the video for live demo.