JULABO Circulator

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

MCP server for JULABO heating and refrigerated circulators (CORIO, MAGIO, DYNEO).

已驗證STDIO僅桌面開發者工具安全與監控

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理透過 USB 或 RS-232 監控並控制 JULABO 加熱與製冷循環器。

可以做什麼
讀取浴槽、安全感測器及選用外部 Pt100 溫度、加熱/製冷功率、設定值,以及解碼後的狀態或警報訊息,並可查看連線資訊與原始命令日誌以便除錯與記錄。設定溫度設定值,啟動或停止溫控與泵浦,每次設定後都會回讀狀態進行驗證。輪詢直到浴槽在容差內穩定達到指定時間,並回傳簡短溫度曲線。在斷電重啟或重新插線後重新連線儀器。
適用情境
適用於實驗室中連接了 JULABO CORIO、MAGIO 或 DYNEO 循環器的電腦,希望助理將浴槽維持在目標溫度、觀察穩定性或解釋警報。沒有此類儀器或只需手動面板操作時無需使用。
執行需求
以 Python 套件(uvx labmcp-julabo)透過 stdio 在本機執行,僅限桌上型。需要與循環器的 USB 或零數據機 RS-232 連線,並在前方面板啟用遠端控制,儀器位址透過 LABMCP_ADDRESS 提供(序列埠或 tcp)。選用 LABMCP_LIMITS、LABMCP_READ_ONLY 和 LABMCP_SIMULATE;內建模擬器可在無硬體時試用。
安裝前請注意
設定設定值或啟動循環會使浴槽立即升溫或降溫,停止後浴槽仍保持高溫或低溫。啟動前請確認浴槽已加液且軟管已固定。預設安全限值(5 至 90 °C)適用於水浴,其他液體需調整。此伺服器僅在模擬器上測試,尚未在真實硬體上驗證,部分型號缺少警告限值或外部感測器。

安裝

在 SourceWeft 中

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

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

其他 MCP 客戶端

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

README

JULABO Circulator — MCP Server

Let an AI agent run JULABO heating and refrigerated circulators through JULABO's documented interface commands: read the bath and external temperatures and the heating/cooling power, set the setpoint, start and stop temperature control, decode status and alarm messages, and wait until the bath is stable at temperature.

Packagelabmcp-julabo
InstrumentsCORIO CD, CORIO CP, MAGIO MS (and MX), DYNEO DD circulators. PRESTO and older JULABO models use a similar command set but are unverified
InterfacesUSB (virtual COM port), RS-232 (CORIO CP, MAGIO, DYNEO)
ProtocolJULABO interface commands, appendix "Interface commands" of the original operating manuals: CORIO CD (1.950.0800.us.V10), CORIO CP (1.950.0900.us.V04), MAGIO MS (1.950.1700.us.V05), DYNEO DD (1.950.1300.us.V03). Official downloads: julabo.com
Status🧪 simulated: tested against a wire-level simulator, not yet verified on hardware. Report a hardware test

Try it without hardware

bash
uvx labmcp-julabo --simulate --check

