mcpField
A
ASTM LIS Analyzer Receiver

ASTM LIS Analyzer Receiver

本地服务
github.com健康医疗235 周前更新

关于 ASTM LIS Analyzer Receiver

面向临床和实验室分析仪的只接收型 LIS MCP 服务,通过 ASTM E1381/E1394 接收并解析结果,供研究和实验室运营查询。结果仅可用于非临床用途;服务尚未在分析仪硬件上验证。

主要功能

  1. 01接收并校验 ASTM 帧
  2. 02解析分析仪结果记录
  3. 03按样本、患者或测试筛选
  4. 04查看结果详情与异常标记
  5. 05默认遮盖部分患者信息

适用场景

  1. 01查询最近收到的样本结果
  2. 02筛选并查看异常测试结果
  3. 03汇总指定时段的检测数据
  4. 04检查通信状态与帧错误

MCP 相关

向 MCP 客户端提供已接收消息、结果查询及连接状态工具。服务只接收结果并回应链路层 ACK/NAK,不下载订单或回答主机查询。

配置

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

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

工具

8

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

此工具无需参数。

详细介绍

ASTM LIS 分析仪接收器 — MCP 服务

让 AI Agent 收集并查询通过标准 ASTM E1381 / E1394 主机接口(CLSI LIS1-A / LIS2-A2)上传结果的临床和实验室分析仪(血液学、临床化学、免疫测定、尿液分析、凝血)。此服务充当一个小型、只接收的 LIS 端点:确认分析仪发送的帧、验证校验和、重新组装消息,并让 Agent 按样本、患者、检测项目或时间查询结果。

警告

仅供研究和实验室运营使用。这不是医疗器械,也不是经验证的实验室信息系统。 不得用于报告、发布或解读患者结果、诊断或任何临床决策。结果会经过 AI Agent 处理,而它可能误读结果;请始终以实验室经过验证的 LIS/中间件及结果发布流程为准。患者数据属于个人健康信息:默认会对患者姓名、出生日期、地址和电话号码进行脱敏;更改此设置前,请遵循所在机构的隐私规定。

