Skip to main content
Glama

devsignal

Agent-friendly signal generator control for the embedded bench, built for the Agentic Firmware Workbench. Configure waveforms and switch outputs on Siglent SDG-series generators — from the command line or from an AI agent via MCP.

Sibling of devpower (USB power control). Typical use: an agent testing an ADC driver or input-capture firmware needs a known stimulus — it sets a 1 kHz sine at 2 Vpp, enables the output, runs the test, and switches the output off.

Supported hardware

Built and verified against the SDG2042X; the C{n}:BSWV / C{n}:OUTP SCPI dialect is shared across the Siglent SDG family (SDG1000X/2000X/6000X), so other models are expected to work.

Transport is PyVISA with the pure-Python pyvisa-py backend:

  • USB (USBTMC): plug in and go — needs libusb (brew install libusb / distro package).

  • LAN: pass --resource "TCPIP::<ip>::INSTR" — no drivers needed.

Related MCP server: siglent-sds-mcp

Install

pip install .

Requires Python 3.10+.

CLI

devsignal list                                  # find instruments (USB)
devsignal idn                                   # identity
devsignal status                                # both channels: wave + output
devsignal wave 1 sine --freq 1000 --amp 3.3     # configure CH1
devsignal wave 1 square --freq 1e6 --amp 3.3 --duty 25
devsignal output 1 on --load HZ                 # enable CH1 into Hi-Z
devsignal output 1 off
devsignal raw "C1:BSWV?"                        # raw SCPI escape hatch
devsignal --json status                         # machine-readable

MCP server

devsignal-mcp runs an MCP server over stdio exposing list_instruments, get_status, set_wave, set_output, and scpi (raw escape hatch), with agent-facing safety guidance baked into the tool descriptions.

Register with Claude Code:

claude mcp add --scope user devsignal devsignal-mcp

Safety notes

  • Load setting scales the delivered voltage. A 50 Ω setting driving a high-impedance input delivers twice the programmed amplitude. Use --load HZ when driving MCU/logic inputs.

  • Session limits (human-in-the-loop): on the first amplitude-affecting MCP call of a session, the user is prompted (MCP elicitation) for the session's max amplitude; agent requests above it require explicit user approval, and raw scpi amplitude changes are gated the same way. Hosts without elicitation support fail safe (over-limit requests are refused).

  • Hard ceiling: set DEVSIGNAL_MAX_VPP (e.g. 3.3) in the MCP server's environment and nothing above it is accepted - not even with in-session user approval.

  • Configure the waveform first, verify with status, then enable the output.

Development

pip install -e ".[dev]"
pytest

The test suite runs against a fake VISA layer — no instrument required.

License

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    B
    maintenance
    Enables natural language control of test instruments like spectrum analyzers and power supplies via SCPI commands, with auto-discovery and multi-instrument session support.
    100
    1
    MIT
  • 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
    1
    GPL 3.0
  • A
    license
    A
    quality
    D
    maintenance
    MCP server that lets AI assistants control Siglent SDG waveform generators over a local network using natural language, supporting signal generation, modulation, sweep, burst, and arbitrary waveforms.
    21
    5 npm
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables remote control of Siglent SDG series function/arbitrary waveform generators via SCPI over TCP/IP. Provides tools for configuring waveforms, modulation, sweep, burst, and other instrument functions.
    1
    -