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.

Github: https://github.com/Netlist-Studio/scope-mcp