软件包labmcp-astm-lis
仪器主机接口手册注明支持 ASTM E1381/E1394(CLSI LIS1-A/LIS2-A2)结果上传的分析仪,例如 Sysmex、Roche(cobas)、Abbott、Beckman Coulter、Mindray 等品牌的型号。请查阅对应型号的主机接口手册。
接口RS-232(serial://)、分析仪作为服务端的 TCP/IP(tcp://analyzer:port)、分析仪作为客户端的 TCP/IP(--option listen_port=5000)
协议ASTM E1381 低级协议(ENQ/ACK/NAK/EOT,带模 8 帧编号和校验和的分帧文本)+ ASTM E1394 记录 H、P、O、R、C、Q、L。根据公开可获取的 Beckman Coulter UniCel DxI / Access 2 LIS Vendor Information, C03112-AF(第 2–4 章)实现;ASTM/CLSI 标准本身仅供购买。仅接收。
状态🧪 模拟:已通过线路级分析仪模拟器和 TCP 回环测试,尚未在分析仪上验证。报告硬件测试

无需硬件即可试用

uvx labmcp-astm-lis --simulate --check

模拟分析仪会在启动后立即上传两条消息:一条带 5 分类计数的 CBC(含 H/L 标记和可疑标记注释,其中一条记录长到需要分成两帧,还有一帧在传输过程中损坏,收到 NAK 后会重传),以及一个化学检测面板(葡萄糖和钾偏高,并带有溶血注释)。其中所有患者数据均为虚构。

连接分析仪

在分析仪上,打开主机 / LIS /“在线”通信设置:

  1. 协议: ASTM(也可能称为 ASTM E1381/E1394、LIS1-A/LIS2-A2、CLSI 或“ASTM host”)。保持启用 ASTM 低层协议(ENQ/STX 帧格式),TCP/IP 连接也一样。
  2. 结果: 启用自动上传结果。
  3. 查询和订单: 此服务不会响应主机查询或下载订单。关闭“host query” / “order request” / 双向模式,否则分析仪会等待答复并在超时后才运行样本。
  4. 连接方式: 选择以下一种:
    • RS-232:记录波特率(通常为 9600)、8 个数据位、无校验位、1 个停止位(E1381 固定要求),并使用零调制解调器电缆。
      uvx labmcp-astm-lis --address /dev/ttyUSB0 --check                        # Linux
      uvx labmcp-astm-lis --address serial://COM3?baudrate=19200 --check        # Windows, non-default baud
      
    • TCP,分析仪作为服务端(在端口上监听):LIS 连接到分析仪。
      uvx labmcp-astm-lis --address tcp://192.168.1.80:5000 --check
      
    • TCP,分析仪作为客户端(在分析仪上输入主机 IP/端口):此服务进行监听。允许端口通过计算机的防火墙,并使用 allow_from 限制发送方。
      uvx labmcp-astm-lis --option listen_port=5000 --option allow_from=192.168.1.80 --check
      
  5. 可选:使用 --option store_path=~/lis/results.jsonl 在本地保存每条消息的记录(服务重启时会重新加载最新的 max_messages 条消息;如果无法写入文件,消息仍会保存在内存中,且 get_connection_status 会报告 store_write_errors)。

MCP 服务一启动,接收器就会启动,因此即使 Agent 尚未调用工具,上传的结果也会得到确认。收到的结果在 reconnect 后仍会保留在内存中(只有 clear_results 或未设置 store_path 时重启服务才会将其删除),因为分析仪不会重新发送已收到 ACK 确认的结果。

添加到 MCP 客户端

Claude Code

claude mcp add analyzer -- uvx labmcp-astm-lis --option listen_port=5000 --option store_path=~/lis/results.jsonl

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

{
  "mcpServers": {
    "analyzer": {
      "command": "uvx",
      "args": ["labmcp-astm-lis", "--address", "/dev/ttyUSB0"]
    }
  }
}

添加 --read-only 可隐藏 clear_results。对于其他客户端,可使用 uvx labmcp config astm-lis --address /dev/ttyUSB0 --client vscode 生成配置片段(也支持 cursor、codex、claude-code)。

工具

工具类型描述
clear_results🎛 控制从此服务的内存中删除所有收到的消息和结果(例如,在不同运行之间清理)。
get_command_log👁 读取返回最近发送给仪器的原始命令 / 从仪器收到的回复(最新的排在最后)。适用于调试和记录操作内容。
get_connection_info👁 读取报告已连接的仪器(身份、地址、模拟或真实)、服务是否为只读,以及当前启用的安全限制。请先调用此工具。
get_connection_status👁 读取报告分析仪连接状态、收到的消息和结果,以及链路层错误计数。
get_result_detail👁 读取显示一条结果的所有解码字段,以及相关备注、订单和患者上下文、原始记录和消息头。
get_results👁 读取返回收到的结果,可按样本 ID、患者 ID、检测代码、接收时间或异常标志筛选(最新的排在最后)。
list_received_messages👁 读取列出最近收到的 ASTM 消息(最新的排在最后)。
reconnect🛑 安全关闭并重新打开与仪器的连接(例如,仪器断电重启或重新插拔电缆后)。

get_connection_info、get_command_log 和 reconnect 是每个 LabMCP 服务内置的工具。

安全限制

此服务仅接收数据,绝不会向分析仪发送指令(只会回复 ACK/NAK),因此没有物理安全限制。隐私设置:

选项默认值含义
redact_patient_infotrue在存储、记录日志、写入 store_path 或由工具返回任何内容之前,将 P-record 字段 6(患者姓名)、7(母亲的婚前姓氏)、8(出生日期)、11(地址)和 13(电话号码)屏蔽为 REDACTED
allow_from(任意)在监听模式下,仅接受来自这些 IP 地址的连接(以 ; 或空格分隔)
max_messages5000保留在内存中的消息数量;优先丢弃最早的消息

患者 ID、性别、主治医师以及自由文本备注记录不会被屏蔽(筛选结果需要使用 ID)。如果你的分析仪会在备注中写入可识别身份的文本,请相应地处理输出。

提示词示例

  • “过去一小时内,血液分析仪有没有传来结果?列出样本。”
  • “显示样本 S26-000123 的所有标记结果,包括单位、参考范围和分析仪备注。”
  • “将今天的钾结果导出为表格,包含样本 ID、数值和标记。”
  • “分析仪链路是否正常?今天有多少帧收到 NAK,原因是什么?”
  • “比较样本 S26-000124 和 S26-000131 的葡萄糖结果。”
  • “在开始下一轮验证前,清除已存储的结果。”

注意事项

  • 仅接收。 不下载订单、不回复主机查询,也不发送链路级 ACK 以外的结果确认。分析仪发来的查询(Q)消息会被存储并报告(kind: "query"),但不会得到回复。订单下载计划作为后续工作实现。
  • 链路层(E1381)。 每个帧都会经过检查:校验和(从帧号到 ETX/ETB 的模 256 求和,以两位十六进制数表示)、帧号(第一帧为 1,之后按模 8 递增;若帧号与上一个已接受的帧相同,则视为重传并发送 ACK,但不会重复添加数据)和帧格式。错误帧会收到 NAK,分析仪会重新发送。ENQ … EOT 会话之外的帧会被忽略并计入 bytes_ignored,这通常表示分析仪未使用 ASTM 低层协议(不支持不带帧格式的原始 E1394)。会话静默 30 s 或通过 ENQ 重启时,其未完成的消息会被丢弃,这是 E1381 的要求;以 EOT 结束但没有终止符(L)记录的消息会被保留,并标记为 complete: false。
  • 容错。 接受超过 240 个文本字符的帧,以及包含多条记录的结束帧(并会计数);如果帧的 CR LF 始终未到达,则在 10 s 后发送 NAK。默认使用 Latin-1 解码文本(--option encoding=...;启动时会拒绝未知的编码名称)。
  • 记录(E1394)。 分隔符取自每条标头记录(默认值为 H|\^&)。转义序列 &F& &S& &R& &E& 和供应商格式 &|& 会被解码;其他转义序列会原样保留。测试代码取自通用测试 ID 中第一个非空的“本地代码”部分(^^^TSH、^^^^WBC);若为空,则回退到第一个部分。样本 ID 取自订单的 Specimen ID,或仪器 Specimen ID 中第一个非空部分。结果值会按原样返回("<0.1"、">500"、"Cancelled");仅当值为纯数字时才会设置 numeric_value。
  • 标志和状态会按原样传递。只有 LIS2-A2 / E1394 定义的异常标志(N L H LL HH < > A U D B W)和所用供应商规范中记录的结果状态(F X)才会附带含义;其他内容因分析仪而异,请查阅分析仪的主机接口手册。
  • 记录中的时间戳(测试开始/完成时间、标头时间)使用分析仪的本地时间;received_at 是此服务存储消息的时间(UTC)。
  • 侦听模式每个端口服务一台分析仪:新连接会替换之前的连接(分析仪重启后通常会重新连接,但不会关闭旧套接字)。每台分析仪运行一个服务条目(或端口)。不支持 TLS;请将端口限制在实验室网络内,并使用 allow_from。
  • 仅针对模拟器和环回 TCP 进行过测试。不同供应商的 ASTM 方言通常存在差异;请报告与您的分析仪配合正常或异常的情况。

硬件验证

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

评论

支持 Markdown

第一次接触 MCP?

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

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