
Lake Shore Temperature Controller
io.github.K-Dense-AIPublished by GitHub account K-Dense-AIv0.1.3Updated Oct 27, 2026
MCP server for Lake Shore Cryotronics 335/336/350 temperature controllers.
Overview
MCP server for Lake Shore 335/336/350 cryogenic temperature controllers: read sensors, inspect heaters, set setpoints, ramps, ranges and PID, and switch…
- What you can do
- Read every sensor input (kelvin, raw units, type, status) and full heater status including range, output %, setpoint, ramp state, PID and heater errors
- Set control setpoints in kelvin, heater ranges, ramp on/off with rate, and P/I/D values per output loop
- Wait for a control input to stabilise within a tolerance for a set time, returning the final temperature and a downsampled trace
- Turn all heaters off like the front-panel All Off key, and reconnect after a power cycle
- Inspect connection identity, read-only mode and active safety limits, and review the raw command log
- When to use it
- Useful in a lab running a Lake Shore 335, 336 or 350 controller, where an assistant should monitor cryostat temperatures, adjust setpoints and PID, or run ramp-and-settle sequences. Also handy for trying the workflow without hardware via the built-in simulator.
- Requirements
- Runs locally as a Python package (uvx labmcp-lakeshore) over stdio; desktop client only. Needs a reachable instrument over USB serial, Ethernet (TCP 7777 on 336/350) or GPIB via VISA, set with LABMCP_ADDRESS. Optional LABMCP_LIMITS, LABMCP_READ_ONLY and LABMCP_SIMULATE. No account or API key.
Installation
In SourceWeft
- Open Lake Shore Temperature Controller 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
Lake Shore Temperature Controller — MCP Server
Let an AI agent read every sensor on your cryostat, check heater status, set setpoints, ramps, heater ranges and PID values, wait for the temperature to settle, and switch all heaters off on Lake Shore Cryotronics Model 335, 336 and 350 temperature controllers.
Try it without hardware
The simulator models a small cryostat at 4.2 K: a stage (inputs A diode and C Cernox-like, heated by output 1) and a sample (input B Pt-100, heated by output 2), with Lake Shore's PID law and setpoint ramping. sim_speed makes simulated time run faster than real time.
Connect your controller
The model is detected from *IDN?; other Lake Shore models (325, 331, 340, 372, ...) are refused.
- Pick the interface in the controller's Interface menu (only one remote interface is active at a time).
- USB: install the Lake Shore USB driver (Windows Update, or lakeshore.com). The port runs at a fixed 57600 baud, 7 data bits, odd parity, 1 stop bit; the server sets this automatically.
- Ethernet (336, 350): configure the IP address on the front panel; the command port is TCP 7777 (two connections at most).
- Test the connection:
Add to your MCP client
Claude Code
Claude Desktop / Cursor / Windsurf (claude_desktop_config.json, .cursor/mcp.json, …)
Add --read-only to allow reading temperatures and heater status but block setpoint, ramp, range and PID changes (all_heaters_off stays available). For other clients, generate the snippet with uvx labmcp config lakeshore --address tcp://192.168.1.40:7777 --client vscode (also cursor, codex, claude-code).
Tools
get_connection_info, get_command_log and reconnect are built into every LabMCP server.
Safety limits
Override at launch: --limit max_setpoint_k=420 --limit max_heater_range=2.
Example prompts
- "Read all the temperatures and tell me if any sensor has an error."
- "Ramp output 1 to 77 K at 2 K/min on the medium range, then wait until input A has been within 50 mK for 5 minutes."
- "Step the sample from 10 K to 300 K in 10 K steps and tell me when each step is stable." (with
max_setpoint_khigh enough) - "What are the PID settings on loop 1? Reduce P to 30 and keep I and D."
- "Something's wrong - turn all heaters off."
Notes
- Setting a setpoint does not start heating; the heater range does. With a range above 0 an output heats as its PID loop demands (closed loop) or at the manual output (open loop). Output modes and control inputs are configured on the front panel; the server does not change them, since pointing a loop at the wrong sensor can cause a thermal runaway.
- Setpoints are always given in kelvin.
SETPuses the preferred units of the loop's control input: the server converts for Celsius and refuses when the input is set to sensor units. - Every command is followed by
*ESR?; command (CME) and execution (EXE) errors are reported instead of being ignored. The server leaves at least 50 ms between messages, as the manuals require (--option min_interval_s=). get_heater_statusreadsHTRST?, which clears a latched heater open/short error on the controller.wait_for_stable_temperatureneeds the setpoint to have stopped ramping (RAMPST?) as well as the temperature to be in tolerance.all_heaters_offstops a running wait.all_heaters_offsendsRANGE n,0to every output and reads it back, like the front-panel All Off key. Every output is tried even if another fails;all_offis true only when every output read back as off. It does not change setpoints or output modes. Consider also setting a hardware temperature limit (TLIMIT, front panel) as a last line of defence.- The 3062 scanner option (inputs D1-D5), zone tables, autotune, curves, alarms and relays are not exposed. The Model 372 AC resistance bridge was not verified and is refused at connect time.
Hardware verification
Source: servers/physics/lakeshore-temperature/README.md at commit 46545ea
Tools
0Version history
2- v0.1.3LatestSep 27, 2026
- v0.1.1Sep 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