Skip to main content
Glama
shaag7967

mcp-server-siglent-sdm3045x

by shaag7967

mcp-server-siglent-sdm3045x

An MCP server that lets AI assistants take measurements with a Siglent SDM3045X bench multimeter connected via USB or LAN.

Unofficial project, not affiliated with or endorsed by Siglent. Tested with an SDM3045X, firmware 5.02.01.10, over USB (Linux) and LAN.

Tools

Tool

Description

read

One reading with the function and range set on the instrument, without changing them

measure

Select a function (DC/AC voltage and current, 2/4-wire resistance, capacitance, frequency, period, continuity, diode, temperature) and take one reading

sample

Timestamped readings over a period (max 600 s, interval ≥ 0.1 s) with min/max/mean/stdev

burst

Up to 10000 readings as fast as the instrument can (about 180/s at speed fast), with statistics

get_device_info

Model, serial number, firmware, connection and the present measurement configuration

Every reading comes with its unit, the range used and, where the data sheet gives a single figure, its accuracy (e.g. ±(0.06 % of reading + 8 counts) as an absolute value). Overloads are reported as "overload": true instead of the instrument's 9.9E37.

With --allow-scpi one more tool is available:

Tool

Description

scpi

Send any SCPI command or query from the Remote Manual (statistics, limits, null, …)

The raw SCPI tool is off by default because it can change any setting, including the LAN configuration.

Related MCP server: sdm-mcp

Requirements

  • Python ≥ 3.10 and uv

  • The instrument connected to the USB device port on the rear, or to the network.

  • Linux, USB: the kernel usbtmc driver makes the instrument available as /dev/usbtmc0. Give logged-in users access with a udev rule:

    echo 'SUBSYSTEM=="usbmisc", KERNEL=="usbtmc[0-9]*", TAG+="uaccess"' | sudo tee /etc/udev/rules.d/70-usbtmc.rules
    sudo udevadm control --reload && sudo udevadm trigger
  • Windows / macOS, USB: install a VISA (NI-VISA or Keysight IO Libraries) and start the server with --visa-backend @ivi.

  • LAN: no extra software. The instrument needs an address in your subnet; then the server finds it by itself. On the instrument open Utility → I/O Config → LAN Settings and turn on DHCP, or enter a static IP address, subnet mask and gateway under Modify Settings (User Manual, section I/O Configuration, available on the Siglent product page). Check that the instrument's subnet matches your network: ours came with the static address 10.11.13.220, which the broadcast search does not reach. While USB is connected, SYST:COMM:LAN:IPAD? (e.g. with the scpi tool) shows the address in use.

Configuration

Claude Code

claude mcp add siglent-sdm3045x -- uvx mcp-server-siglent-sdm3045x
# fixed address instead of auto-detection:
claude mcp add siglent-sdm3045x -- uvx mcp-server-siglent-sdm3045x --resource 192.168.1.50

Claude Desktop and other clients

{
  "mcpServers": {
    "siglent-sdm3045x": {
      "command": "uvx",
      "args": ["mcp-server-siglent-sdm3045x"]
    }
  }
}

Options

Option

Environment variable

Default

--resource RESOURCE

SDM_RESOURCE

auto-detect on USB, then LAN

--serial SERIAL

SDM_SERIAL

any SDM3045X

--allow-scpi

SDM_ALLOW_SCPI=1

off

--visa-backend BACKEND

SDM_VISA_BACKEND

@py (pyvisa-py)

--log-level LEVEL

SDM_LOG_LEVEL

WARNING

RESOURCE can be a device file (/dev/usbtmc0), an IP address or host name (VXI-11), or any VISA resource string such as TCPIP::192.168.1.50::5025::SOCKET (raw socket) or USB0::0xF4EC::0x1203::SDM34XXXXXXXXX::INSTR. Port 5024 is a telnet console and does not work as a socket resource.

Auto-detection tries /dev/usbtmc* first, then Siglent instruments listed by VISA on USB, then VXI-11 instruments in the local network (UDP broadcast to the portmapper, about 1 s). It accepts the first one that identifies itself as an SDM3045X. With several instruments, --serial picks one by its serial number (shown by get_device_info, on the rear label and under Utility → System Setup → System Info). Set --resource instead if the instrument is in another subnet, where the broadcast does not reach it; the two options exclude each other.

