mcpField
M
Mettler Toledo Balance

Mettler Toledo Balance

Local
github.comScience & Education23Updated 5w ago

About Mettler Toledo Balance

An MCP server for users of Mettler Toledo laboratory balances, using MT-SICS commands to read weights, tare, track weight changes, and run internal adjustments. It supports RS-232, USB, and Ethernet connections; hardware verification is not yet reported.

Key features

  1. 01Read weight and balance temperature
  2. 02Tare, clear tare, and preset tare
  3. 03Log readings to monitor drift
  4. 04Run internal adjustment and control draft shield
  5. 05Connect over RS-232, USB, or Ethernet

Use cases

  1. 01Weigh samples or containers with tare
  2. 02Track evaporation or weight stabilization
  3. 03Run an internal adjustment before weighing
  4. 04Operate a motorized draft shield remotely

MCP support

As an MCP server, it exposes MT-SICS tools for weighing, tare operations, weight-series logging, internal adjustment, and draft-shield control to MCP clients.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"k-dense-ai-labmcp-mettler-toledo": {
"command": "uvx",
"args": [
"labmcp-mettler-toledo"
],
"env": {
"LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
"LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
"LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
"LABMCP_LIMITS": "<LABMCP_LIMITS>"
}
}
}
}
Run commanduvx labmcp-mettler-toledo
Environment variables to set
LABMCP_ADDRESSInstrument address, e.g. serial:///dev/ttyUSB0 or tcp://192.168.1.50:5025
LABMCP_SIMULATESet to 1 to use the built-in simulator (no hardware)
LABMCP_READ_ONLYSet to 1 to disable all state-changing tools
LABMCP_LIMITSSafety limit overrides, e.g. max_temperature_c=80

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypilabmcp-mettler-toledo0.1.3

Tools

17

Saved tool list · updated 2w ago

This tool takes no parameters.

Details

From the project README

Mettler Toledo Balance — MCP Server

Let an AI agent weigh samples, tare containers, log drift and evaporation, run internal adjustments and drive the draft shield on Mettler Toledo balances through the open MT-SICS interface command set.

Packagelabmcp-mettler-toledo
InstrumentsExcellence XPR/XSR, XP/XS, XA/XE, MS/ML, NewClassic ME/MS, and other MT-SICS balances and weighing terminals
InterfacesRS-232, USB (virtual COM port), Ethernet (XPR/XSR, or any serial-to-Ethernet adapter)
ProtocolMT-SICS levels 0–2 (reference manual)
Status🧪 simulated: tested against a wire-level MT-SICS simulator, not yet verified on hardware. Report a hardware test

Try it without hardware

uvx labmcp-mettler-toledo --simulate --check

Connect your balance

  1. Balance setup: in the balance menu, set the interface (RS232/USB/Ethernet) to MT-SICS (sometimes called "Host" or "Dialog"). Factory settings are 9600 baud, 8 data bits, no parity, 1 stop bit, Xon/Xoff.
  2. Find the port: uvx labmcp ports
  3. Test the connection:
    uvx labmcp-mettler-toledo --address /dev/ttyUSB0 --check          # Linux
    uvx labmcp-mettler-toledo --address /dev/tty.usbserial-XXXX --check  # macOS
    uvx labmcp-mettler-toledo --address COM4 --check                  # Windows
    uvx labmcp-mettler-toledo --address tcp://192.168.1.60:8001 --check  # Ethernet
    
    Non-default settings go in the address: serial://COM4?baudrate=19200&xonxoff=false.

Add to your MCP client

Claude Code

claude mcp add balance -- uvx labmcp-mettler-toledo --address /dev/ttyUSB0

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

{
  "mcpServers": {
    "balance": {
      "command": "uvx",
      "args": ["labmcp-mettler-toledo", "--address", "/dev/ttyUSB0"]
    }
  }
}

Add --read-only to allow weighing but block taring, zeroing and door movement. For other clients, generate the snippet with uvx labmcp config mettler-toledo --address /dev/ttyUSB0 --client vscode (also cursor, codex, claude-code).

Tools

ToolKindDescription
clear_tare🎛 controlClear the tare memory (tare = 0).
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_draft_shield👁 readReport the position of the motorised draft-shield doors (Excellence/XPR balances only).
get_tare👁 readReturn the weight currently stored in the tare memory.
log_weight_series👁 readRecord a series of immediate (unfiltered) readings to monitor drift, evaporation, moisture uptake or stabilisation. Returns every reading plus summary statistics.
read_temperature👁 readRead the balance's internal temperature probe(s) in °C (MT-SICS M28, if supported).
read_weight👁 readRead the current net weight from the balance.
reconnect🛑 safetyClose and re-open the connection to the instrument (e.g. after it was power cycled or a cable was re-plugged).
reset_balance🛑 safetyAbort whatever the balance is doing (an adjustment, a repeating weight stream, a pending command) and reset it to its power-on state without zeroing (MT-SICS @). Clears the tare. Motorised draft-shield doors have their own obstruction detection and reverse if blocked.
run_internal_adjustment🎛 controlAdjust (calibrate) the balance with its built-in reference weight (MT-SICS C3). The pan must be empty and the balance undisturbed. Takes roughly 1-3 minutes.
set_draft_shield⚠️ hazardOpen or close the motorised draft-shield doors. Make sure nothing (and no one's fingers) is in the way of the doors.
set_tare_preset🎛 controlPreset a known tare weight (e.g. a container weighed earlier).
show_message🎛 controlShow a short message on the balance display (e.g. 'Add sample 3'). Use show_weight_display to return to the normal weight display.
show_weight_display🎛 controlSwitch the balance display back to showing the weight.
tare🎛 controlTare the balance: store the current load (e.g. an empty container) as the tare weight. Returns the stored tare weight.
zero🎛 controlZero the balance with the current load. Also clears the tare memory.

get_connection_info, get_command_log and reconnect are built into every LabMCP server.

Safety limits

LimitDefaultMeaning
max_series_duration_s600 sLongest 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).

Example prompts

  • "Tare the balance, then tell me when the reading is stable after I add the sample."
  • "Log the weight every 10 s for 5 minutes and tell me the evaporation rate in mg/min."
  • "Weigh out ~250 mg: tell me how much more to add, reading every few seconds, until I'm within ±2 mg."
  • "Run an internal adjustment and confirm it succeeded before we start the calibration curve."

Notes

  • read_weight(stable=True) sends S, which waits for stability. If the balance cannot settle (draughts, vibration), it returns S I. The server reports this as an error, so retry or use stable=false.
  • Weights are in the balance's unit 1 (normally grams). Units shown on the display (unit 2) don't affect the interface.
  • Draft-shield (WS) and temperature (M28) commands exist only on balances with that hardware; other balances answer ES/L, which the server reports clearly.
  • run_internal_adjustment waits for the final C3 A without blocking the connection: reset_balance aborts a running adjustment, and other commands are refused until it ends (their replies would be mixed up with the result).
  • Before each command the server discards anything the balance sent unasked (e.g. a print-key transmission) and checks that the reply belongs to the command, so one late reply cannot shift every later reply by one.
  • show_message accepts printable ASCII only, and set_tare_preset only a unit symbol: a line break would otherwise reach the balance as a second MT-SICS command.

Hardware verification

ModelFirmwareInterfaceVerified byDate
none yet: be the first

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.