关于 Siglent SDM3045X multimeter
这是一款非官方 MCP 服务,可通过 USB 或 LAN 操作 Siglent SDM3045X 台式万用表。它向 MCP 客户端提供单次读数、定时采样、快速连续读数及设备信息。
主要功能
- 01读取当前设置下的测量值
- 02选择测量功能与量程
- 03定时采样并计算统计值
- 04快速采集最多 10,000 次读数
- 05查看设备与配置信息
- 06可选原始 SCPI 命令
适用场景
- 01通过 MCP 客户端读取电压或电阻
- 02在指定时间段内采集读数
- 03快速采样并获取汇总统计值
MCP 相关
向 MCP 客户端提供万用表测量和设备信息工具。启用后还可使用 SCPI 工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx mcp-server-siglent-sdm3045xSDM_RESOURCEInstrument address: /dev/usbtmc0, an IP address or a VISA resource string. Auto-detected on USB and in the local network if not set.SDM_SERIALSerial number of the instrument to use when several are connected (auto-detection only)SDM_ALLOW_SCPISet to 1 to enable the raw SCPI tool, which can change any instrument settingSDM_VISA_BACKENDPyVISA backend: @py (pyvisa-py) or @ivi for an installed NI/Keysight VISA本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
5收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
mcp-server-siglent-sdm3045x
一个 MCP 服务,让 AI 助手能够使用通过 USB 或 LAN 连接的 Siglent SDM3045X 台式万用表进行测量。
非官方项目,与 Siglent 无关,也未获其认可。 已在 SDM3045X 上测试,固件版本为 5.02.01.10,分别通过 USB(Linux)和 LAN 连接。
工具
| 工具 | 描述 |
|---|---|
read | 使用仪器上设定的功能和量程读取一次,并保留这些设置 |
measure | 选择功能(直流/交流电压和电流、二线/四线电阻、电容、频率、周期、通断、二极管、温度)并读取一次 |
sample | 在一段时间内读取带时间戳的数据(最长 600 s,间隔 ≥ 0.1 s),并计算最小值/最大值/平均值/标准差 |
burst | 尽可能快地读取最多 10000 次(快速模式下约为 180 次/秒),并提供统计数据 |
get_device_info | 获取型号、序列号、固件、连接方式和当前测量配置 |
每次读数都会附带单位、所用量程,以及数据手册提供单一数值时的准确度(例如 ±(0.06 % of reading + 8 counts),以绝对值表示)。超量程会报告为 "overload": true,而不是仪器的 9.9E37。
启用 --allow-scpi 后,还会提供一个工具:
| 工具 | 描述 |
|---|---|
scpi | 发送远程手册中的任意 SCPI 命令或查询(统计、限值、归零等) |
原始 SCPI 工具默认关闭,因为它可以更改任何设置,包括 LAN 配置。
要求
-
Python ≥ 3.10 和 uv
-
仪器已连接到后部的 USB 设备端口,或已接入网络。
-
Linux、USB: 内核的
usbtmc驱动会将仪器映射为/dev/usbtmc0。 使用 udev 规则为已登录用户授予访问权限: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: 安装 VISA(NI-VISA 或 Keysight IO Libraries),并使用
--visa-backend @ivi启动服务。 -
LAN: 无需额外软件。仪器需要有一个与子网匹配的地址,之后服务会自动找到它。在仪器上打开 Utility → I/O Config → LAN Settings 并启用 DHCP,或在 Modify Settings 中输入静态 IP 地址、子网掩码和网关(用户手册的 I/O Configuration 一节,可在 Siglent 产品页面 查阅)。请确认仪器的子网与网络匹配:我们的仪器出厂时使用静态地址 10.11.13.220,广播搜索无法访问该地址。连接 USB 时,
SYST:COMM:LAN:IPAD?(例如通过scpi工具)会显示正在使用的地址。
配置
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 和其他客户端
{
"mcpServers": {
"siglent-sdm3045x": {
"command": "uvx",
"args": ["mcp-server-siglent-sdm3045x"]
}
}
}
选项
| 选项 | 环境变量 | 默认值 |
|---|---|---|
--resource RESOURCE | SDM_RESOURCE | 先在 USB 上自动检测,然后在 LAN 上检测 |
--serial SERIAL | SDM_SERIAL | 任意 SDM3045X |
--allow-scpi | SDM_ALLOW_SCPI=1 | 关闭 |
--visa-backend BACKEND | SDM_VISA_BACKEND | @py(pyvisa-py) |
--log-level LEVEL | SDM_LOG_LEVEL | WARNING(也可以是 DEBUG、INFO、ERROR、CRITICAL) |
RESOURCE 可以是设备文件(/dev/usbtmc0)、IP 地址或主机名(VXI-11),也可以是任意
VISA 资源字符串,例如 TCPIP::192.168.1.50::5025::SOCKET(原始套接字)或
USB0::0xF4EC::0x1203::SDM34XXXXXXXXX::INSTR。端口 5024 是 telnet 控制台,不能用作套接字资源。
自动检测会先尝试 /dev/usbtmc*,然后检测 VISA 列出的 USB 上的 Siglent 仪器
(排除已通过 /dev/usbtmc* 查询过的仪器,因为 pyvisa-py 会将其从内核驱动接管),接着检测
这台计算机所连接的每个网络中的 VXI-11 仪器(向端口映射器发送 UDP 广播,约需 1 秒)。它会选择
第一个标识为 SDM3045X 的仪器。如果有多台仪器,--serial 可按序列号选择仪器(序列号可通过
get_device_info 查看,也印在后面板标签上,并显示在 Utility → System Setup → System Info 下)。如果
仪器位于其他子网,广播无法到达,请改用 --resource;这两个选项不能同时使用。
测量说明
- 服务无法查看测试线的连接方式。它会告知助手,只切换到与接线相匹配的功能:测量电流时,红色测试线必须插在 I 插孔中;测量电阻、通断、二极管和电容时,会向电路中施加最高 1 mA 的测试电流。
- 远程切换功能或量程也会改变前面板上的显示。
- 服务发送命令后,仪器会进入远程模式:前面板显示“Immediate Trig”,按键也会被锁定。按 Shift 可返回前面板操作。仪器没有用于退出远程模式的命令,因此服务无法自行解除该模式。
- 电流超过 7 A 时,数据表建议通电 30 s 后断电 30 s。
- 精度数据采用数据表中的一年期数值(23 °C ± 5 °C、预热 30 min、慢速)。如果未对测试线调零,二线电阻测量会增加 0.2 Ω;交流精度取决于信号频率,并按频段给出;热电偶数据不包括冷端误差(使用内置传感器时最高可达 ±3.5 °C)。
开发
uv sync
uv run pytest # tests use a simulated instrument
npx @modelcontextprotocol/inspector uv run mcp-server-siglent-sdm3045x # try the tools interactively
如需检查真实仪器,请连接仪器并运行:
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
基本检查只会使用不会向输入端施加电流的功能。仪器的实际行为(包括与 Remote Manual 不同之处)见 docs/protocol.md。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。