mcpField
T
Tecan Cavro Syringe Pump

Tecan Cavro Syringe Pump

本地服务
github.com科研与教育235 周前更新

关于 Tecan Cavro Syringe Pump

面向实验室自动化的 MCP 服务,通过 Cavro DT 协议控制 Tecan Cavro 注射泵,执行微升级液体操作并读取设备状态。当前仅经线路级模拟器测试,尚未在真实硬件验证。

主要功能

  1. 01吸取与分配指定体积
  2. 02设置流速并切换阀门
  3. 03读取泵状态与命令日志
  4. 04初始化、停止及重连
  5. 05支持模拟与只读模式

适用场景

  1. 01按指定流速移取微升级液体
  2. 02切换阀口完成样品转移
  3. 03检查柱塞位置与泵错误
  4. 04无硬件时用模拟器测试流程

MCP 相关

作为 MCP 服务,它向客户端提供注射泵控制和状态读取工具。支持设置只读模式,并可配置单次体积与流速上限。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"k-dense-ai-labmcp-cavro": {
"command": "uvx",
"args": [
"labmcp-cavro"
],
"env": {
"LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
"LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
"LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
"LABMCP_LIMITS": "<LABMCP_LIMITS>"
}
}
}
}
启动命令uvx labmcp-cavro
需要配置的环境变量
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

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypilabmcp-cavro0.1.3

工具

9

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

Tecan Cavro 注射泵 — MCP 服务

让 AI Agent 通过有文档记录的 Cavro Data Terminal(DT)协议,对 Tecan Cavro OEM 注射泵进行初始化、按设定流速吸取和分配微升体积、切换阀门端口以及停止操作。

软件包labmcp-cavro
仪器Cavro XLP 6000、Cavro XMP 6000、Cavro XCalibur(配备 3 端口、4 端口或分配阀,或不带阀门)
接口RS-232、RS-485(需使用 RS-485 适配器)、串口转以太网适配器
协议Cavro DT 协议(XLP 6000 操作手册,734237-C,第 3 章和附录 G);步进分辨率参见 Tecan XCalibur / XMP 6000 规格
状态🧪 模拟:已通过线路级模拟器测试,尚未在硬件上验证。报告硬件测试结果

无需硬件即可试用

uvx labmcp-cavro --simulate --check

模拟器使用配有 1 mL 注射器和 3 端口阀的 XLP 6000。移动操作会耗费实际时间;添加 --option sim_speed=10 可加快模拟速度。

连接注射泵

  1. 注射泵设置:设置地址开关(开关 0 对应 DT 地址 1,开关 1 对应 2,……开关 8 对应 9,开关 9–E 对应 : ; < = > ?)。注射泵会根据上电后的第一条消息检测使用 DT 还是 OEM 协议。默认设置为 9600 波特率,8N1;使用 U47 配置命令可选择 38400 波特率。
  2. **告知服务已安装的配置。**注射泵无法报告其注射器规格,因此在真实硬件上必须设置以下选项:
    • --option syringe_ul=1000:注射器容量,单位为 µL。
    • --option model=xlp6000(或 xmp6000,每行程 6000 个增量;xcalibur,3000 个增量)。对于其他兼容 DT 协议的注射泵,请改为设置 --option steps_per_stroke=<increments per full stroke in standard mode>。
    • 可选:--option resolution=fine(N1,体积步进精度提高 8 倍;由 initialize 应用)以及 --option pump_address=2。
  3. 查找端口:uvx labmcp ports
  4. 测试连接:
    uvx labmcp-cavro --address /dev/ttyUSB0 --option syringe_ul=1000 --option model=xcalibur --check
    uvx labmcp-cavro --address COM3 --option syringe_ul=500 --option model=xlp6000 --check
    
    非默认波特率应写入地址:serial://COM3?baudrate=38400。

添加到 MCP 客户端

Claude Code

claude mcp add cavro -- uvx labmcp-cavro --address /dev/ttyUSB0 --option syringe_ul=1000 --option model=xcalibur

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

{
  "mcpServers": {
    "cavro": {
      "command": "uvx",
      "args": ["labmcp-cavro", "--address", "/dev/ttyUSB0",
               "--option", "syringe_ul=1000", "--option", "model=xcalibur"]
    }
  }
}

添加 --read-only,即可允许读取状态,同时阻止所有移动操作。

工具

工具类型描述
aspirate_ul⚠️ hazard通过当前(或指定的)阀门端口,以 flow_ul_s 的流速将 volume_ul 抽入注射器,并等待操作完成。泵必须已初始化,且有足够空间容纳该体积。
dispense_ul⚠️ hazard通过当前(或指定的)阀门端口,以 flow_ul_s 的流速将 volume_ul 从注射器推出,并等待操作完成。注射器中至少要有相应体积的液体。
get_command_log👁 read返回最近发送给仪器的原始命令和收到的回复(最新的列在最后)。可用于调试和记录操作。
get_connection_info👁 read报告已连接的仪器(身份、地址、模拟或真实)、服务是否为只读,以及当前生效的安全限制。请先调用此工具。
get_status👁 read报告泵是否就绪或正忙、是否有错误(已解码)、推杆位置(即注射器中的液体体积)、阀门位置、分辨率模式和当前最高速度。
initialize⚠️ hazard初始化泵:将推杆驱动到注射器顶部(经阀门排出注射器内容物),将此位置设为 0,并将阀门归位。断电后、推杆过载后或执行 terminate 后都需要初始化。请先将阀门输出端接至废液端。此操作需要几秒钟。
reconnect🛑 safety关闭并重新打开与仪器的连接(例如,仪器断电重启或重新插拔电缆后)。
set_valve⚠️ hazard将阀门转到指定名称的位置(三通/四通阀),或转到编号端口(分配阀)。处于旁通位置时,推杆无法移动。返回新的状态。
terminate🛑 safety立即停止任何推杆移动、循环或延时(DT 命令 T)。正在进行的阀门移动仍会完成。之后请重新初始化:推杆可能已丢失步数。

安全限制

限制默认值含义
max_volume_ul5000 µL单次 aspirate_ul/dispense_ul 可移动的最大体积
max_flow_ul_s500 µL/sAgent 可使用的最高推杆流速

启动时可覆盖:--limit max_flow_ul_s=50。无论这些限制如何设置,服务都会拒绝可能导致注射器溢出或抽空的操作,以及超出已安装注射器所能达到的泵流速(最高速度为 5–6000 pulses/s)的操作。

示例提示词

  • “初始化泵,然后进行预充:从输入端口抽取 1 mL,再从输出端口排出,重复三次。”
  • “以较慢的速度(20 µL/s)从端口 3 抽取 150 µL 样品,再向端口 5 注入 50 µL。”
  • “现在注射器中有多少液体?阀门位于哪个端口?”
  • “泵报告推杆过载。这是什么意思?我应该检查什么?”
  • “现在停止泵。”

说明

  • 换算。 步数 = 体积 × 每行程步数 ÷ 注射器容量;标准模式下,每行程步数为 6000(XLP/XMP)或 3000(XCalibur),精细定位模式(N1)下则为其 8 倍。每次移动前都会从泵读取模式(?28)。最高速度 V = 流速 × 6000 ÷ 注射器容量:三种型号的一个完整行程在 N0/N1 模式下均为 6000 个速度脉冲。对于 XCalibur,该数值是根据 Tecan 公布的每行程 1.2 s–20 min 推算得出,而非来自其操作手册;请在硬件上确认。
  • 忙碌/就绪状态仅从 Q 读取,这是手册的要求。无效命令会立即报告;无效操作数(例如移动超出注射器行程末端)会在下一次 Q 时报告,服务会将两种情况都转换为明确的错误。
  • 初始化推力根据注射器尺寸选择(满推力适用于 ≥ 1 mL,半推力适用于 250/500 µL,三分之一推力适用于 50/100 µL;手册表 3-6),除非你手动选择。
  • terminate 发送 T,不发送 R:在 DT 命令集中,R 会恢复已终止的字符串。T 不会停止正在进行的阀门移动。终止后请重新初始化。如果移动或初始化在远超预期时长(1.5× + 10 s)后仍处于忙碌状态,或者等待期间连接失败,服务会自行发送 T,避免柱塞持续移动。
  • 服务不使用微步模式(N2)、OEM 协议(校验和、序列号)或 CAN。
  • Cavro Centris 的分辨率不同(每行程 181,490 个增量),且其基于体积的固件命令无法验证,因此不受支持。XE 1000 和较旧的 XL/XP 3000 泵可能可通过 --option steps_per_stroke=… 使用,但尚未测试。

硬件验证

型号固件接口验证者日期
尚无:抢先验证

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。