Measurement notes

  • The server cannot see how the test leads are connected. It tells the assistant to only switch to functions that match the wiring: currents need the red lead in the I jack; resistance, continuity, diode and capacitance drive a test current of up to 1 mA through the circuit.

  • Switching function or range remotely also changes what the front panel shows.

  • Once the server has sent a command, the instrument is in remote mode: the front panel shows "Immediate Trig" and its keys are locked. Press Shift to return to front panel operation. The instrument offers no remote command for this, so the server cannot release it by itself.

  • Above 7 A, the data sheet recommends 30 s off after 30 s on.

  • Accuracy figures are the one-year data sheet values (23 °C ± 5 °C, 30 min warm-up, speed slow). 2-wire resistance adds 0.2 Ω unless the leads were nulled; AC accuracy depends on the signal frequency and is given per frequency band; thermocouple figures exclude the cold junction error (up to ±3.5 °C with the built-in sensor).

Development

uv sync
uv run pytest                                   # tests use a simulated instrument
npx @modelcontextprotocol/inspector uv run mcp-server-siglent-sdm3045x   # try the tools interactively

To check a real instrument, connect it and run:

uv run python scripts/hardware_test.py                      # voltage-type functions only
uv run python scripts/hardware_test.py --with-test-current  # also resistance, current, capacitance, …
uv run python scripts/hardware_test.py --reconnect          # also unplug/replug USB when asked

The basic checks only use functions that put no current into the inputs. Observed instrument behaviour, including where it differs from the Remote Manual, is described in docs/protocol.md.

License

MIT

Available Tools

5 tools
burstA
Idempotent

Take a series of readings as fast as the instrument can and return statistics plus all values.

Readings are paced by the instrument and have no individual timestamps. Approximate rates (50 Hz mains): dc_voltage, dc_current and resistance 4/s at speed slow, 40/s medium, 175/s fast; ac functions and temperature 4/s; frequency and period 2/s. Bursts estimated to take longer than 600 s are refused. Without function the present function and range are kept; otherwise they are set as in measure.

Args: count: Number of readings, 1 to 10000. function: Measurement function. Leads in HI/LO for voltage, resistance_2w, capacitance, frequency, period, continuity, diode and temperature; in I/LO for currents; resistance_4w also uses HI Sense/LO Sense. range: Fixed range in V, A, Ω or F; omit for autorange. dc_voltage 0.6, 6, 60, 600, 1000; ac_voltage 0.6, 6, 60, 600, 750; dc_current 0.0006, 0.006, 0.06, 0.6, 6, 10; ac_current 0.06, 0.6, 6, 10; resistance_2w/4w 600, 6e3, 60e3, 600e3, 6e6, 60e6, 100e6; capacitance 2e-9, 20e-9, 200e-9, 2e-6, 20e-6, 200e-6, 0.01. Other functions have no range. speed: Only for dc_voltage, dc_current and resistance: slow (10 PLC, default, most accurate), medium (1 PLC) or fast (0.3 PLC). sensor: Required for temperature: pt100 (RTD) or thermocouple type B, E, J, K, N, R, S or T.

NameRequiredDescriptionDefault
countNo
rangeNo
speedNo
sensorNo
functionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, idempotentHint=true) the description discloses substantial behavior: readings have no individual timestamps, pacing is instrument-controlled, bursts projected over 600 s are refused, and function/range may be mutated as a side effect. This is exactly the context annotations cannot carry, and the readOnlyHint=false is consistent with that state-changing behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, then timing behavior, then an Args block that maps cleanly to the parameters. The per-function range list is long but each value is decision-relevant, so nothing is padding; only the repeated function enumerations could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and it still summarizes them. All five parameters, the timing/refusal constraint, and the state-mutation semantics are covered, leaving no gap an agent needs filled before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden, and it does: count bounds (1–10000), per-function lead wiring for function, explicit valid range values for every rangeable function, PLC meanings for speed, and the sensor requirement for temperature. This adds far more than the bare enums in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb and resource ('Take a series of readings as fast as the instrument can') and even names the return ('statistics plus all values'). It hints at the relationship to the sibling 'measure' ('set as in measure'), but never explicitly contrasts burst with sample or read, so an agent must infer the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description supplies practical constraints (600 s refusal limit, per-speed sampling rates that let you estimate duration, default function/range retention), which implicitly guide speed selection. However, it never says when to choose burst over sample, read, or measure, and names no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_device_infoB
Read-onlyIdempotent

Instrument model, serial number, firmware, VISA resource and the present measurement configuration.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile and repeatability are covered by structured data. The description contributes the notable behavioral detail that the returned configuration is the 'present' one, implying a live snapshot rather than cached data. It does not state whether the call actually touches the instrument bus or whether it can fail/time out on a disconnected device.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact clause with zero filler, front-loading the most identifying fields (model, serial, firmware). It is a noun phrase rather than a sentence, which makes it slightly less self-explanatory as a standalone statement but costs no reading effort.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, a full output schema, and annotations covering safety and idempotency, the definition only needs to establish purpose – which the field list does adequately. The only missing element is a usage cue relative to the measurement siblings, a minor gap for such a simple read-only query.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies the tool is argument-free by framing itself purely as a retrieval of device attributes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description enumerates exactly what is retrieved: instrument model, serial number, firmware, VISA resource, and current measurement configuration. Combined with the verb in the name (get_device_info), the resource and scope are unambiguous, and the other siblings (read, measure, sample, burst) are clearly measurement operations rather than identity queries. It stops short of an explicit sentence stating the action, relying on the name for the verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this versus the measurement siblings, and no stated preconditions (e.g., whether a VISA session must already be open). An agent must infer that this is a discovery/identity call made before measurement, which is plausible but not stated anywhere.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

