mcpField
S
Siglent SDM3045X multimeter

Siglent SDM3045X multimeter

ローカル
github.com/shaag7967科学・教育02 週間前に更新

Siglent SDM3045X multimeter について

Siglent SDM3045X ベンチマルチメーターを USB または LAN 経由で操作する非公式 MCP サーバーです。単発測定、時間指定のサンプリング、高速連続測定、機器情報を MCP クライアントに提供します。

主な機能

  1. 01現在の設定で単発測定
  2. 02測定機能とレンジの選択
  3. 03統計値付きの時間指定サンプリング
  4. 04最大 10,000 回の高速測定
  5. 05機器と設定情報の取得
  6. 06任意の SCPI コマンド

活用シーン

  1. 01MCP クライアントから電圧や抵抗を測定
  2. 02指定時間にわたる測定値の収集
  3. 03高速測定と統計値の取得

MCP 対応

MCP クライアントにマルチメーターの測定・機器情報ツールを公開します。有効化すると SCPI ツールも利用できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"shaag7967-mcp-server-siglent-sdm3045x": {
"command": "uvx",
"args": [
"mcp-server-siglent-sdm3045x"
],
"env": {
"SDM_RESOURCE": "<SDM_RESOURCE>",
"SDM_SERIAL": "<SDM_SERIAL>",
"SDM_ALLOW_SCPI": "<SDM_ALLOW_SCPI>",
"SDM_VISA_BACKEND": "<SDM_VISA_BACKEND>"
}
}
}
}
起動コマンドuvx mcp-server-siglent-sdm3045x
設定が必要な環境変数
SDM_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 setting
SDM_VISA_BACKENDPyVISA backend: @py (pyvisa-py) or @ivi for an installed NI/Keysight VISA

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimcp-server-siglent-sdm3045x0.1.1

ツール

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つのツールを使用できます。

ツール説明
scpiRemote 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 RESOURCESDM_RESOURCEUSB、次に LAN で自動検出
--serial SERIALSDM_SERIAL任意の SDM3045X
--allow-scpiSDM_ALLOW_SCPI=1オフ
--visa-backend BACKENDSDM_VISA_BACKEND@py (pyvisa-py)
--log-level LEVELSDM_LOG_LEVELWARNING(または 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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。