NI-DAQmx DAQ Devices について
NI-DAQmx DAQ Devicesは、National InstrumentsのDAQハードウェアから測定値を取得し、アナログまたはデジタル出力を設定するMCPサーバーです。NI-DAQmxドライバーとPython APIを使用し、ハードウェアでの検証はまだ報告されていません。
主な機能
- 01アナログ電圧のサンプルと波形を取得
- 02熱電対温度とデジタルラインを読み取り
- 03アナログおよびデジタル出力を設定
- 04取得データをCSVに保存
- 05デバイスとチャンネルの機能を確認
活用シーン
- 01電圧信号とRMSノイズの測定
- 02熱電対の経時変化を記録
- 03インターロックのデジタル状態を確認
- 04出力を駆動した後、安全状態に設定
MCP 対応
DAQデバイスの検出、測定、出力制御、安全状態操作のツールをMCPクライアントに公開します。読み取り専用モードでは取得は許可されますが、出力ツールは無効になります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx labmcp-ni-daqmxLABMCP_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
11掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
NI-DAQmx DAQ デバイス — MCP サーバー
AI エージェントが、公式の NI-DAQmx ドライバーとその Python API を通じて、National Instruments DAQ ハードウェア上の電圧や熱電対温度を取得し、デジタルラインを読み取り、(許可があれば)アナログ出力とデジタル出力を設定できます。
| パッケージ | labmcp-ni-daqmx |
| 計測器 | NI-DAQmx デバイス:USB-6001/6002/6003、USB-6008/6009、USB-6211/6212/6218、USB/PCIe M および X シリーズ(62xx/63xx)、CompactDAQ C シリーズモジュール(例:NI 9201、9211、9263、9401)、NI MAX シミュレートデバイス |
| インターフェース | USB、PCI/PCIe、PXI、Ethernet(cDAQ シャーシ) |
| プロトコル | nidaqmx Python API による NI-DAQmx(API ドキュメント、ソース、NI-DAQmx ドライバー) |
| ステータス | 🧪 シミュレーション済み:シミュレートされた nidaqmx バックエンドでテスト済みですが、実機ではまだ検証されていません。実機でのテストを報告 |
ハードウェアなしで試す
uvx labmcp-ni-daqmx --simulate --check
組み込みシミュレーターは、ai0 に 1 V / 50 Hz の正弦波、ai1 に 2.5 V のセンサー、ai2/ai3 にループバックされた ao0/ao1、ai4 に約 37 °C の熱電対、port1/line0 を High に保持する外部「インターロック」を備えた、USB-6341 に類似する X シリーズデバイス Dev1 を再現します。エラーコード(例:-200170 チャンネルが存在しない、-200576 組み込み CJC がない)や task.read() が返す配列形状など、NI-DAQmx の動作を再現します。
ハードウェアなしで実際の NI-DAQmx 経路をテストするには: NI MAX(Windows)で デバイスとインターフェース → 新規作成… → NI-DAQmx シミュレートデバイス を選択し、例として --address SimDev1 を指定して、--simulate を付けずにそのデバイスに対してサーバーを実行します。NI MAX のシミュレートデバイスは合成データを返し、get_connection_info は ni_max_simulated_device: True を報告します。Linux では、シミュレートデバイスのサポートは限定的です(NI の構成ツールで定義ファイルをインポートして作成できますが、結果は一定しません)。その場合は --simulate を使用してください。
計測器を接続する
- ni.com から NI-DAQmx をインストールします(Windows または Linux。macOS は NI-DAQmx でサポートされていません)。
nidaqmxPython パッケージはこのサーバーとともにインストールされます。python -m nidaqmx installdriverを使ってドライバーをインストールすることもできます。 - NI MAX(デバイスとインターフェース)または Linux の
nilsdevでデバイス名を確認します(例:Dev1、cDAQ1Mod1)。接続する前に NI MAX のテストパネルを閉じてください。 - 接続をテストします:
uvx labmcp-ni-daqmx --check # works if exactly one device is present uvx labmcp-ni-daqmx --address Dev1 --check--addressは NI-DAQmx のデバイス名です。デバイスが 1 台だけの場合は省略できます。
MCP クライアントに追加する
Claude Code
claude mcp add ni-daq -- uvx labmcp-ni-daqmx --address Dev1
Claude Desktop / Cursor / Windsurf(claude_desktop_config.json、.cursor/mcp.json、…)
{
"mcpServers": {
"ni-daq": {
"command": "uvx",
"args": ["labmcp-ni-daqmx", "--address", "Dev1"]
}
}
}
取得は許可しつつ出力ツールをブロックするには、--read-only を追加します(set_outputs_safe は引き続き使用できます)。set_outputs_safe がこれらのラインを常に Low に設定するようにするには、--option safe_do_lines=port0/line0:3 を追加します。ほかのクライアントでは、uvx labmcp config ni-daqmx --address Dev1 --client vscode を使って設定例を生成できます(cursor、codex、claude-code も指定できます)。
ツール
| ツール | 種類 | 説明 |
|---|---|---|
get_command_log | 👁 読み取り | 計測器に送信された最新の生コマンドと、受信した応答を返します(新しいものが最後)。デバッグや実行内容の記録に役立ちます。 |
get_connection_info | 👁 読み取り | 接続中の計測器(識別情報、アドレス、シミュレーションか実機か)、サーバーが読み取り専用かどうか、有効な安全制限を報告します。最初に呼び出してください。 |
get_device_info | 👁 読み取り | 接続中のデバイスについて、アナログ入力/出力チャンネル、デジタルライン、対応電圧範囲、最大サンプルレート、サーバーが設定した出力を説明します。チャンネル、範囲、レートを選ぶ前に呼び出してください。 |
list_devices | 👁 読み取り | ドライバーが認識できるすべての NI-DAQmx デバイス(製品タイプ、シリアル番号、チャンネル、NI MAX のシミュレーションデバイスかどうか)と、このサーバーが接続しているデバイスを一覧表示します。 |
read_analog | 👁 読み取り | 1 つ以上のアナログ入力の電圧を測定します。単発のオンデマンド測定、またはハードウェアタイミングによる有限取得を実行し、各チャンネルで samples 個のサンプルを rate_hz で取得します。チャンネルごとの統計情報とダウンサンプリングした波形を返し、オプションで全データを CSV に保存します。 |
read_digital_lines | 👁 読み取り | デジタルラインの論理レベルを読み取ります。 |
read_thermocouple | 👁 読み取り | 熱電対に対応するデバイス(例:NI 9211/9212/9213/9214 モジュールまたは USB-TC01)で、熱電対(タイプ B、E、J、K、N、R、S、T)を使って温度(°C)を測定します。 |
reconnect | 🛑 安全 | 計測器との接続を閉じて再度開きます(電源を入れ直した後や、ケーブルを抜き差しした後など)。 |
set_outputs_safe | 🛑 安全 | デバイスの出力を安全な状態にします。すべてのアナログ出力を 0 V(または 0 V が範囲外の場合は範囲の下限)にし、デフォルトではサーバーが駆動したすべてのデジタルラインと、safe_do_lines オプションで指定したラインをローにします。作業が終わったときや、異常が見られたときに使用してください。 |
write_analog | ⚠️ 危険 | アナログ出力に DC 電圧を設定します(静的、ソフトウェアタイミング)。ほとんどの NI デバイスでは、値を変更するか set_outputs_safe を呼び出すまで、呼び出し後もこの値が出力され続けます。 |
write_digital_lines | ⚠️ 危険 | デジタル出力ラインをハイまたはローに駆動します。値を変更するか set_outputs_safe を呼び出すまで、呼び出し後もラインのレベルは維持されます。 |
get_connection_info、get_command_log、reconnect はすべての LabMCP サーバーに組み込まれています。コマンドログには、サーバーが実行したすべてのタスク(チャンネル、範囲、レート、書き込んだ値)が記録されます。
安全制限
| 制限 | デフォルト | 意味 |
|---|---|---|
max_ao_voltage_v | 5 V | エージェントがアナログ出力に印加できる電圧の最大絶対値 |
max_samples | 100 000 | 1 回の取得でチャンネルごとに取得できるサンプル数の上限 |
max_rate_hz | 100 000 Hz | チャンネルごとのサンプルクロックレートの上限 |
max_acquisition_s | 60 s | 有限取得の最長時間(サンプル数 / レート) |
起動時に上書きできます(例:--limit max_ao_voltage_v=10 --limit max_acquisition_s=300)。制限は、何かが送信される前にチェックされます。デバイス自体の AO 範囲(例:USB-6008/6009 の出力は 0~5 V のみ)も適用され、最大サンプルレートも同様に適用されます。
プロンプトの例
- 「NI デバイスを一覧表示し、Dev1 の入力と電圧範囲を教えてください。」
- 「±1 V の範囲で ai0 と ai1 を差動で 10 kHz、0.5 秒間取得し、それぞれの RMS ノイズを教えてください。データは ~/daq/noise.csv に保存してください。」
- 「内蔵 CJC を使って cDAQ1Mod1/ai0:3 のタイプ K 熱電対を 1 秒ごとに 30 秒間読み取り、それぞれの平均を報告してください。」
- 「ao0 を 2.0 V に設定し、ai2 のループバックで確認してから、0 V に戻してください。」
- 「port1/line0 のインターロックは閉じていますか? その後、port0/line2 をハイにしてバルブを開けてください。」
- 「作業は終わりました。すべての出力を安全な状態にしてください。」
注意事項
- 各ツール呼び出しは、チャンネルの作成、タイミングの設定、読み取りまたは書き込み、終了など、NI の例と同様に、1 つの短い DAQmx タスクです。 そのため、サーバーが呼び出し間にデバイスを予約したままにすることはありません。同時に別のプログラムがデバイスを使用すると、「リソースが予約済み」エラー(-50103)が明確に発生します。出力タスクとデジタルラインタスクは取得タスクとは別にシリアル化されるため、
set_outputs_safe(およびwrite_analog)が実行中の取得の終了を待つことはありません。NI-DAQmx は、同じデバイス上でアナログ入力タスクと AO/DIO タスクを並行して実行します。 - 取得の長さは、
max_acquisition_sを大きくしても、ツール呼び出しごとに 600 秒までです。 返される波形は、各ブロックの最小値と最大値を残すことでダウンサンプリングされるため、短いスパイクも失われません。save_pathには新しい.csvファイルを指定する必要があります。取得前に確認され、既存のファイルが上書きされることはありません。 - ほとんどの NI デバイスでは、タスク終了後も出力値が保持されます。 出力ツールはこの動作を前提としています。一部のデバイスでは、アイドル時または電源投入時の出力動作を設定できます。出力がリセットされる場合は、デバイスを確認してください。
- デジタルラインの読み取りによって、そのラインの設定が変更されることがあります。 DAQmx のデジタル入力タスクは、ラインを入力として設定します。そのためサーバーは、自身が駆動しているラインについては読み取りを行わず、最後に指示したレベルを報告します。また、他のソフトウェアが駆動しているラインに関するリスクも説明しています。
- 端子設定は重要です。
defaultを指定すると、NI-DAQmx が選択します(対応している場合、多くは差動です)。設定を誤ると、エラーではなくオフセットやノイズが発生します。 - 熱電対には、内蔵または定数の冷接点補償を使用する
add_ai_thrmcpl_chanを使用します。このバージョンでは CJC チャンネル(SCANNABLE_CHANNEL)は提供していません。正しい使用方法がデバイスによって異なるためです。 - レート: マルチプレクサ方式のデバイスでは、
ai_max_multi_channel_rate_hzをチャンネル間で共有します。また、NI-DAQmx は、タイムベースで生成できるレートにサンプルクロックを調整します。実際のレートはsample_rate_hzで返されます。 - 値の調整に関するものなど、NI-DAQmx の警告は各取得の
warningsリストで返されます。
ハードウェアの検証
| モデル | NI-DAQmx のバージョン | インターフェース | 検証者 | 日付 |
|---|---|---|---|---|
| まだありません:最初の検証者になる |
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。