measureA
Idempotent

Select a measurement function and take one reading.

This switches the instrument (front panel included) to the given function, with autorange unless a range is given. Returns value, unit, range used, timestamp (UTC) and, where the data sheet allows, the accuracy of the reading.

Args: function: Measurement function. Leads in HI/LO for voltage, resistance_2w, capacitance, frequency, period, continuity, diode and temperature; in I/LO for currents; resistance_4w also uses HI Sense/LO Sense. range: Fixed range in V, A, Ω or F; omit for autorange. dc_voltage 0.6, 6, 60, 600, 1000; ac_voltage 0.6, 6, 60, 600, 750; dc_current 0.0006, 0.006, 0.06, 0.6, 6, 10; ac_current 0.06, 0.6, 6, 10; resistance_2w/4w 600, 6e3, 60e3, 600e3, 6e6, 60e6, 100e6; capacitance 2e-9, 20e-9, 200e-9, 2e-6, 20e-6, 200e-6, 0.01. Other functions have no range. speed: Only for dc_voltage, dc_current and resistance: slow (10 PLC, default, most accurate), medium (1 PLC) or fast (0.3 PLC). sensor: Required for temperature: pt100 (RTD) or thermocouple type B, E, J, K, N, R, S or T.

NameRequiredDescriptionDefault
rangeNo
speedNo
sensorNo
functionYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes beyond the annotations by disclosing the real side effect: 'This switches the instrument (front panel included) to the given function,' which explains the non-read-only hint. It also lists return content and the accuracy caveat ('where the data sheet allows'), though it omits timing/duration expectations for slow vs fast modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and follows with a clearly labeled Args block. The range enumeration is long but each entry is operationally necessary; a little redundancy remains in restating defaults already implied by the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return-format explanation is optional, yet the description still names value, unit, range, timestamp and accuracy. All four parameters, the autorange default and the function-dependent interactions (speed validity, sensor requirement) are covered, leaving nothing needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description carries the full load and does so: per-function valid range values, units (V, A, Ω, F), the autorange default when range is omitted, PLC semantics for speed with the slow default, and the requirement that sensor is mandatory for temperature.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource combination: 'Select a measurement function and take one reading.' The phrase 'one reading' implicitly distinguishes it from burst and sample, but it never names those siblings, so the agent must infer the split.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied rather than stated: single-reading acquisition with defaults to autorange and slow speed. There is no explicit 'use burst/sample instead when you need multiple readings' routing, which matters given three nearby acquisition siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

readA
Read-onlyIdempotent

Take one reading with the function and range currently set on the instrument (does not change them).

Returns value, unit, range, timestamp (UTC) and, where the data sheet allows, the accuracy.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds real value by stating it does not alter the instrument's function or range and that accuracy is only returned where the data sheet allows, but it omits behavior like settling/wait time or what happens if the instrument is mid-measurement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and its key constraint. The enumerated return list partly duplicates the existing output schema, which is the only mild waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the return-value enumeration is redundant but harmless; annotations cover safety and idempotency. What is missing is decision guidance relative to the sibling measurement tools, which matters for a tool whose name ('read') is generic.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4; the description nonetheless explains the implicit input — the device's currently-set function and range — which is meaningful context for a no-arg tool. Schema coverage is 100% and there is nothing further to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Take one reading with the function and range currently set on the instrument', and the parenthetical clarifies the non-configuring scope. It separates itself from configuration-style siblings by implication, but never names measure/sample/burst, so the distinction is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical '(does not change them)' hints that this is the passive single-reading option, but there is no explicit statement of when to prefer it over measure, sample, or burst. Usage is implied rather than directed, leaving the agent to guess among four sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sampleA
Idempotent

Record timestamped readings at a fixed interval and return statistics plus all samples.

Readings are paced by this computer. A reading takes about 0.3 s at speed slow and in most other functions, 0.6 s for frequency and period; with a shorter interval readings are taken back to back. Without function the present function and range are kept; otherwise they are set as in measure.

Args: duration_s: Recording time in seconds (max 600). interval_s: Time between readings in seconds (min 0.1). function: Measurement function. Leads in HI/LO for voltage, resistance_2w, capacitance, frequency, period, continuity, diode and temperature; in I/LO for currents; resistance_4w also uses HI Sense/LO Sense. range: Fixed range in V, A, Ω or F; omit for autorange. dc_voltage 0.6, 6, 60, 600, 1000; ac_voltage 0.6, 6, 60, 600, 750; dc_current 0.0006, 0.006, 0.06, 0.6, 6, 10; ac_current 0.06, 0.6, 6, 10; resistance_2w/4w 600, 6e3, 60e3, 600e3, 6e6, 60e6, 100e6; capacitance 2e-9, 20e-9, 200e-9, 2e-6, 20e-6, 200e-6, 0.01. Other functions have no range. speed: Only for dc_voltage, dc_current and resistance: slow (10 PLC, default, most accurate), medium (1 PLC) or fast (0.3 PLC). sensor: Required for temperature: pt100 (RTD) or thermocouple type B, E, J, K, N, R, S or T.

NameRequiredDescriptionDefault
rangeNo
speedNo
sensorNo
functionNo
duration_sNo
interval_sNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false is consistent with the documented state change when `function` is supplied), the description discloses real behavioral traits: readings are paced by the host, per-reading timing varies by function and speed, sub-interval values are taken back to back, and omitted settings persist the instrument's current function/range. It does not state whether the call blocks for the whole duration (potentially 600 s) or what happens on error/timeout, which is a material gap for an agent scheduling this call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with a one-line summary, then behavior, then a tight Args block; the long range enumeration is verbose but justified given zero schema descriptions. A few clauses (lead naming for every function) could be trimmed for agents that never set those functions, but nothing is wasted in the core path.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description rightly avoids explaining return values and instead covers what the schema cannot: timing, state carry-over, and per-function constraints. The remaining gap is invoking-behavior detail (blocking duration, failure modes) for a tool that can run for up to 600 seconds.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description carries the full burden and does: duration_s max 600, interval_s min 0.1, function semantics including which front/rear terminals it uses, per-function legal range values, speed as PLC accuracy trade-offs, and the conditional requirement of `sensor` for temperature. This is meaning an agent could not recover from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opening sentence gives a specific verb + resource + output shape: 'Record timestamped readings at a fixed interval and return statistics plus all samples,' which distinguishes it from a single-shot measure. It stops short of naming a sibling such as `burst` or `measure` as the alternative, so the differentiation is implied rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied through timing guidance (0.3 s vs 0.6 s per reading, back-to-back when interval is short) and the note that omitted `function` reuses the present setting, which is effectively a pointer to `measure`. However, there is no explicit 'use this instead of X when Y' routing versus `measure` or `burst`, and no stated exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedburst
    • First observedget_device_info
    • First observedmeasure
    • First observedread
    • First observedsample

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation4/5

The tools are mostly distinct, but read vs. measure both return a single reading, and sample vs. burst both return statistics plus multiple readings. The detailed descriptions clarify the differences (preserve settings vs. change function; computer-paced timed sampling vs. instrument-paced count-based burst), so confusion should be limited.

Naming Consistency4/5

All names use consistent lower_snake_case, with readable action-oriented terms. Most are single verbs (read, measure, sample, burst), while get_device_info uses a verb_noun form, which is a minor deviation from the otherwise uniform pattern.

Tool Count5/5

Five tools is well-scoped for a multimeter server: single reading, configured measurement, timed sampling, fast burst acquisition, and device information. Each tool maps to a meaningful operation without unnecessary surface area.

Completeness4/5

The core measurement lifecycle is covered: current-settings reading, function/range selection, timed acquisition, fast burst acquisition, and device/configuration inspection. Minor gaps exist for advanced instrument features such as zero/relative, limit testing, or explicit configuration without immediately taking a reading, but standard workflows are supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Enables AI tools to remotely control a SIGLENT SDS800X HD series oscilloscope, configure acquisition, capture waveforms, and analyze signal quality safely through high-level SCPI tools.
    20
    3
    GPL 3.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server to remotely control Siglent SDM3000 series digital multimeters via TCP/IP SCPI protocol, enabling measurement, configuration, and data acquisition.
    -
  • A
    license
    A
    quality
    A
    maintenance
    Enables LLMs to control RIGOL oscilloscopes over SCPI via LAN or USB, including configuring channels/timebase/trigger, taking measurements, capturing waveforms and screenshots, decoding serial protocols, running FFT analysis, and controlling the built-in AFG.
    38
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients to connect to and control Siglent oscilloscopes and power supplies over SCPI/TCP using typed tool calls with input validation, safety controls, and built-in observability.
    1
    Apache 2.0