LabJack T-series DAQ

io.github.K-Dense-AI由 GitHub 帳號 K-Dense-AI 發布v0.1.3更新於 Oct 24, 2026

MCP server for LabJack T4, T7/T7-Pro and T8 DAQ devices (LJM).

已驗證STDIO僅桌面開發者工具資料與分析

概覽

AI 產生的概覽

本機 MCP 伺服器,讓 AI 助理讀取 LabJack T4、T7/T7-Pro 與 T8 資料擷取裝置的類比輸入、串流波形與熱電偶,並在允許時驅動 DAC 與數位輸出。

可以做什麼
檢視連線與裝置:回報已連線的 LabJack 身分、型號、序號、韌體、可用輸入、量程與數位線,查看原始命令紀錄,或在斷電重啟、重新插線後重新連線。單次讀取類比輸入與裝置溫度,包括內部感測器與估算的環境溫度。在 T7/T8 上讀取熱電偶,回傳類型、量測電壓與冷接點溫度。讀取數位線的電位與方向,且不改變其方向。在類比輸入上進行硬體定時波形擷取,回傳各通道統計、降取樣波形,可選擇存成 CSV。驅動輸出:將數位線設為高或低、寫入 DAC0/DAC1 直流電壓,並把輸出回復到安全狀態。
適用情境
當你桌面上有 LabJack T4、T7/T7-Pro 或 T8,並希望助理在安全限值內進行量測、記錄波形、檢查熱電偶或數位線,或調整類比與數位輸出時適用。內建模擬器可讓你在沒有硬體的情況下先試用流程。
執行需求
以 Python 套件(uvx labmcp-labjack)透過 stdio 在本機執行,僅限桌面。需另外安裝 LabJack 原生 LJM 函式庫與 USB 驅動程式,裝置需可透過 USB、乙太網路或 WiFi 連線。用 LABMCP_ADDRESS 指定儀器(序號、IP、裝置名稱或 ANY);可選 LABMCP_LIMITS、LABMCP_READ_ONLY 與 LABMCP_SIMULATE。請關閉 Kipling、LJLogM、LJStreamM 等其他 LabJack 軟體,因為 USB 裝置同一時間只能被一個程序占用。
安裝前請注意
輸出類工具會改變硬體狀態:set_digital_output 與 write_dac 會驅動數位線與 DAC 電壓,DAC 值會一直保持到被更改或呼叫 set_outputs_safe。可用 LABMCP_READ_ONLY=1 停用會改變狀態的工具,並用 LABMCP_LIMITS 限制 DAC 電壓、擷取時間與掃描速率。類比量程與解析度設定會保留在裝置上,直到更改或斷電重啟。README 說明此伺服器目前為模擬測試狀態,尚未在真實硬體上驗證,依賴前請謹慎測試。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 LabJack T-series DAQ,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

LabJack T-series DAQ — MCP Server

Let an AI agent read analog inputs, stream waveforms, read thermocouples, check digital lines and (with your permission) set DACs and digital outputs on LabJack T4, T7/T7-Pro and T8 DAQ devices through LabJack's official LJM library.

Packagelabmcp-labjack
InstrumentsLabJack T4, T7, T7-Pro, T8 (and their OEM versions)
InterfacesUSB, Ethernet, WiFi (T7-Pro)
ProtocolLJM library + T-series Modbus register map (T-Series Datasheet, register map ljm_constants.json, labjack-ljm Python wrapper)
Status🧪 simulated: tested against a simulated LJM backend, not yet verified on hardware. Report a hardware test

Try it without hardware

bash
uvx labmcp-labjack --simulate --checkuvx labmcp-labjack --simulate --option sim_model=T8 --check     # T4, T7, T7-Pro (default) or T8

The simulator wires a 2 V / 10 Hz sine to AIN0, a thermistor divider (~2.5 V) to AIN1, DAC0 back into AIN2, an LM34 cold-junction sensor to AIN3, and a ~37 °C thermocouple to AIN0-AIN3 when the thermocouple feature is used. Other inputs are grounded.

Connect your LabJack

  1. Install LJM (the native library and USB driver) from labjack.com/support/software/installers/ljm. The labjack-ljm Python package is installed automatically with this server, but it needs that native library.
  2. Close other LabJack software (Kipling, LJLogM, LJStreamM). A device can only be claimed by one process at a time over USB.
  3. Test the connection:
    bash
    uvx labmcp-labjack --check                                  # first LabJack founduvx labmcp-labjack --address 470012345 --check              # by serial numberuvx labmcp-labjack --address 192.168.1.207 --option connection_type=ETHERNET --checkuvx labmcp-labjack --option device_type=T4 --check          # only open a T4
    --address is the LJM identifier: a serial number, an IP address, a device name, or ANY (the default).

Add to your MCP client

Claude Code

bash
claude mcp add labjack -- uvx labmcp-labjack --address 470012345

Claude Desktop / Cursor / Windsurf (claude_desktop_config.json, .cursor/mcp.json, …)

json
{  "mcpServers": {    "labjack": {      "command": "uvx",      "args": ["labmcp-labjack", "--address", "470012345"]    }  }}

Add --read-only to allow measurements but block the DAC and digital-output tools (set_outputs_safe stays available). Add --option safe_dio=FIO0,FIO1 to make set_outputs_safe always release those lines, even if another program drove them. For other clients, generate the snippet with uvx labmcp config labjack --client vscode (also cursor, codex, claude-code).

Tools

