Siglent SDM3045X multimeter について
Siglent SDM3045X ベンチマルチメーターを USB または LAN 経由で操作する非公式 MCP サーバーです。単発測定、時間指定のサンプリング、高速連続測定、機器情報を MCP クライアントに提供します。
主な機能
- 01現在の設定で単発測定
- 02測定機能とレンジの選択
- 03統計値付きの時間指定サンプリング
- 04最大 10,000 回の高速測定
- 05機器と設定情報の取得
- 06任意の SCPI コマンド
活用シーン
- 01MCP クライアントから電圧や抵抗を測定
- 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
USB または LAN で接続された Siglent SDM3045X ベンチマルチメーターで、AI アシスタントが測定できるようにする MCP サーバーです。
非公式プロジェクトです。Siglent との提携や、同社による推奨を受けていません。 USB(Linux)および LAN で、ファームウェア 5.02.01.10 の SDM3045X を使用してテスト済みです。
ツール
| ツール | 説明 |
|---|---|
read | 測定器に設定されている機能とレンジを維持したまま、1回読み取ります |
measure | 機能(DC/AC 電圧・電流、2/4線式抵抗、静電容量、周波数、周期、導通、ダイオード、温度)を選択して、1回読み取ります |
sample | 一定期間にわたるタイムスタンプ付きの読み取り(最大 600 s、間隔 ≥ 0.1 s)と、最小値/最大値/平均値/標準偏差を取得します |
burst | 測定器が可能な限り高速に、最大 10000 回読み取ります(speed fast では約 180/s)。統計情報も取得します |
get_device_info | モデル、シリアル番号、ファームウェア、接続、および現在の測定設定を取得します |
各読み取りには単位、使用したレンジ、およびデータシートに単一の数値が記載されている場合はその精度が含まれます(例:絶対値としての ±(0.06 % of reading + 8 counts))。オーバーロードは、測定器の 9.9E37 ではなく "overload": true として報告されます。
--allow-scpi を指定すると、もう1つのツールを使用できます。
| ツール | 説明 |
|---|---|
scpi | Remote Manual の 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)、あるいは
TCPIP::192.168.1.50::5025::SOCKET(生ソケット)や
USB0::0xF4EC::0x1203::SDM34XXXXXXXXX::INSTR などの任意の
VISA リソース文字列を指定できます。ポート 5024 は telnet コンソール用であり、ソケットリソースとしては機能しません。
自動検出では、まず /dev/usbtmc* を試し、次に VISA が USB 上で検出した Siglent 機器を試します(pyvisa-py がカーネルドライバーから機器を奪ってしまうため、すでに /dev/usbtmc* 経由で問い合わせた機器は除外します)。続いて、このコンピューターが接続されているすべてのネットワークで VXI-11 機器を検索します(ポートマッパーへの UDP ブロードキャストを約 1 秒間実行します)。SDM3045X として識別された最初の機器が選択されます。複数の機器がある場合、--serial を使うとシリアル番号で選択できます。シリアル番号は get_device_info で確認できるほか、背面のラベルや Utility → System Setup → System Info にも記載されています。機器が別のサブネットにあり、ブロードキャストが届かない場合は、代わりに --resource を指定してください。この 2 つのオプションは同時には指定できません。
測定に関する注意
- サーバーはテストリードの接続状態を確認できません。配線に合った機能だけに切り替えるようアシスタントに指示します。電流測定では赤いリードを I ジャックに接続する必要があります。抵抗、導通、ダイオード、静電容量の測定では、回路に最大 1 mA のテスト電流が流れます。
- 機能またはレンジをリモートで切り替えると、前面パネルの表示も変わります。
- サーバーがコマンドを送信すると、機器はリモートモードになります。前面パネルには「Immediate Trig」と表示され、キーがロックされます。前面パネルでの操作に戻るには Shift を押してください。機器にはこのためのリモートコマンドがないため、サーバー自身でリモートモードを解除することはできません。
- 7 A を超える場合、データシートでは 30 秒間オンにした後、30 秒間オフにすることを推奨しています。
- 精度の値は、データシートに記載されている 1 年間の仕様です(23 °C ± 5 °C、30 分間のウォームアップ、低速)。2 線式抵抗測定では、リードをヌル調整していない場合、0.2 Ω が加算されます。AC 精度は信号周波数に依存し、周波数帯ごとに示されています。熱電対の値には冷接点誤差は含まれていません(内蔵センサー使用時は最大 ±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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。