This release is a pre-release and may not be stable for production use.
rhylthyme-labmcp
Run lab instruments served by LabMCP, K-Dense's open-source (Apache-2.0) MCP servers for balances, stirrers, syringe pumps, sensors, spectrometers, Opentrons robots and generic SiLA 2, SCPI and Modbus devices, from Rhylthyme programs. Rhylthyme's planner and runner schedule the work; each workcell tool is one LabMCP server, started by the runner and spoken to over MCP. It is an independent project, not affiliated with or endorsed by K-Dense.
Status: alpha. Everything runs simulated unless you ask for a live run.
pip install "rhylthyme[labmcp]" # and uv: https://docs.astral.sh/uv/
E=https://raw.githubusercontent.com/rhylthyme/rhylthyme-labmcp/main/examples
curl -sO $E/titration.json -sO $E/workcell-titration.json
rhylthyme run titration.json --workcell workcell-titration.json
A step names a tool of the server; the step can send actions when it starts, end on a reply, and send actions when it ends:
{ "stepId": "heat-stir", "name": "Heat to 40 °C and stir for 2 minutes",
"duration": { "type": "fixed", "seconds": 120 },
"instrument": { "tool": "stirrer",
"start": [ { "command": "set_temperature", "params": { "temperature_c": 40 } },
{ "command": "start_heating" }, { "command": "start_stirring" } ],
"end": [ { "command": "stop_heating" } ] } }
A local workcell says which LabMCP server each tool is, where the instrument is, and its safety limits; it never leaves the lab machine, and LabMCP and galago-tools tools can share one:
{ "id": "titration-bench",
"tools": [
{ "name": "stirrer", "driver": "labmcp", "server": "ika",
"address": "/dev/ttyUSB1", "limits": { "max_temperature_c": 80 } } ] }
What you get
- Checks before the run:
rhylthyme validate --workcellchecks every call against a catalogue of every LabMCP server's tools, input schemas and limits, the servers' command policies, and pump timing. - Planning: durations estimated from params (doses, series, runs, waits)
for
rhylthyme plan, timelines and the hosted MCP server. - Safety: workcell limits passed to the servers; safe stops when a step
fails or the run is aborted; pausing the schedule pauses instruments that
can hold; a live pre-flight with every instrument's identity, mode and
limits and every hazardous action, behind a typed
live. - Remote servers over HTTP, and the web bridge (
rhylthyme bridge) to watch and steer runs from rhylthyme.com, with addresses never published.
Read the guide: setup and the workcell reference, writing steps, checking and planning, running, limits and safe stops, live runs, the web bridge, and troubleshooting.
Examples
| Program | Shows |
|---|---|
titration.json |
Balance, hotplate stirrer and pH probe; actions around a timer |
dosing.json |
New Era and Tecan Cavro syringe pumps |
opentrons-transfer.json |
One Opentrons protocol on LabMCP or galago-tools: only the workcell changes |
protocol-bridges.json |
SiLA 2, SCPI and Modbus devices, each with a command policy |
tare-and-shake.json |
A LabMCP balance and a galago-tools shaker in one workcell |
Each has its workcell in examples/.
Development
pip install -e ".[dev]" -e ../rhylthyme-cli-runner
pytest -m "not integration" # fakes only
pytest -m integration # real LabMCP servers via uvx, simulated
License
Apache-2.0. LabMCP is by K-Dense, Apache-2.0; the catalogue is exported from its servers, and one module is vendored from it. See NOTICE.
Metadata
Release files for rhylthyme-labmcp 0.1.0a0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rhylthyme_labmcp-0.1.0a0.tar.gz | 171.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rhylthyme_labmcp-0.1.0a0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 272.5 kB
Release files / rhylthyme_labmcp-0.1.0a0.tar.gz
| Download URL | rhylthyme_labmcp-0.1.0a0.tar.gz |
|---|---|
| Size | 171.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a417e51eb23086ee559d86bebd1d0e5a2bc39aa33402592f4f913aa6203e7c03
|
|
BLAKE2b-256 checksum How to use checksums |
cc1534b534b5b143b79e8cc0e528bff5981646d46a04a1f27829636ac58b7eb6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / rhylthyme_labmcp-0.1.0a0-py3-none-any.whl
| Download URL | rhylthyme_labmcp-0.1.0a0-py3-none-any.whl |
|---|---|
| Size | 101.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ed172ab28406dd25b378203601e70bce4e30a7240e11b7ae94165cd1bc81c8a5
|
|
BLAKE2b-256 checksum How to use checksums |
904f9c7212e6e0a3b49ab1417da7c3805f108ad4f6556b806b1f5d9b67b18af5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|