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: Instrument MCP Server

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

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JacobBeningo/devsignal'

If you have feedback or need assistance with the MCP directory API, please join our Discord server