
Rigol Oscilloscope
io.github.K-Dense-AIPublished by GitHub account K-Dense-AIv0.1.2Updated Oct 24, 2026
MCP server for Rigol oscilloscopes (DS1000Z, MSO5000, DHO series): measurements and waveforms.
The publisher's own server: Scope (AEC) - Preview
Overview
MCP server that lets an assistant read, configure and capture from Rigol oscilloscopes over SCPI, including measurements, waveforms and screenshots.
- What you can do
- Read instrument identity, channel/timebase/trigger settings and the raw command log
- Run, stop, single-shot and force-trigger acquisitions, plus autoscale and reconnect
- Change channel vertical settings, timebase and edge trigger, with applied values returned
- Take the scope's automatic voltage and timing measurements for a channel
- Capture calibrated waveforms with statistics and optional CSV export, and save display screenshots
- When to use it
- Useful when an assistant should inspect or drive a Rigol DS1000Z, MSO5000 or DHO series scope on the bench: checking current setup, measuring a signal, scripting a single acquisition, or grabbing a screenshot for a lab notebook.
- Requirements
- Runs locally as a Python package (uvx labmcp-rigol-scope) over stdio. Needs a reachable instrument address via LABMCP_ADDRESS (USB-TMC, VXI-11/LXI or raw TCP), PyVISA with pyvisa-py, and libusb for USB. A built-in simulator is available with LABMCP_SIMULATE=1, so no hardware is needed to try it.
Installation
In SourceWeft
- Open Rigol Oscilloscope in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Rigol Oscilloscope — MCP Server
Let an AI agent read the setup, adjust channels, timebase and trigger, run single acquisitions, take the scope's own measurements, capture calibrated waveforms and grab screenshots on Rigol digital oscilloscopes over SCPI.
Try it without hardware
The simulated scope has a 1 kHz, 0-3 V square wave on CH1 and a 2 kHz, 1 V sine on CH2 (CH3/CH4 grounded). It answers :WAVeform:DATA? and :DISPlay:DATA? with real IEEE 488.2 binary blocks, keeps an SCPI error queue, and its trigger only fires when the level is inside the signal, so you can try single with a bad trigger level.
Connect your oscilloscope
- USB: plug in the USB device port. The server uses PyVISA with the pure-Python
pyvisa-pybackend, which needslibusbon the system (brew install libusb,apt install libusb-1.0-0; on Windows use NI-VISA with?backend=@ivi). Find the resource withpython -m pyvisa infooruvx labmcp ports. - LAN: in the scope's Utility I/O / LAN settings enable DHCP or set a static IP, and note the address.
- Test the connection:
--checkprints the*IDN?identity and the detected command family.
Add to your MCP client
Claude Code
Claude Desktop / Cursor / Windsurf (claude_desktop_config.json, .cursor/mcp.json, …)
Add --read-only to allow reading settings, measurements, waveforms and screenshots while blocking every tool that changes the scope setup. For other clients, generate the snippet with uvx labmcp config rigol-oscilloscope --address TCPIP0::192.168.1.50::INSTR --client vscode (also cursor, codex, claude-code).
Tools
get_connection_info, get_command_log and reconnect are built into every LabMCP server. The command log shows every SCPI command sent.
Safety limits
Override at launch, e.g. --limit max_memory_points=24000000. An oscilloscope does not source energy, so there are no hazard tools; this server does not control the built-in waveform generator some models have.
Example prompts
- "What is on the scope right now? Give me the channel settings, timebase and trigger."
- "Measure the frequency, Vpp and rise time on CH1."
- "Set CH2 to 200 mV/div, AC coupling, trigger on CH2 falling edge at 0 V, then take a single shot and save the full memory record to ~/data/burst.csv."
- "Capture the CH1 waveform from the screen and tell me the duty cycle and whether the trace is clipped."
- "Take a screenshot of the scope so I can put it in my lab notebook."
Notes
- One driver, three command families. Commands common to all guides are used as written (long forms, e.g.
:TRIGger:EDGE:LEVel,:MEASure:ITEM? VPP,CHANnel1,:WAVeform:PREamble?). The differences are taken from each guide: autoscale is:AUToscale(DS1000Z, MSO5000) or:AUToset(DHO); screenshots are:DISPlay:DATA? ON,OFF,PNG(DS1000Z),:DISPlay:DATA? PNG(DHO) or:DISPlay:DATA?→ BMP (MSO5000); screen captures return 1200 points (DS1000Z, 12 divisions) or 1000 (MSO5000/DHO, 10 divisions). The family is detected from*IDN?; unknown Rigol models are refused unless you force--option profile=DS1000Z|MSO5000|DHO. - Waveform scaling always uses
:WAVeform:PREamble?and BYTE format: volts = (byte − YORigin − YREFerence) × YINCrement. WORD format is not used because the DHO guides do not document its byte order. For the 12-bit DHO scopes this means 8-bit screen/memory data. - Deep memory (
mode="memory") follows the documented RAW procedure: stop the scope, then read in batches of 250 000 points with:WAVeform:STARt/STOP(the DS1000Z maximum for BYTE). The MSO5000 and DHO guides document batched reads but not a maximum; the server checks every batch length and fails clearly if a batch comes back short. Not yet verified on MSO5000/DHO hardware. - Captures hold the connection from source selection to the last byte, then re-read the preamble: if V/div or the timebase changed during the read, the capture is refused rather than mis-scaled.
clipped_fractioncounts points at the ADC limits (codes 0/255) in both modes. The returned trace keeps each block's minimum and maximum sample, so narrow glitches survive downsampling.save_path(CSV) and the screenshotsave_path(.png,.bmpon the MSO5000) must be new files: they are checked before anything is read, and existing files are never overwritten. - Measurements return
nullwhen the scope answers 9.9E37 (cannot measure). Duty cycle and overshoot are reported exactly as the scope returns them (the DS1000Z guide defines duty as a ratio). - Setting commands are checked by reading
:SYSTem:ERRor?afterwards, so an out-of-range scale, offset or trigger level is reported instead of silently ignored. The scale snaps to 1-2-5 steps unless fine adjustment (VERNier) is on. - LAN: the programming guides describe LAN access through VISA (VXI-11/LXI,
TCPIP0::<ip>::INSTR). Rigol scopes also accept raw SCPI on TCP port 5555 (tcp://<ip>:5555); that port is widely used but not stated in these guides. - USB additionally needs
libusbforpyvisa-py;pyusbis installed with this package. - Screenshots are returned as MCP image content only for PNG; large BMP screenshots (MSO5000) are saved to disk and the path is returned.
Hardware verification
Source: servers/engineering/rigol-oscilloscope/README.md at commit 46545ea
Tools
0Version history
2- v0.1.2LatestSep 27, 2026
- v0.1.0Sep 26, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Other Scope integrations

Scope (AEC) - Preview
bid.scopeOfficial publisher
Preview MCP server for Scope's AEC subcontractor procurement layer, exposing status, service categories, a waitlist signup and project rescheduling.

Scope (Legal)
bid.scopeOfficial publisher
Lets an assistant dispatch legal-services work — process servers, court reporters, records retrieval, experts — to credentialed professionals and track the…

Scope (Claims) - Preview
bid.scopeOfficial publisher
Preview MCP server for Scope's insurance-claims professional procurement: check roadmap status, list planned categories, join a waitlist, and reschedule…

ScopeProfit
Published by GitHub account FranprzDev
Turns a client's messy brief into a versioned scope document, estimate and quote, driven from ChatGPT, Claude, Cursor or any MCP client.

naja-scope
Published by GitHub account keplertech
MCP server that lets an AI assistant load SystemVerilog, Verilog or VHDL designs and query hierarchy, connectivity and source without pasting RTL.