siglent-sdg-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SIGLENT_IP | No | Fallback if SIGLENT_SDG_IP is not set | |
| SIGLENT_PORT | No | Fallback if SIGLENT_SDG_PORT is not set | 5025 |
| SIGLENT_SDG_IP | No | Generator IP address for auto-connect on startup | |
| SIGLENT_SDG_PORT | No | TCP port (only change if your setup differs) | 5025 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| connectB | Connect to a Siglent SDG waveform generator over TCP. Returns device identification on success. Only hosts and ports allowed by the server configuration can be used. |
| disconnectA | Disconnect from the waveform generator. |
| identifyA | Query the waveform generator identification (*IDN?). Returns manufacturer, model, serial number, and firmware version. |
| get_outputB | Get the output state of a channel, including on/off status, load impedance, and polarity. |
| configure_outputC | Configure the output of a channel. Can turn output on/off, set load impedance, and set polarity. |
| get_basic_waveA | Get the basic waveform parameters of a channel, including waveform type, frequency, amplitude, offset, phase, duty cycle, etc. |
| configure_basic_waveA | Configure the basic waveform parameters of a channel. Multiple parameters can be set in a single call. The command builds a single BSWV command with all specified parameters. |
| get_modulationA | Get the modulation parameters of a channel. Returns all modulation settings including type, source, frequency, depth/deviation, and carrier parameters. |
| configure_modulationA | Configure modulation on a channel. Set state first (ON), then type and parameters. Commands are sent sequentially: state, then type, then type-specific parameters, then carrier parameters. |
| get_sweepA | Get the sweep parameters of a channel, including state, time, start/stop frequencies, sweep mode, direction, trigger source, carrier settings, and marker. |
| configure_sweepA | Configure sweep on a channel. State must be set to ON before other parameters. Builds a single SWWV command with all specified parameters. |
| get_burstA | Get the burst wave parameters of a channel, including state, period, trigger source, burst mode (gate/ncycle), cycle count, carrier settings, and delay. |
| configure_burstB | Configure burst mode on a channel. State must be set to ON before other parameters. Builds a single BTWV command with all specified parameters. |
| get_arbitrary_waveA | Get the current arbitrary waveform selection for a channel. Returns the waveform index and name. |
| set_arbitrary_waveA | Set the arbitrary waveform for a channel by index number or by name. Use index for built-in waveforms (e.g. 2=StairUp, 18=Sinc, 26=Cardiac) or name for user-defined waveforms. |
| resetA | Reset the waveform generator to factory default settings (*RST). |
| copy_channelB | Copy all parameters from one channel to another. |
| configure_syncC | Configure the sync output signal for a channel. |
| equal_phaseB | Synchronize the phase of both channels (EQPHASE). Aligns the phase relationship between C1 and C2. |
| scpi_queryA | Send a read-only SCPI query to the waveform generator and return the response. Use this as an escape hatch for queries not covered by other tools. The command must be a single SCPI header ending in '?' (e.g. 'C1:BSWV?'); anything that could change instrument state is rejected. Note: CHDR is set to OFF, so responses contain only values (no headers). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
Each tool targets a distinct subsystem-plus-action pairing (get/configure per output, basic wave, modulation, sweep, burst, arbitrary wave), and the one-off operations (copy_channel, equal_phase, identify, reset) are clearly unique. The get_/configure_ symmetry makes boundaries obvious, and scpi_query is explicitly framed as an escape hatch rather than a rival to the dedicated tools.
A strong verb_noun convention dominates (get_basic_wave/configure_basic_wave, get_sweep/configure_sweep, get_burst/configure_burst). Minor deviations: set_arbitrary_wave breaks the configure_ pattern used everywhere else, and stand-alone verbs like copy_channel, equal_phase, and identify sit outside the scheme.
Twenty tools is on the heavy side, but the device genuinely has six or so independently configurable subsystems, each warranting a get/configure pair. Every tool maps to a real instrument command, with little obvious redundancy beyond the scpi_query catch-all.
Most subsystems have symmetric read/write coverage plus connection lifecycle, copy_channel, equal_phase, reset, and identify. Minor gaps: configure_sync has no get_sync counterpart, and functions like harmonic/combine or counter modes are only reachable via scpi_query, but that escape hatch keeps agents from dead-ending.