dso2d15-mcp
MCP server for controlling Hantek DSO2D15 and other DSO2000-family oscilloscopes via USB and SCPI, enabling waveform acquisition, measurements, and screen captures.
README
dso2d15-mcp
A Model Context Protocol (MCP) server for the Hantek DSO2D15 (and other DSO2000-family scopes) using USB and SCPI over PyVISA (pyvisa-py backend by default).
Official SCPI reference: DSO2000 Series SCPI Programmer’s Manual (PDF).
Waveform acquisition follows the same PRIVate:WAVeform:DATA:ALL? flow used in community tooling (hantek-dso2000).
Requirements
- Python 3.10+
- USB connection to the scope (rear USB device port)
- OS support for USB-TMC via PyVISA:
- Linux: often works with
usbcore/usbtmckernel driver or libusb stack used bypyvisa-py - macOS: install includes
pyusbsopyvisa-pycan enumerate USB-TMC. If discovery still fails, try NI-VISA andDSO2D15_VISA_BACKEND=@ni.
- Linux: often works with
DSO2D15 USB IDs (matches VISA USB0::1183::20574::…): Vendor 0x049F (1183), Product 0x505E (20574). Example serial: CN5546029098237 → resource like USB0::1183::20574::CN5546029098237::0::INSTR.
If opening the instrument fails with usb.core.USBError: … Access denied (insufficient permissions) on macOS, pyvisa-py cannot claim the USB-TMC interface via libusb. Install NI-VISA, set DSO2D15_VISA_BACKEND=@ni, and use the NI resource string, or fix libusb access for that device (vendor docs / system USB policy).
Install
cd dso2d15-mcp
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
Run the server (stdio transport for Cursor/Claude Desktop):
dso2d15-mcp
# or
python -m dso2d15_mcp.server
Environment variables
| Variable | Purpose |
|---|---|
DSO2D15_VISA |
Full VISA resource string, e.g. USB0::0x049F::0x505E::...::INSTR (use dso2d15_list_visa_resources to discover) |
DSO2D15_VISA_QUERY |
Pattern for auto-pick when DSO2D15_VISA is unset. Default: USB0::1183::20574:?* (Hantek DSO2000 IDs used by common tooling) |
DSO2D15_TIMEOUT_MS |
VISA read timeout in ms (default 120000; large captures can be slow) |
DSO2D15_VISA_BACKEND |
PyVISA resource manager string (default @py for pyvisa-py) |
DSO2D15_SNAPSHOT_DIR |
Directory for BMP/SVG files from dso2d15_measure_snapshot (default: system temp) |
Cursor MCP configuration
Add to your MCP settings (adjust the path):
{
"mcpServers": {
"dso2d15": {
"command": "/absolute/path/to/dso2d15-mcp/.venv/bin/dso2d15-mcp",
"env": {
"DSO2D15_VISA": "USB0::...your resource...::INSTR"
}
}
}
}
Tools
| Tool | Description |
|---|---|
dso2d15_list_visa_resources |
List VISA resources (query parameter, default ?*) |
dso2d15_list_hantek_candidates |
List resources matching DSO2D15_VISA_QUERY |
dso2d15_identify |
*IDN? |
dso2d15_scpi_write |
Send a SCPI command with no query response |
dso2d15_scpi_query |
ASCII query (responses that are not binary blocks) |
dso2d15_scpi_query_binary |
Binary/block responses (returns length + base64 preview) |
dso2d15_fetch_waveform |
High-level waveform JSON via PRIVate:WAVeform:DATA:ALL? |
dso2d15_measure_vpp_frequency |
Automatic Vpp and frequency via :MEASure:CHANnel<n>:ITEM? |
dso2d15_measure_snapshot |
Vpp + freq, optional BMP screen grab (best-effort), and SVG waveform plot path |
Use dso2d15_scpi_query for interactive exploration (examples: *IDN?, :CHANnel1:SCALe?, :TIMebase:MAIN:SCALe?). Refer to the Hantek PDF for the full command set.
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.