mcpField
R
Rigol DHO824 Oscilloscope

Rigol DHO824 Oscilloscope

ローカル
aimoda.github.io科学・教育651 週間前に更新

Rigol DHO824 Oscilloscope について

Rigol DHO824 Oscilloscopeは、Rigol DHO804/DHO824を制御・照会するMCPサーバーです。波形の取得に対応し、スクリーンショットや取得ファイルを保存できます。

主な機能

  1. 01オシロスコープの制御と照会
  2. 02波形データの取得
  3. 03スクリーンショットと一時ファイルの保存
  4. 04STDIOとHTTPトランスポートに対応

活用シーン

  1. 01MCPクライアントからチャンネル波形を取得
  2. 02対応オシロスコープの遠隔操作と照会

MCP 対応

STDIOまたはHTTP経由で、オシロスコープの制御・照会機能をMCPクライアントに公開します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"aimoda-rigol-dho824": {
"command": "uvx",
"args": [
"rigol-dho824-mcp"
],
"env": {
"RIGOL_RESOURCE": "<RIGOL_RESOURCE>",
"VISA_TIMEOUT": "<VISA_TIMEOUT>",
"RIGOL_BEEPER_ENABLED": "<RIGOL_BEEPER_ENABLED>",
"RIGOL_TEMP_DIR": "<RIGOL_TEMP_DIR>"
}
}
}
}
起動コマンドuvx rigol-dho824-mcp
設定が必要な環境変数
RIGOL_RESOURCEVISA resource string for connecting to the oscilloscope (e.g., 'TCPIP0::192.168.1.100::inst0::INSTR').
VISA_TIMEOUTCommunication timeout in milliseconds
RIGOL_BEEPER_ENABLEDEnable or disable oscilloscope beeper sounds
RIGOL_TEMP_DIRHost-side path for returned file paths. The container writes to /tmp/rigol internally and translates paths to this value in responses. Must match the host path in your -v mount. Required for Docker usage.

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

パッケージ
ocighcr.io/aimoda/rigol-dho824-mcp:0.1.143-main.2b177ae
pypirigol-dho824-mcp0.1.143

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Rigol DHO824 MCP サーバー

PyPI version GHCR

Rigol DHO824 オシロスコープを制御および照会するための MCP(Model Context Protocol)サーバーです。

オシロスコープの動作デモ

ai.moda が開発しました。

ハードウェア要件

対応モデル

このプロジェクトは、DHO804/DHO824 オシロスコープ(ハードウェアは同一)のみをサポートします。DHO804 の購入をおすすめします。

ファームウェア要件

重要: この MCP サーバーを使用する前に、DHO804 に DHO824 ファームウェアをフラッシュする必要があります。オシロスコープのファームウェアのフラッシュには、rigol_vendor_bin プロジェクトを使用してください。

対応ファームウェアバージョン: 00.01.04

テストおよびサポート対象のファームウェアバージョンはこれのみです。他のファームウェアバージョンでも動作する可能性はありますが、保証はありません。

互換性に関する注意

他の Rigol オシロスコープモデルでもこの MCP サーバーが動作する可能性はありますが、テストする方法がなく、機能を保証することもできません。他のモデルで使用する場合は、自己責任でお願いします。

インストール

依存関係の管理が不要で、分離された環境で実行できる Docker 経由での使用をおすすめします。

クイックスタート

GitHub Container Registry からビルド済みイメージを取得します。

docker pull ghcr.io/aimoda/rigol-dho824-mcp:latest
Docker での環境変数の使用

重要: オシロスコープの IP アドレスを指定した RIGOL_RESOURCE 環境変数(例:TCPIP0::192.168.1.100::inst0::INSTR)を必ず設定してください。

Docker コンテナには、次の 2 通りの方法で環境変数を設定できます。

  1. 値を直接指定(以下の例を参照):-e RIGOL_RESOURCE="TCPIP0::192.168.1.100::inst0::INSTR"
  2. ホストから引き継ぐ(推奨):-e RIGOL_RESOURCE(=値 は付けません)

値を指定せずに -e VARIABLE_NAME を使用すると、Docker はホスト環境の変数を自動的に引き継ぎます。シェル(例:~/.bashrc または ~/.zshrc)ですでに環境変数を設定している場合に便利です。

環境変数
  • RIGOL_RESOURCE:必須 - オシロスコープへの接続に使用する VISA リソース文字列(例:TCPIP0::192.168.1.100::inst0::INSTR)
  • RIGOL_TEMP_DIR:Docker では必須 - 返されるファイルパスのホスト側のパスです。コンテナは常に内部で /tmp/rigol に書き込み、応答ではパスをこの値に置き換えます。-v マウントで指定するホスト側のパスと一致させる必要があります。Docker の外部では、一時ファイル(波形、スクリーンショット)の保存先ディレクトリを指定します。設定されていない場合は、システムのデフォルト一時ディレクトリが使用されます。
  • VISA_TIMEOUT:通信タイムアウト(ミリ秒、デフォルト:30000)
  • RIGOL_BEEPER_ENABLED:オシロスコープのビープ音を有効/無効にします(デフォルト:false)
  • RIGOL_AUTO_SCREENSHOT:各 MCP ツールの実行後、表示/デバッグ用にスクリーンショットを自動撮影します(デフォルト:false)。スクリーンショットは、時系列順に並べ替えやすい、人が読み取れるタイムスタンプ形式(例:auto_screenshot_20251030_143045_123.png)で保存されます。

MCP クライアントの設定

Claude Code

オプション 1:.mcp.json ファイルを使用

プロジェクトディレクトリに .mcp.json ファイルを作成します(または .mcp.json.example からコピーします)。

{
  "mcpServers": {
    "rigol-dho824": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "/tmp/rigol-data:/tmp/rigol",
        "-e",
        "RIGOL_RESOURCE",
        "-e",
        "VISA_TIMEOUT",
        "-e",
        "RIGOL_BEEPER_ENABLED",
        "-e",
        "RIGOL_AUTO_SCREENSHOT",
        "-e",
        "RIGOL_TEMP_DIR",
        "ghcr.io/aimoda/rigol-dho824-mcp:latest"
      ],
      "env": {
        "RIGOL_RESOURCE": "TCPIP0::192.168.1.100::inst0::INSTR",
        "VISA_TIMEOUT": "30000",
        "RIGOL_BEEPER_ENABLED": "false",
        "RIGOL_AUTO_SCREENSHOT": "false",
        "RIGOL_TEMP_DIR": "/tmp/rigol-data"
      }
    }
  }
}

オプション 2:CLI を使用

claude mcp add --scope local rigol-dho824 -- \
  docker run -i --rm \
  -v /tmp/rigol-data:/tmp/rigol \
  -e RIGOL_RESOURCE="TCPIP0::192.168.1.100::inst0::INSTR" \
  -e VISA_TIMEOUT=30000 \
  -e RIGOL_BEEPER_ENABLED=false \
  -e RIGOL_AUTO_SCREENSHOT=false \
  -e RIGOL_TEMP_DIR=/tmp/rigol-data \
  ghcr.io/aimoda/rigol-dho824-mcp:latest

192.168.1.100 をオシロスコープの IP アドレスに置き換えてください。

Codex
codex mcp add rigol-dho824 -- \
  docker run -i --rm \
  -v /tmp/rigol-data:/tmp/rigol \
  -e RIGOL_RESOURCE="TCPIP0::192.168.1.100::inst0::INSTR" \
  -e VISA_TIMEOUT=30000 \
  -e RIGOL_BEEPER_ENABLED=false \
  -e RIGOL_AUTO_SCREENSHOT=false \
  -e RIGOL_TEMP_DIR=/tmp/rigol-data \
  ghcr.io/aimoda/rigol-dho824-mcp:latest

192.168.1.100 をオシロスコープの IP アドレスに置き換えてください。

注意: MCP クライアントにサーバーを追加した後、MCP サーバーを読み込むためにクライアントを再起動してください。サーバーは、返されるすべてのファイルパスで、コンテナ内のパス(/tmp/rigol/*)をホスト側のパス(/tmp/rigol-data/*)に置き換えます。

最初のプロンプト

セットアップを確認するには、MCP クライアントに次のプロンプトを入力してください。

Capture a waveform from channel 1 of my oscilloscope

MCP クライアントがオシロスコープに接続し、波形データをキャプチャできるはずです。

Docker での一時ファイルへのアクセス

コンテナは一時ファイル(波形のキャプチャ、スクリーンショット)を内部の /tmp/rigol に書き込みます。ホストマシンからこれらのファイルにアクセスするには、次の手順に従ってください。

  1. 一時ファイルを保存するために、ホスト上にディレクトリを作成します。

    mkdir -p /tmp/rigol-data
    
  2. このディレクトリをボリュームとしてマウントし、Docker の設定で RIGOL_TEMP_DIR を設定します。

    docker run -i --rm \
      -v /tmp/rigol-data:/tmp/rigol \
      -e RIGOL_TEMP_DIR=/tmp/rigol-data \
      ...
    

サーバーは、返されるすべてのファイルパスをコンテナのパス(/tmp/rigol/*)からホストのパス(/tmp/rigol-data/*)に自動的に変換するため、ツールの応答に表示されるパスからファイルに直接アクセスできます。

重要な注意事項:

  • ホストディレクトリ(例では /tmp/rigol-data)は、サーバーの起動前に存在している必要があります
  • RIGOL_TEMP_DIR は、-v マウントのホスト側パスと一致している必要があります
  • 一時ファイルは自動的には削除されません
  • 古い波形ファイルやスクリーンショットファイルは、手動で削除してください
  • ファイルは、波形の場合は waveform_capture_<timestamp>/、スクリーンショットの場合は screenshot_<timestamp>.png のようなサブディレクトリに整理されます

例:手動でのクリーンアップ

# Remove waveform captures older than 7 days
find /tmp/rigol-data -type d -name "waveform_capture_*" -mtime +7 -exec rm -rf {} \;

# Remove screenshots older than 7 days
find /tmp/rigol-data -type f -name "screenshot_*.png" -mtime +7 -delete
トラブルシューティング
コンテナがすぐに終了する
  • -i フラグ(対話モード)を使用していることを確認してください
  • RIGOL_RESOURCE が正しく設定されていることを確認してください
オシロスコープに接続できない
  • オシロスコープの IP アドレスとネットワーク接続を確認してください(ping <ip-address>)
  • オシロスコープのリモート制御設定が有効になっていることを確認してください
環境変数が機能しない
  • Docker の引数配列で -e VARIABLE_NAME を使用していることを確認してください
  • .mcp.json の env フィールドで実際の値を設定してください
ローカルでのビルド

Docker イメージを自分でビルドするには、次のコマンドを実行してください。

docker build -t rigol-dho824-mcp:local .

次に、設定でイメージ名として rigol-dho824-mcp:local を使用してください。

開発環境のセットアップ

ローカルでの開発やコントリビューションのために、Python 仮想環境に MCP サーバーをインストールできます。

仮想環境の作成と有効化
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
パッケージのインストール
# Install in editable mode for development
pip install -e .

# Or just install dependencies
pip install -r requirements.txt
MCP クライアントへの追加

上記のセットアップ手順を完了したら、ローカル開発用 MCP サーバーを MCP クライアントに追加します。

Claude Code:

claude mcp add --scope local rigol-dho824 -- <path-to-this-repo>/venv/bin/rigol-dho824-mcp

Codex CLI:

codex mcp add \
  --env RIGOL_RESOURCE="TCPIP0::192.168.1.100::inst0::INSTR" \
  --env VISA_TIMEOUT="30000" \
  --env RIGOL_BEEPER_ENABLED="false" \
  --env RIGOL_AUTO_SCREENSHOT="false" \
  rigol-dho824 -- <path-to-this-repo>/venv/bin/rigol-dho824-mcp

以下を置き換えてください。

  • <path-to-this-repo> を、このリポジトリの実際のパスに置き換えます
  • 192.168.1.100 を、オシロスコープの IP アドレスに置き換えます

注: Claude Code とは異なり、Codex はサニタイズされた環境で MCP サーバーを実行するため、--env フラグ(サーバー名より前)を使用して環境変数を明示的に指定する必要があります。

開発用スクリプト

script/ ディレクトリには、開発用のユーティリティが含まれています。

  • convert_png_to_webp.sh - PNG フレームシーケンスをアニメーション WebP に変換します(例:./scripts/convert_png_to_webp.sh "~/screenshots/*.png" output.webp)

開発設定

サーバーは環境変数を使用して設定できます。サンプルから .env ファイルを作成してください。

cp .env.example .env

次に .env を編集して、設定を指定します。

  • RIGOL_RESOURCE:オシロスコープの VISA リソース文字列(必須)
    • 例:TCPIP0::192.168.1.100::inst0::INSTR
  • VISA_TIMEOUT:通信タイムアウト(ミリ秒、デフォルト:5000)

サーバーの実行(開発)

ローカルでの開発やテストでは、Python からサーバーを直接実行できます。

STDIO トランスポート
# Set resource string via environment variable
export RIGOL_RESOURCE="TCPIP0::192.168.1.100::inst0::INSTR"
python -m rigol_dho824_mcp.server
HTTP トランスポート
# Default HTTP server (http://127.0.0.1:8000/mcp)
python -m rigol_dho824_mcp.server --http

# Custom host and port
python -m rigol_dho824_mcp.server --http --host 0.0.0.0 --port 3000

# Custom path
python -m rigol_dho824_mcp.server --http --path /api/mcp

コメント

MCP は初めてですか?

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

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