Rigol DHO824 Oscilloscope について
Rigol DHO824 Oscilloscopeは、Rigol DHO804/DHO824を制御・照会するMCPサーバーです。波形の取得に対応し、スクリーンショットや取得ファイルを保存できます。
主な機能
- 01オシロスコープの制御と照会
- 02波形データの取得
- 03スクリーンショットと一時ファイルの保存
- 04STDIOとHTTPトランスポートに対応
活用シーン
- 01MCPクライアントからチャンネル波形を取得
- 02対応オシロスコープの遠隔操作と照会
MCP 対応
STDIOまたはHTTP経由で、オシロスコープの制御・照会機能をMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx rigol-dho824-mcpRIGOL_RESOURCEVISA resource string for connecting to the oscilloscope (e.g., 'TCPIP0::192.168.1.100::inst0::INSTR').VISA_TIMEOUTCommunication timeout in millisecondsRIGOL_BEEPER_ENABLEDEnable or disable oscilloscope beeper soundsRIGOL_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Rigol DHO824 MCP サーバー
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 通りの方法で環境変数を設定できます。
- 値を直接指定(以下の例を参照):
-e RIGOL_RESOURCE="TCPIP0::192.168.1.100::inst0::INSTR" - ホストから引き継ぐ(推奨):
-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 に書き込みます。ホストマシンからこれらのファイルにアクセスするには、次の手順に従ってください。
-
一時ファイルを保存するために、ホスト上にディレクトリを作成します。
mkdir -p /tmp/rigol-data -
このディレクトリをボリュームとしてマウントし、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
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。