ToolKindDescription
get_command_log👁 readReturn the most recent raw commands sent to / replies received from the instrument (newest last). Useful for debugging and for recording what was done.
get_connection_info👁 readReport which instrument is connected (identity, address, simulated or real), whether the server is read-only, and the active safety limits. Call this first.
get_device_info👁 readIdentify the connected LabJack (model, serial, firmware, connection) and list what it offers: analog inputs, valid input ranges, resolution indices, DAC range, digital lines and stream rate. Call this before configuring channels.
read_analog_inputs👁 readRead one or more analog inputs once (command-response) and return volts.
read_device_temperature👁 readRead the LabJack's internal temperature sensor (°C, about ±2 °C) and the estimated ambient air temperature. On the T8 also returns the sensor next to each AIN terminal. Cannot be read while a stream is running.
read_digital_inputs👁 readReport the logic level and direction (input/output/analog) of digital I/O lines.
read_thermocouple👁 readRead a thermocouple with the T7/T8 AIN thermocouple extended feature (types B, C, E, J, K, N, R, S, T) and return °C with the measured voltage and cold-junction temperature.
reconnect🛑 safetyClose and re-open the connection to the instrument (e.g. after it was power cycled or a cable was re-plugged).
set_digital_output⚠️ hazardMake a digital line an output and drive it high (3.3 V) or low (0 V).
set_outputs_safe🛑 safetyPut the outputs in a safe state: stop any stream, set DAC0 and DAC1 to 0 V, and release every digital line this server drove (plus the safe_dio option lines) to input - or drive them low with dio_mode='low'. Use when finished or if anything looks wrong.
stream_analog👁 readAcquire a hardware-timed waveform on one or more analog inputs (LJM stream mode) and return per-channel statistics plus a downsampled waveform; optionally save everything to CSV.
write_dac⚠️ hazardSet an analog output (DAC0/DAC1) to a DC voltage. The output stays at this value until changed or set_outputs_safe is called.

get_connection_info, get_command_log and reconnect are built into every LabMCP server. The command log records every LJM register read and write.

Safety limits

LimitDefaultMeaning
max_dac_voltage_v5 VHighest DAC voltage an agent may set (hardware: T4/T7 0-5 V, T8 0-10 V)
max_stream_duration_s60 sLongest hardware-timed stream
max_scan_rate_hz10 000 HzHighest stream scan rate (the device maximum still applies)

Override at launch, e.g. --limit max_dac_voltage_v=2.5. Limits are checked before anything is sent. Streams are also capped at 2 million samples in total.

Example prompts

  • "Read AIN0-AIN3 on the ±1 V range and tell me which channels look like they are floating."
  • "Stream AIN0 and AIN1 at 5 kHz for 2 seconds, give me the RMS and peak-to-peak of each, and save the data to ~/data/run12.csv."
  • "Read the type K thermocouple on AIN2 every 10 seconds for a minute and tell me whether it is still warming up."
  • "Set DAC0 to 1.25 V, then check the loopback on AIN2 and report the error in millivolts."
  • "Which digital lines are outputs right now, and what level are they at?"
  • "We're done — put all the outputs back in a safe state."

Notes

  • Model differences are enforced. Valid input ranges (AIN#_RANGE) and resolution indices come from LabJack's register map: T7 ±10/±1/±0.1/±0.01 V and index 0-8 (T7-Pro 0-12, but 9-12 cannot stream); T8 ±11 … ±0.018 V and index 0-16 (one index shared by all inputs); T4 fixed ranges (AIN0-3 ±10 V, AIN4-11 0-2.5 V) and index 0-5. DAC range: T4/T7 0-5 V, T8 0-10 V.
  • Settings persist. Range, resolution and differential settings made by read_analog_inputs stay on the device until changed or power-cycled. Omitted settings are left as they are; every reading reports what it was measured against (GND, the T7 negative input, or the T8's isolated terminal).
  • Reading digital lines never changes their direction. read_digital_inputs uses the DIO_STATE/DIO_DIRECTION bitmasks. (Reading a single-line register such as FIO3 would switch that line to input.)
  • T4 flexible I/O. AIN4-AIN11 share terminals with FIO4-EIO3. The server refuses to read those AINs while the line is a digital output, because the read would switch it to analog and release whatever it drives.
  • set_outputs_safe default is input, the T-series power-up state (input with pull-up). If an attached relay board treats a pulled-up input as "on", use dio_mode="low" instead.
  • Thermocouples use the AIN extended feature (AIN#_EF_INDEX 20-30). With cjc="internal" the CJC register is set to its documented default TEMPERATURE_DEVICE_K (address 60052), which the T8 firmware maps to each channel's own terminal sensor (TEMPERATURE#_CAPTURE); cjc="lm34" uses LabJack's LM34 conversion (55.56 K/V, 255.37 K). An open input returns valid=false (the device reports -9999).
  • Streams follow LabJack's stream_basic.py example (internal clock, no trigger, auto settling). While a stream runs, command-response analog reads are blocked by the device. Skipped scans (buffer overflow) are reported and left empty. set_outputs_safe does not wait for a running stream: it stops it at the next read (the partial result is returned with aborted: true). A stream runs at 1 scan/s or faster (so that stop is prompt) and always takes at least two scans; that real duration is what the max_stream_duration_s limit checks. The returned waveform is downsampled by keeping each block's minimum and maximum, so short spikes are not lost; save_path must be a new .csv file (an existing file is never overwritten, and the path is checked before streaming).
  • Importing the LJM wrapper prints to stdout if the native library is missing. The server redirects that import so the MCP stdio channel is never corrupted, and reports a clear install hint instead.

Hardware verification

ModelFirmwareInterfaceVerified byDate
none yet: be the first

來源:servers/engineering/labjack/README.md,提交 46545ea

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

2
  1. v0.1.3最新Sep 27, 2026
  2. v0.1.1Sep 26, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分