MCP server for Siglent SPD series programmable DC power supplies
Project description
siglent-spd-mcp
MCP server for Siglent SPD Series Power Supplies (SPD3303X, SPD3303X-E, SPD1168X, etc.).
Exposes voltage/current control, measurement, monitoring, timer, and system configuration as Model Context Protocol tools over SCPI/TCP.
Installation
pip install siglent-spd-mcp
Configuration
The server connects to the power supply via TCP/SCPI. Set the host and port with environment variables:
| Variable | Default | Description |
|---|---|---|
SPD_HOST |
(required) | IP address of the power supply |
SPD_PORT |
5025 |
SCPI TCP port |
Permissions (default: readonly)
All channels default to read-only. Set to readwrite to allow control:
| Variable | Values | Description |
|---|---|---|
CH1_PERM |
readonly / readwrite |
Channel 1 write access |
CH2_PERM |
readonly / readwrite |
Channel 2 write access |
CH3_PERM |
readonly / readwrite |
Channel 3 write access |
NETWORK_PERM |
readonly / readwrite |
Network config write access |
MEMORY_PERM |
readonly / readwrite |
Save/recall write access |
Safety limits (optional)
Set per-channel voltage and current limits to prevent accidental damage:
| Variable | Example | Description |
|---|---|---|
CH1_MAX_VOLTAGE |
5.0 |
Max voltage for CH1 (V) |
CH1_MAX_CURRENT |
1.0 |
Max current for CH1 (A) |
CH2_MAX_VOLTAGE |
32.0 |
Max voltage for CH2 (V) |
CH2_MAX_CURRENT |
3.2 |
Max current for CH2 (A) |
Usage
Claude Desktop / Claude Code
Add to your MCP client configuration:
{
"mcpServers": {
"siglent-spd": {
"command": "siglent-spd-mcp",
"env": {
"SPD_HOST": "192.168.1.100",
"CH1_PERM": "readwrite",
"CH1_MAX_VOLTAGE": "5.0",
"CH1_MAX_CURRENT": "1.0"
}
}
}
}
Direct execution
# Via entry point
siglent-spd-mcp
# Via module
python -m siglent_spd_mcp
Tools
Identification
identify- Query instrument ID (manufacturer, model, serial, firmware)
Measurement
measure_voltage- Measure actual output voltagemeasure_current- Measure actual output currentmeasure_power- Measure actual output powermeasure_all- Measure voltage, current, and power in one call
Control
set_voltage- Set voltage setpointget_voltage- Query voltage setpointset_current- Set current limitget_current- Query current setpointset_output- Turn channel output on/offset_tracking_mode- Set tracking mode (independent/series/parallel)
Monitoring
monitor- Measure for a fixed duration, return time-series datastart_monitor- Start continuous background measurementstop_monitor- Stop background monitor and return collected dataget_monitor_data- Peek at data from a running monitor
Timer
set_timer- Configure timer group parametersget_timer- Query timer group parametersset_timer_state- Enable/disable timer function
System
get_system_status- Query decoded system status flagsget_error- Query error codeget_version- Query software versionget_safety_config- Show configured permissions and safety limits
Save/Recall
save_state- Save instrument state to nonvolatile memoryrecall_state- Recall instrument state (with safety limit checks)
Network
set_ip/get_ip- Static IP addressset_mask/get_mask- Subnet maskset_gateway/get_gateway- Gateway addressset_dhcp/get_dhcp- DHCP enable/disable
Display
set_waveform_display- Toggle waveform display per channel
License
GPLv3+
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file siglent_spd_mcp-0.1.2.tar.gz.
File metadata
- Download URL: siglent_spd_mcp-0.1.2.tar.gz
- Upload date:
- Size: 9.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9eea734a696553d488adce380ca9b110e8365dfc6c104ea947c25530914fe34d
|
|
| MD5 |
19004028305428ec83d57d4b5f9f80a2
|
|
| BLAKE2b-256 |
ca38f6875e6d160c977fab4f5a4f3252e7727ea930564a856f9c6201f5b87727
|
Provenance
The following attestation bundles were made for siglent_spd_mcp-0.1.2.tar.gz:
Publisher:
release.yml on wannessels/siglent-spd-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
siglent_spd_mcp-0.1.2.tar.gz -
Subject digest:
9eea734a696553d488adce380ca9b110e8365dfc6c104ea947c25530914fe34d - Sigstore transparency entry: 1003589123
- Sigstore integration time:
-
Permalink:
wannessels/siglent-spd-mcp@24b4690342a130100a611b986072f088b1328c21 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/wannessels
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@24b4690342a130100a611b986072f088b1328c21 -
Trigger Event:
push
-
Statement type:
File details
Details for the file siglent_spd_mcp-0.1.2-py3-none-any.whl.
File metadata
- Download URL: siglent_spd_mcp-0.1.2-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55082ad067663f2b053e03231c3b78f1cc354bc57049665ae5840d0e23dcfa37
|
|
| MD5 |
763385f380e72d5e07e564562f02b1d0
|
|
| BLAKE2b-256 |
134316d3caae9f01dd4569e9c1068351f93c70146591cb1253b5c8c2acf63aa6
|
Provenance
The following attestation bundles were made for siglent_spd_mcp-0.1.2-py3-none-any.whl:
Publisher:
release.yml on wannessels/siglent-spd-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
siglent_spd_mcp-0.1.2-py3-none-any.whl -
Subject digest:
55082ad067663f2b053e03231c3b78f1cc354bc57049665ae5840d0e23dcfa37 - Sigstore transparency entry: 1003589125
- Sigstore integration time:
-
Permalink:
wannessels/siglent-spd-mcp@24b4690342a130100a611b986072f088b1328c21 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/wannessels
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@24b4690342a130100a611b986072f088b1328c21 -
Trigger Event:
push
-
Statement type: