
Tecan Cavro Syringe Pump
io.github.K-Dense-AIPublished by GitHub account K-Dense-AIv0.1.3Updated Oct 24, 2026
MCP server for Tecan Cavro syringe pumps (XLP 6000, XMP 6000, XCalibur) over the DT protocol.
Overview
MCP server that lets an assistant control Tecan Cavro syringe pumps over the DT protocol: initialize, aspirate, dispense, switch valve ports and stop.
- What you can do
- Initialize the pump, home the valve and reconnect after power cycling or cable changes, with a terminate command to stop plunger moves immediately (re-initialize afterwards). Aspirate and dispense set microlitre volumes at a chosen flow rate through the current or a given valve port, waiting until each move finishes. Switch the valve to a named or numbered port. Read status: ready or busy, decoded errors, plunger volume, valve position, resolution mode and top speed. Inspect the connection identity, read-only state and active safety limits, and review the raw command log for debugging or records.
- When to use it
- Useful when an assistant should drive a Cavro XLP 6000, XMP 6000 or XCalibur pump on a lab bench for priming, sample transfer or small-volume dispensing, or when you want to try the workflow against the built-in simulator before touching hardware.
- Requirements
- Runs locally as a Python package (labmcp-cavro, launched with uvx) over stdio. Needs a serial or serial-to-Ethernet connection to the pump, given via LABMCP_ADDRESS or --address. On real hardware the syringe volume and pump model (or steps per stroke) must be supplied as options. LABMCP_SIMULATE=1 runs a built-in simulator without hardware; LABMCP_READ_ONLY=1 blocks state-changing tools; LABMCP_LIMITS overrides safety limits.
Installation
In SourceWeft
- Open Tecan Cavro Syringe Pump 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
Tecan Cavro Syringe Pump — MCP Server
Let an AI agent initialize, aspirate and dispense microlitre volumes at set flow rates, switch valve ports and stop Tecan Cavro OEM syringe pumps through the documented Cavro Data Terminal (DT) protocol.
Try it without hardware
The simulator is an XLP 6000 with a 1 mL syringe and a 3-port valve. Moves take real time; add --option sim_speed=10 to speed it up.
Connect your pump
- Pump setup: set the address switch (switch 0 is DT address
1, switch 1 is2, … switch 8 is9, switches 9–E are:;<=>?). The pump detects DT versus OEM protocol from the first message after power-up. The default is 9600 baud, 8N1; 38400 baud is selected with theU47configuration command. - Tell the server what is installed. The pump cannot report its syringe, so these options are required on real hardware:
--option syringe_ul=1000: syringe volume in µL.--option model=xlp6000(orxmp6000, 6000 increments per stroke;xcalibur, 3000). For another DT-compatible pump, give--option steps_per_stroke=<increments per full stroke in standard mode>instead.- Optional:
--option resolution=fine(N1, 8× finer volume steps; applied byinitialize) and--option pump_address=2.
- Find the port:
uvx labmcp ports - Test the connection:
Non-default baud rates go in the address:
serial://COM3?baudrate=38400.
Add to your MCP client
Claude Code
Claude Desktop / Cursor / Windsurf (claude_desktop_config.json, .cursor/mcp.json, …)
Add --read-only to allow status reads but block every move.
Tools
Safety limits
Override at launch: --limit max_flow_ul_s=50. Independently of the limits, the server refuses moves that would overfill or over-empty the syringe, and flows the pump cannot produce with the installed syringe (top speed 5–6000 pulses/s).
Example prompts
- "Initialize the pump, then prime it: aspirate 1 mL from the input port and dispense it to the output port, three times."
- "Aspirate 150 µL of sample slowly (20 µL/s) from port 3 and dispense 50 µL into port 5."
- "How much liquid is in the syringe right now and which port is the valve on?"
- "The pump reported a plunger overload. What does that mean and what should I check?"
- "Stop the pump now."
Notes
- Conversion. Steps = volume × steps-per-stroke ÷ syringe volume, where steps-per-stroke is 6000 (XLP/XMP) or 3000 (XCalibur) in standard mode and 8× that in fine-positioning mode (N1). The mode is read from the pump (
?28) before every move. Top speedV= flow × 6000 ÷ syringe volume: on all three models a full stroke is 6000 speed pulses in N0/N1. For the XCalibur this is derived from Tecan's published 1.2 s–20 min per stroke, not from its operating manual; please confirm on hardware. - Busy/ready is read only from
Q, as the manual requires. Invalid commands are reported immediately; invalid operands (e.g. a move past the end of the syringe) are reported by the nextQ, and the server turns both into clear errors. - Initialization force is chosen from the syringe size (full ≥ 1 mL, half for 250/500 µL, third for 50/100 µL; manual table 3-6) unless you pick one.
terminatesendsTwithoutR: in the DT command setRresumes a terminated string.Tdoes not stop a valve move in progress. Re-initialize after terminating. If a move or initialization is still busy well past its expected duration (1.5× + 10 s), or the link fails while waiting, the server sendsTitself instead of leaving the plunger moving.- The server does not use microstep mode (N2), the OEM protocol (checksums, sequence numbers) or CAN.
- Cavro Centris has a different resolution (181,490 increments per stroke) and volume-based firmware commands that we could not verify, so it is not supported. XE 1000 and older XL/XP 3000 pumps may work with
--option steps_per_stroke=…, but they are untested.
Hardware verification
Source: servers/biology/tecan-cavro-pump/README.md at commit 46545ea
Tools
0Version history
3- v0.1.3LatestSep 27, 2026
- v0.1.1Sep 26, 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