
JULABO Circulator
io.github.K-Dense-AIPublished by GitHub account K-Dense-AIv0.1.2Updated Oct 24, 2026
MCP server for JULABO heating and refrigerated circulators (CORIO, MAGIO, DYNEO).
Overview
Local MCP server that lets an assistant monitor and control JULABO heating and refrigerated circulators over USB or RS-232.
- What you can do
- Read bath, safety-sensor and optional external Pt100 temperatures, heating/cooling power, setpoint and decoded status or alarm messages, plus connection info and a raw command log for debugging and record-keeping. Set the temperature setpoint and start or stop temperature control and the pump, with each setting verified by reading status back. Poll until the bath is stable within a tolerance for a set time and return a short temperature trace. Reconnect after a power cycle or re-plugged cable.
- When to use it
- Useful in a lab where a JULABO CORIO, MAGIO or DYNEO circulator is connected to the machine and you want an assistant to hold a bath at a target temperature, watch stability, or explain alarms. Not needed if you have no such instrument or only want manual front-panel control.
- Requirements
- Runs locally as a Python package (uvx labmcp-julabo) over stdio; desktop only. Needs a USB or null-modem RS-232 connection to the circulator, remote control enabled on its front panel, and the instrument address in LABMCP_ADDRESS (serial or tcp). Optional LABMCP_LIMITS, LABMCP_READ_ONLY and LABMCP_SIMULATE; a built-in simulator allows trying it without hardware.
Installation
In SourceWeft
- Open JULABO Circulator in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
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.
Try it without hardware
Connect your circulator
- Enable remote control on the circulator. Without it the circulator answers queries but ignores every setting command.
- CORIO CD/CP:
MENU→IntE→rEM→USb(or232for RS-232).rOFFappears in standby. - MAGIO / DYNEO: Main menu → Connect unit → Remote control → USB or RS232. An "R" appears in the status bar.
- CORIO CD/CP:
- 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=trueto the address to enforce it. - Find the port:
uvx labmcp ports - Test the connection:
--checkprints the firmware string (version) and the current status, e.g.02 REMOTE STOP.
Add to your MCP client
Claude Code
Claude Desktop / Cursor / Windsurf (claude_desktop_config.json, .cursor/mcp.json, …)
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
Safety limits
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 orin_mode_05back.stop_circulationretries 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 asnull. - 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 checkingstatus; change it with--option command_delay_s=0.5if 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(queriesstatusevery 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
Source: servers/chemistry/julabo-circulator/README.md at commit 46545ea
Tools
0Version history
2- v0.1.2LatestSep 27, 2026
- v0.1.0Sep 26, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts