
Security News
/Company News
Securing the Financial Frontier: How Capital One Uses Socket for Open Source Security
Capital One is partnering with Socket to proactively secure its open source supply chain.
labmcp-sartorius
Advanced tools
MCP server for Sartorius laboratory balances (SBI protocol): weigh, tare, zero, log drift, internal adjustment.
Let an AI agent weigh samples, tare containers, log drift and evaporation, and run internal adjustments on Sartorius laboratory balances through the documented SBI (Sartorius Balance Interface) ASCII protocol.
| Package | labmcp-sartorius |
| Instruments | Cubis MSE, Cubis II MCA, Secura, Quintix, Practum, Entris II; older CP/CPA-series balances with --option legacy=true. Other SBI balances are likely to work |
| Interfaces | RS-232, USB (virtual COM port, "PC-SBI"), Ethernet (Cubis II "serial transmission via Ethernet", or any serial-to-Ethernet adapter) |
| Protocol | SBI: Entris II interface description (technical note 10/2020), Secura/Quintix/Practum user manual §10.3 (WSE6004), Cubis MSE operating instructions (WMS6004), Cubis MCA operating instructions (WMC6028), SBI interface description (98647-000-53) |
| Status | 🧪 simulated: tested against a wire-level SBI simulator, not yet verified on hardware. Report a hardware test |
uvx labmcp-sartorius --simulate --check
ESC P toggles the automatic output instead of sending one reading. Either line format works (16 characters, or 22 with ID code).?rtscts=true to enforce it, or e.g. ?bytesize=7&parity=E if your balance is set differently.uvx labmcp portsuvx labmcp-sartorius --address /dev/ttyUSB0 --check # Linux
uvx labmcp-sartorius --address /dev/tty.usbmodem14201 --check # macOS
uvx labmcp-sartorius --address COM4 --check # Windows
uvx labmcp-sartorius --address tcp://192.168.1.61:49155 --check # Cubis II via Ethernet (port as configured)
--check prints the model, serial number and software version (ESC x1_, x2_, x3_) when the balance supports them.Claude Code
claude mcp add balance -- uvx labmcp-sartorius --address /dev/ttyUSB0
Claude Desktop / Cursor / Windsurf (claude_desktop_config.json, .cursor/mcp.json, …)
{
"mcpServers": {
"balance": {
"command": "uvx",
"args": ["labmcp-sartorius", "--address", "/dev/ttyUSB0"]
}
}
}
Add --read-only to allow weighing but block taring, zeroing and adjustment. For other clients: uvx labmcp config sartorius-balance --address /dev/ttyUSB0 --client vscode.
| Tool | Kind | Description |
|---|---|---|
get_command_log | 👁 read | Return 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 | 👁 read | Report which instrument is connected (identity, address, simulated or real), whether the server is read-only, and the active safety limits. Call this first. |
lock_keypad | 🎛 control | Block or unblock the balance keys, e.g. so nobody tares by accident during a long logging run. |
log_weight_series | 👁 read | Record a series of immediate (unfiltered) readings to monitor drift, evaporation, moisture uptake or stabilisation. Returns every reading plus summary statistics. |
read_weight | 👁 read | Read the current net weight from the balance (ESC P). With stable=True the server polls until the balance reports a stable value; if it cannot settle (draughts, vibration, evaporation) you get an error; retry, or use stable=false for the current value. |
reconnect | 🛑 safety | Close and re-open the connection to the instrument (e.g. after it was power cycled or a cable was re-plugged). |
run_internal_adjustment | 🎛 control | Adjust (calibrate) the balance with its built-in weight (ESC Z; isoCAL models only). The pan must be empty and the balance undisturbed. SBI sends no completion message, so the server watches for the adjustment status and waits until the balance weighs again; check observed_adjustment and the balance display or GLP printout for the result. |
set_ambient_conditions | 🎛 control | Adapt the balance's filter to the ambient conditions (ESC K/L/M/N). Use 'unstable' or 'very_unstable' for draughty or vibrating benches (slower but steadier readings). |
tare | 🎛 control | Tare the balance (ESC U, or ESC T on legacy balances): the current load (e.g. an empty container) becomes the tare. Then waits for a stable reading and checks that it is ~0; returns that reading. |
zero | 🎛 control | Zero the balance (ESC V). Only works with the pan (nearly) empty, within the balance's zero-setting range; clears the tare. Confirms by reading ~0 afterwards. |
| Limit | Default | Meaning |
|---|---|---|
max_series_duration_s | 600 s | Longest weight-logging series an agent may start |
Override at launch: --limit max_series_duration_s=3600. Whatever the limit says, a single series is capped at one hour (the tool's time limit). No tool of this server moves anything or heats, so there are no hazard tools.
read_weight(stable=true) therefore polls ESC P until a reading with a unit arrives. Unstable readings report the last unit seen.N, G#, T, Stat, then the same 16). It also accepts the Cubis II "one line with full length" format, a decimal comma, and a G#/T/N weighing block (the N line is reported). High, Low, Err ###, APP.ERR, DIS.ERR and PRT.ERR are reported as clear errors.ESC U tare, ESC V zero, ESC Z adjust, ESC K–N filter, ESC O/R keys) produce no reply, so a balance that does not support one silently ignores it. tare and zero therefore wait for a stable reading and check it is ~0, and report an error otherwise.ESC V only zeroes within the balance's zero-setting range (nearly empty pan); ESC U tares any load. Older balances (CP/CPA, LE, ...) only have ESC T (the tare key): start the server with --option legacy=true.ESC Z starts isoCAL on balances with a built-in weight. SBI sends no completion or result message; the server watches for the Cal. status (or a balance too busy to answer) and waits for a stable weight again, and reports observed_adjustment=false if it never sees one. Confirm the result on the display or GLP printout. The exact status output during adjustment could not be verified in the manuals.ESC x1_/x2_/x3_ print the model, serial number and software version; their exact layout is not documented, so the text is passed through as sent.1b 50 0d 0a = ESC P CR LF) because of the ESC character.ESC W, needs a reference weight), ESC S restart and the function-key commands.| Model | Firmware | Interface | Verified by | Date |
|---|---|---|---|---|
| none yet: be the first |
FAQs
MCP server for Sartorius laboratory balances (SBI protocol): weigh, tare, zero, log drift, internal adjustment.
We found that labmcp-sartorius demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
/Company News
Capital One is partnering with Socket to proactively secure its open source supply chain.

Security News
Socket CTO Ahmad Nassri discusses how to keep AI agents from bypassing package blocks, limit credential access, and monitor their actions.

Security News
GPT-6 Astra tried to plant malicious code in simulated open source projects using fake GitHub accounts and deceptive PRs during an assigned CTF challenge.