Rigol Oscilloscope について
Rigol Oscilloscopeは、対応するRigolオシロスコープをAIエージェントから扱うためのMCPサーバーです。測定や校正済み波形の取得に加え、収録や設定を操作できますが、実機での検証はまだ行われていません。
主な機能
- 01設定と機器情報の読み取り
- 02電圧と時間特性の測定
- 03校正済み波形と統計値の取得
- 04波形データのCSV保存
- 05画面スクリーンショットの取得
- 06チャンネル、時間軸、トリガーの調整
活用シーン
- 01チャンネル設定、時間軸、トリガーの確認
- 02信号の周波数と立ち上がり時間の測定
- 03波形を取得してクリッピングを確認
- 04実験ノート用に画面を保存
MCP 対応
Rigolオシロスコープの読み取り、測定、波形・スクリーンショット取得、設定操作をMCPツールとして公開します。読み取り専用オプションでは、設定を変更するツールが無効になります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx labmcp-rigol-scopeLABMCP_ADDRESSInstrument address, e.g. serial:///dev/ttyUSB0 or tcp://192.168.1.50:5025LABMCP_SIMULATESet to 1 to use the built-in simulator (no hardware)LABMCP_READ_ONLYSet to 1 to disable all state-changing toolsLABMCP_LIMITSSafety limit overrides, e.g. max_temperature_c=80ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
16掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
Rigol オシロスコープ — MCP サーバー
AI エージェントが Rigol デジタルオシロスコープの設定を読み取り、チャンネル、タイムベース、トリガーを調整し、シングルアクイジションを実行し、オシロスコープ本体の測定機能を使用し、校正済み波形を取得し、スクリーンショットをキャプチャできるようにします。SCPI 経由で動作します。
| パッケージ | labmcp-rigol-scope |
| 計測器 | DS1000Z / MSO1000Z(DS1054Z、DS1074Z、DS1104Z、MSO1104Z、「Plus」モデル)、DS1000Z-E(DS1102Z-E、DS1202Z-E)、MSO5000(MSO5072 … MSO5354)、DHO800 / DHO900(DHO802、DHO804、DHO914、DHO924)、DHO1000 / DHO4000(DHO1072 … DHO4804) |
| インターフェース | USB(USB-TMC)、LAN(VXI-11/LXI、raw socket) |
| プロトコル | Rigol のプログラミングガイドに準拠した SCPI:MSO1000Z/DS1000Z PGA19109-1110、DS1000Z-E PGA27100-1110、MSO5000 PGA25104-1110、DHO800/DHO900、DHO1000/DHO4000 PGA34101-1110 |
| ステータス | 🧪 シミュレーション済み:ワイヤーレベルの SCPI シミュレーター(バイナリ波形ブロックとスクリーンショットブロックを含む)でテスト済みですが、ハードウェアではまだ検証されていません。ハードウェアテストを報告 |
ハードウェアなしで試す
uvx labmcp-rigol-scope --simulate --check
uvx labmcp-rigol-scope --simulate --option sim_model=DHO804 --check # also DS1202Z-E, MSO5074, DHO1204 ...
シミュレーション上のオシロスコープでは、CH1 に 1 kHz、0~3 V の矩形波、CH2 に 2 kHz、1 V の正弦波が出力されます(CH3/CH4 は接地されています)。:WAVeform:DATA? と :DISPlay:DATA? に対して実際の IEEE 488.2 バイナリブロックを返し、SCPI エラーキューを保持します。また、トリガーレベルが信号の範囲内にある場合にのみトリガーされるため、不適切なトリガーレベルで single を試すことができます。
オシロスコープを接続する
- USB: USB デバイスポートに接続します。サーバーは純粋な Python 製の
pyvisa-pyバックエンドを使用する PyVISA を利用します。このバックエンドにはシステム上のlibusbが必要です(brew install libusb、apt install libusb-1.0-0。Windows では NI-VISA を?backend=@iviとともに使用します)。python -m pyvisa infoまたはuvx labmcp portsでリソースを確認します。 - LAN: オシロスコープの Utility I/O/LAN 設定で DHCP を有効にするか静的 IP を設定し、アドレスを控えます。
- 接続をテストする:
uvx labmcp-rigol-scope --address USB0::0x1AB1::0x04CE::DS1ZA123456789::INSTR --check # USB-TMC uvx labmcp-rigol-scope --address TCPIP0::192.168.1.50::INSTR --check # LAN (VXI-11) uvx labmcp-rigol-scope --address tcp://192.168.1.50:5555 --check # LAN raw socket--checkは*IDN?の識別情報と検出されたコマンドファミリーを出力します。
MCP クライアントに追加する
Claude Code
claude mcp add scope -- uvx labmcp-rigol-scope --address TCPIP0::192.168.1.50::INSTR
Claude Desktop / Cursor / Windsurf(claude_desktop_config.json、.cursor/mcp.json、…)
{
"mcpServers": {
"scope": {
"command": "uvx",
"args": ["labmcp-rigol-scope", "--address", "TCPIP0::192.168.1.50::INSTR"]
}
}
}
--read-only を追加すると、設定、測定値、波形、スクリーンショットの読み取りを許可しつつ、オシロスコープの設定を変更するすべてのツールをブロックできます。他のクライアントでは、uvx labmcp config rigol-oscilloscope --address TCPIP0::192.168.1.50::INSTR --client vscode を実行して設定スニペットを生成します(cursor、codex、claude-code も指定できます)。
ツール
| ツール | 種類 | 説明 |
|---|---|---|
autoscale | 🎛 制御 | スコープの自動設定(AUTO キー)を実行します。接続されている信号に合わせて、垂直スケール、時間軸、トリガーを設定します。ユーザーの現在の設定は上書きされるため、依頼された場合にのみ使用してください。およそ >20 mVpp、>40 Hz の信号が必要です。 |
capture_waveform | 👁 読み取り | スコープの波形プリアンブルを使用してチャンネルの波形をボルトと秒に換算して取得し、統計値とダウンサンプリングしたトレースを返します。オプションで全ポイントを CSV に保存できます。 |
force_trigger | 🎛 制御 | トリガーを 1 回強制します(FORCE キー)。NORMal または SINGle スイープで待機中の場合にのみ効果があります。 |
get_command_log | 👁 読み取り | 計測器に送信したコマンドと計測器から受信した応答のうち、最新のものを返します(新しいものが末尾)。デバッグや実行内容の記録に役立ちます。 |
get_connection_info | 👁 読み取り | 接続されている計測器(識別情報、アドレス、シミュレーションか実機か)、サーバーが読み取り専用かどうか、有効な安全制限を報告します。最初に呼び出してください。 |
get_device_info | 👁 読み取り | オシロスコープ(モデル、シリアル番号、ファームウェア)、使用されるコマンドファミリー、アナログチャンネル数、現在のサンプルレートとメモリー深度を識別します。 |
get_settings | 👁 読み取り | 各チャンネルの現在の垂直設定(オン/オフ、V/div、オフセット、カップリング、プローブ比、帯域幅制限)、時間軸、トリガー(タイプ、スイープ、ステータス、エッジソース/レベル/スロープ)、取り込みサンプルレート/メモリー深度を読み取ります。 |
measure | 👁 読み取り | 1 チャンネルについて、スコープの自動測定値を読み取ります。電圧(Vpp、Vmax、Vmin、Vtop、Vbase、Vamp、Vavg、Vrms、オーバーシュート、プリシュート)とタイミング(周期、周波数、立ち上がり/立ち下がり時間、正/負の幅、正/負のデューティ比)が含まれます。スコープが判定できない値は null です。 |
reconnect | 🛑 安全 | 計測器との接続を閉じて再度開きます(電源を入れ直した後やケーブルを再接続した後など)。 |
run | 🎛 制御 | 連続取り込みを開始します(RUN)。 |
screenshot | 👁 読み取り | オシロスコープの画面のスクリーンショット(PNG、MSO5000 では BMP)を保存し、そのパスを返します。PNG のスクリーンショットでは、画面をモデルが確認できるよう画像も返されます。 |
set_channel | 🎛 制御 | チャンネルの垂直設定を変更します。指定されていない設定はそのままです。有効なスケール範囲が変わるため、プローブ比が最初に適用されます。スコープが実際に適用した設定を返します(スケールは 1-2-5 刻みに調整されます)。拒否された値はスコープのエラーキューから報告されます。 |
set_timebase | 🎛 制御 | メイン時間軸のスケールやオフセットを設定します。適用された値を返します。 |
set_trigger | 🎛 制御 | エッジトリガー(ソース、レベル、スロープ)とスイープモードを設定します。トリガータイプは EDGE に設定されます。レベルはソースチャンネルの画面範囲内である必要があります。 |
single | 🎛 制御 | 単発取り込みを準備します(SINGLE キー)。スコープは 1 回トリガーした後に停止します。wait_s > 0 の場合、取り込みが完了するまで待機します(ステータス STOP)。トリガー条件が成立しない場合、ステータスは WAIT のままです。トリガーレベルやソースを確認するか、force_trigger を使用してください。 |
stop | 🎛 制御 | 取り込みを停止し(STOP)、現在の波形を固定します。たとえば、深いメモリーを読み取る前に使用します。 |
get_connection_info、get_command_log、reconnect は、すべての LabMCP サーバーに組み込まれています。コマンドログには、送信されたすべての SCPI コマンドが表示されます。
安全制限
| 制限 | デフォルト | 意味 |
|---|---|---|
max_memory_points | 1 200 000 ポイント | 1 回のキャプチャで取り込みメモリーから読み取るポイントの上限(転送時間を制限します) |
起動時に上書きできます。例:--limit max_memory_points=24000000。オシロスコープはエネルギーを供給しないため、危険なツールはありません。このサーバーは、一部のモデルに内蔵されている波形ジェネレーターを制御しません。
プロンプトの例
- 「今、オシロスコープには何が表示されていますか? チャンネル設定、タイムベース、トリガーを教えてください。」
- 「CH1 の周波数、Vpp、立ち上がり時間を測定してください。」
- 「CH2 を 200 mV/div、AC 結合に設定し、CH2 の立ち下がりエッジ、0 V でトリガーしてから、シングルショットを実行し、メモリー全体の記録を ~/data/burst.csv に保存してください。」
- 「画面から CH1 の波形を取得し、デューティ比と波形がクリッピングされているかどうかを教えてください。」
- 「ラボノートに貼り付けられるよう、オシロスコープのスクリーンショットを撮影してください。」
注意事項
- 1 つのドライバーで 3 つのコマンドファミリーに対応します。 すべてのガイドに共通するコマンドは記載どおりに使用します(長形式、例:
:TRIGger:EDGE:LEVel、:MEASure:ITEM? VPP,CHANnel1、:WAVeform:PREamble?)。相違点は各ガイドに従います。オートスケールは:AUToscale(DS1000Z、MSO5000)または:AUToset(DHO)、スクリーンショットは:DISPlay:DATA? ON,OFF,PNG(DS1000Z)、:DISPlay:DATA? PNG(DHO)、または:DISPlay:DATA?→ BMP(MSO5000)です。画面キャプチャのポイント数は 1200(DS1000Z、12 分割)または 1000(MSO5000/DHO、10 分割)です。ファミリーは*IDN?から判定します。不明な Rigol モデルは、--option profile=DS1000Z|MSO5000|DHOを指定しない限り拒否されます。 - 波形のスケーリングには常に
:WAVeform:PREamble?と BYTE 形式を使用します。電圧 = (バイト値 − YORigin − YREFerence) × YINCrement です。DHO のガイドにはバイト順が記載されていないため、WORD 形式は使用しません。12 ビット DHO オシロスコープでは、これは 8 ビットの画面/メモリーデータを意味します。 - ディープメモリー(
mode="memory")では、文書化された RAW 手順に従います。オシロスコープを停止してから、:WAVeform:STARt/STOPを使用して 250 000 ポイントずつ読み取ります(BYTE 形式での DS1000Z の最大値)。MSO5000 と DHO のガイドにはバッチ読み取りの記載がありますが、最大値は記載されていません。サーバーは各バッチの長さを確認し、バッチのデータが不足している場合は明確なエラーを返します。MSO5000/DHO の実機ではまだ検証されていません。 - キャプチャでは、ソース選択から最後のバイトの読み取りまで接続を維持し、その後プリアンブルを再読み込みします。読み取り中に V/div またはタイムベースが変化した場合、誤ったスケーリングでのキャプチャを防ぐため、キャプチャは拒否されます。
clipped_fractionは、どちらのモードでも ADC の上限値/下限値(コード 0/255)にあるポイントの割合を示します。返される波形では、各ブロックの最小値と最大値が保持されるため、狭いグリッチもダウンサンプリング後に残ります。save_path(CSV)とスクリーンショットのsave_path(MSO5000 では.png、.bmp)には、新しいファイルを指定する必要があります。読み取りを開始する前に確認され、既存のファイルが上書きされることはありません。 - 測定値では、オシロスコープが 9.9E37(測定不可)を返した場合、
nullを返します。デューティ比とオーバーシュートは、オシロスコープが返した値をそのまま報告します(DS1000Z のガイドでは、デューティ比を比率として定義しています)。 - 設定コマンドの実行後には
:SYSTem:ERRor?を読み取って確認します。そのため、範囲外のスケール、オフセット、トリガーレベルが黙って無視されるのではなく、報告されます。微調整(VERNier)がオンでない限り、スケールは 1-2-5 のステップにスナップします。 - LAN: プログラミングガイドには、VISA(VXI-11/LXI、
TCPIP0::<ip>::INSTR)を介した LAN アクセスが記載されています。Rigol のオシロスコープは、TCP ポート 5555 の raw SCPI(tcp://<ip>:5555)にも対応しています。このポートは広く使用されていますが、これらのガイドには記載されていません。 - USB では、
pyvisa-py用のlibusbも必要です。pyusbはこのパッケージと一緒にインストールされます。 - スクリーンショットは PNG の場合のみ MCP の画像コンテンツとして返されます。大きな BMP スクリーンショット(MSO5000)はディスクに保存され、パスが返されます。
ハードウェアでの検証
| モデル | ファームウェア | インターフェース | 検証者 | 日付 |
|---|---|---|---|---|
| まだありません:最初の検証者になる |
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。