Connect your circulator

  1. Enable remote control on the circulator. Without it the circulator answers queries but ignores every setting command.
    • CORIO CD/CP: MENU → IntE → rEM → USb (or 232 for RS-232). rOFF appears in standby.
    • MAGIO / DYNEO: Main menu → Connect unit → Remote control → USB or RS232. An "R" appears in the status bar.
  2. Cable: USB-B (the circulator appears as a virtual COM port; on Windows install JULABO's USB driver) or a null-modem RS-232 cable. RS-232 factory settings: 4800 baud, 7 data bits, even parity, 1 stop bit, hardware handshake (RTS/CTS). Interface parameters can only be changed while remote control is off. The server uses these settings but does not enforce the handshake by default (it keeps RTS asserted, which lets the circulator transmit, and USB virtual COM ports often never assert CTS); add ?rtscts=true to the address to enforce it.
  3. Find the port: uvx labmcp ports
  4. Test the connection:
    bash
    uvx labmcp-julabo --address /dev/ttyACM0 --check                  # Linux (USB)uvx labmcp-julabo --address /dev/tty.usbmodem1101 --check         # macOSuvx labmcp-julabo --address COM3 --check                          # Windowsuvx labmcp-julabo --address "serial://COM3?baudrate=9600" --check # RS-232, non-default baud rate
    --check prints the firmware string (version) and the current status, e.g. 02 REMOTE STOP.

Add to your MCP client

Claude Code

bash
claude mcp add julabo -- uvx labmcp-julabo --address /dev/ttyACM0

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

json
{  "mcpServers": {    "julabo": {      "command": "uvx",      "args": ["labmcp-julabo", "--address", "/dev/ttyACM0", "--limit", "max_temperature_c=120"]    }  }}

Add --read-only to allow monitoring only (stop_circulation stays available). For other clients: uvx labmcp config julabo-circulator --address /dev/ttyACM0 --client vscode.

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_setpoint👁 readRead the current temperature setpoint and whether temperature control is running.
get_status👁 readReport the circulator's status message (decoded: operating state, rejected command or alarm), whether temperature control is running, the setpoint, the device's own excess-temperature protection setting and warning limits, and the firmware version.
read_temperatures👁 readRead the bath temperature, the heating/cooling power in % and the safety-sensor temperature, and optionally the external Pt100 sensor.
reconnect🛑 safetyClose and re-open the connection to the instrument (e.g. after it was power cycled or a cable was re-plugged).
set_setpoint⚠️ hazardSet the circulator's temperature setpoint (out_sp_00). If temperature control is running, the circulator starts heating or cooling to it immediately. Refused outside min_temperature_c..max_temperature_c; the circulator itself also rejects values outside its range or warning limits (reported as an error). Needs remote control enabled.
start_circulation⚠️ hazardStart temperature control (out_mode_05 1): the pump runs and the bath heats or cools to the setpoint, which is checked against the safety limits first (it may have been changed on the front panel). Make sure the bath is filled and any external hoses are connected and secured. Needs remote control enabled.
stop_circulation🛑 safetyStop temperature control and the pump (out_mode_05 0), then confirm with in_mode_05. Also ends a running wait_for_temperature. The bath stays hot/cold after stopping.
wait_for_temperature👁 readPoll the bath (or external) temperature until it has been within tolerance_c of the target for stable_for_s seconds, or timeout_s passes. Does not change anything; start circulation first. Stops early (reached = false) if the circulator raises an alarm or a stop command is sent. Returns a short temperature trace.

Safety limits

LimitDefaultMeaning
max_temperature_c90 °CHighest setpoint an agent may set (also checked before start_circulation)
min_temperature_c5 °CLowest setpoint an agent may set (also checked before start_circulation)
max_wait_s7200 sLongest wait_for_temperature

The defaults suit a water bath. Set them to your bath fluid's working range, e.g. --limit min_temperature_c=-30 --limit max_temperature_c=150 for a silicone oil / glycol-rated setup. The circulator additionally enforces its own working range, warning limits and excess-temperature protection; rejections come back as errors such as -11 VALUE TOO LARGE.

Example prompts

  • "Set the circulator to 37 °C, start it and tell me when the bath has been stable within ±0.1 °C for five minutes."
  • "What's the bath temperature and how hard is the circulator working right now?"
  • "Cool the jacketed reactor to 10 °C using the external Pt100 as the reference and let me know when it gets there."
  • "Is there any alarm on the circulator? Explain what it means."
  • "Stop the circulator."

Notes

  • Remote control is a front-panel setting. In manual mode (00 MANUAL STOP / 01 MANUAL START) the server refuses to send settings and tells you how to enable remote control.
  • Every setting is verified. OUT commands have no reply, so after each one the server queries status (to catch -08 INVALID COMMAND, -09 COMMAND NOT ALLOWED IN CURRENT OPERATING MODE, -10 VALUE TOO SMALL, -11 VALUE TOO LARGE, -13 VALUE EXCEEDS TEMPERATURE LIMITS) and reads the setpoint or in_mode_05 back. stop_circulation retries once and reports an error if the circulator still says it is running.
  • Model differences. CORIO CD has only the basic set (actual value, power, safety sensor, setpoint, start/stop). Warning limits (in_sp_03/04) need CORIO CP, MAGIO or DYNEO; the external Pt100 (in_pv_02) needs MAGIO or DYNEO. The server detects missing commands (no reply) and reports those values as null.
  • Command pacing (unverified). The manuals give no minimum time between commands. The server waits command_delay_s (default 0.25 s) after each setting command before checking status; change it with --option command_delay_s=0.5 if your circulator misses commands.
  • Watchdog. MAGIO/DYNEO circulators have a watchdog configured in their own menu (mode, timeout, fallback setpoint, reset on "setpoint only" or "all valid commands"). The server does not configure it. With restart mode "all valid commands" you can keep it fed while the server runs with --option keepalive_s=10 (queries status every 10 s). JULABO's alarm list notes that it expects the setpoint at least every 30 s in "setpoint" restart mode, which this keep-alive does not do.
  • Status and alarm texts are decoded from the code (-01, -14, -63, ...) using the alarm tables in the manuals; the exact wording the circulator sends is passed through unchanged.
  • Not implemented: pump stage/capacity (out_sp_07/27), warning-limit writes (out_sp_03/04), controller parameters (out_par_*), external/internal control switch (out_mode_04), EPROG and ATC calibration commands.

Hardware verification

ModelFirmwareInterfaceVerified byDate
none yet: be the first

來源:servers/chemistry/julabo-circulator/README.md,提交 46545ea

工具

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

版本歷史

2
  1. v0.1.2最新Sep 27, 2026
  2. v0.1.0Sep 26, 2026

評分

已滿足適用檢查項的 50%

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

  • 近 30 天內可連通25 分

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

  • 已宣告認證方式10 分

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

  • 已列出工具15 分

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

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