mcpField
M
MCP SERVER LIMS

MCP SERVER LIMS

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

关于 MCP SERVER LIMS

MCP SERVER LIMS 是用于演示实验室样本数据管理工作流的 MCP 服务,面向需要协调多步骤实验流程的 AI Agent。它结合模拟仪器工具与数据库,让 Agent 登记样本、筛选处理结果并生成汇总报告。

主要功能

  1. 01登记并跟踪样本数据
  2. 02模拟样本制备仪器
  3. 03模拟分析仪器并生成结果
  4. 04使用结构化数组输入输出
  5. 05跨工作流步骤汇总样本信息

适用场景

  1. 01演练样本登记到分析的实验流程
  2. 02仅将通过制备的样本送入分析
  3. 03测试 Agent 处理结构化工具数据
  4. 04生成涵盖多个步骤的工作流报告

MCP 相关

该 MCP 服务向客户端提供数据库及模拟仪器工具,用于实验室样本工作流。示例还需运行 mcp-server-sqlite,以保存中间数据。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"lims": {
"command": "uvx",
"args": [
"mcp-server-sqlite"
]
}
}
}
启动命令uvx mcp-server-sqlite

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

安装包
pypimcp-server-sqlite

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP 服务 LIMS

此代码库包含视频中展示的 MCP Server 代码,该视频来自以下 LinkedIn 文章。示例展示了 Anthropic 的 Claude 调用 MCP 数据库和模拟仪器工具,执行实验室工作流中的各个步骤。这个示例颇具挑战性,因为它要求在多个步骤中管理结构丰富的数据集合。

https://www.linkedin.com/pulse/ai-agent-lims-iot-mcp-tom-sheffler-ylmpc/

简介

LIMS(实验室信息管理系统)示例的目标是让 AI Agent 管理一组样本在实验室工作流中流转时相关的数据。

这里的合成工作流是实验室中可能遇到的某种流程的简化版本,但省略了许多细节。在此工作流中,实体样本会在处理或分析它们的仪器之间传递。此外,还有与样本进入仪器及处理完成后跟踪样本相关的数据流。

下方的工作流示意图展示了工作流的各个步骤以及必须管理的数据。数据以表格形式展示,每个步骤中的每个样本对应一条记录。

README 配图

示例

工作流从样本管到达开始。样本管有若干支。每支管都有一个“样本名称”和对应的“质量”。样本管进入实验室时的相关数据会录入数据跟踪系统。此步骤称为“登记”。

样本在系统中登记后,就可以由第一台仪器处理。样本被装入仪器,与样本相关的数据也会发送到该仪器。随后,仪器便可开始处理。第一台仪器称为“制备”仪器。它的输出包括两部分:

  1. 制备完成的样本,装在一组输出管中
  2. 每个样本及其制备方式的相关数据

在我们的模拟制备步骤中,每个样本都会经过处理,在管中的样本上附加一个遗传标签(“actg”、“acac”等),并在输出数据中记录附加到每个样本上的标签。(无法提前知道哪个标签会附加到哪个样本上。)“status”字段还会记录此步骤是否成功执行,其值可以是“passed”或“failed”。

制备完成的样本随后便可由“分析仪”处理。第一台仪器的输出样本会装入第二台仪器,并将每个样本的已知数据发送给分析仪。

分析仪会消耗实体样本,并输出每个已分析样本的相关数据。其中包括一个“filename”和一个用于衡量分析步骤某项指标的“metric”。

工作流执行的最终输出应是一份报告,以易于理解的格式汇总各个步骤的信息。

模拟仪器

真实的实验室仪器确实会通过 HL7 或 REST 等协议,对一组样本进行数据输入和输出。真实仪器上的此类接口有可能作为使用 MCP(Model Context Protocol)的“工具”与 AI Agent 集成。

在此模拟中,这些工具不会调用真实仪器的 API,而是生成模拟结果。制备仪器的“tag”和“status”值以及分析仪的“metric”值均为随机选择。

在现实世界中,仪器处理可能需要数分钟或数小时。在我们的模拟仪器中,每秒处理一个样本,以此表示时间流逝。

AI Agent 与工具集成面临的挑战

在此示例中,我们要求 AI Agent 规划如何跨一系列步骤管理数据。AI Agent 可能会使用数据库保存中间结果,也可能会发现使用 SQL 数据库有助于对各步骤的数据执行最终的“联接”。Agent 也可能设计其他数据管理方式,或者只是在对话中处理数据。

工作流规范要求分析步骤只处理“通过”的样本。

我们还定义了代表仪器的工具,并为其接口提供了丰富的类型定义。每个仪器都接收结构数组并生成结构数组。下面展示了 MCP 定义“preparation_tool”的一个示例。

JSON Schema 定义的一些显著特点包括:

  1. 在 JSON 的“$defs”段中使用命名结构“InputSample”
  2. 输入参数“sample_list”是一个数组
  3. 该数组为同质数组,所有“items”的类型均为“#/$defs/InputSample”

到目前为止,在我们的测试中,许多大模型都能够处理符合这些架构要求的数据。

{
 'tools': [{'function': {'description': 'Prepare the samples for analysis.  '
                                        "Mark samples as 'passed' or "
                                        "'failed'. ",
                         'name': 'preparation_tool',
                         'parameters': {
                             '$defs': {
                                 'InputSample': {
                                     'properties': {
                                         'mass': {
                                             'description': 'sample mass in ng',
                                             'title': 'Mass',
                                             'type': 'integer'
                                         },
                                         'sample_name': {
                                             'description': 'sample name identifier',
                                             'title': 'Sample Name',
                                             'type': 'string'
                                         }
                                     },
                                     'required': ['sample_name', 'mass'],
                                     'title': 'InputSample',
                                     'type': 'object'
                                 }
                             },
                             'properties': {
                                 'sample_list': {
                                     'items': {
                                         '$ref': '#/$defs/InputSample'
                                     },
                                     'type': 'array'
                                 }
                             },
                             'required': ['sample_list'],
                             'type': 'object'
                         }
                     },
            'type': 'function'
        }]}

要求

除了本仓库的 LIMS Server 之外,还应运行 Python 服务“mcp-server-sqlite”,以便 AI Agent 使用数据库。

源代码位于此处。

提示词

第一个提示词描述了工作流的步骤,以及如何通过执行工具来完成每个步骤。由于执行工具需要某些数据,Agent 需要确定如何获取或生成这些数据。给 Agent 的最终目标是生成一份工作流报告,总结所有步骤中的数据。

下面展示了第一个提示词的开头。

The assistant's goal is to manage the data associated with a set of samples.  There are four steps of concern.

- accessioning - entering the initial samples in the database
- preparation - calling a tool to process the input samples to attach a tag and monitor a "passed" or "failed" status
- analysis - calling a tool to analyze the outputs of the preparation step whose status is "passed"
- report generation - displaying the sample data across the first 3 steps
...
面向较小型大模型的简化工具测试

第一个提示词的复杂度超出了较小型大模型的处理能力。第二个提示词旨在仅测试大模型格式化和处理工具调用,以及将表格数据转换为工具所需的结构数组的能力。

(事实证明,下面展示的提示词有助于检查丰富类型工具接口的正确性。)

Process the following table of data with the preparation_tool.
<table>
<tr>
  <th>Sample Name</th> <th>Input Mass</th>
<tr>
<tr>
  <td> NA12878 </td> <td> 45 </td>
</tr
<tr>
  <td> NCC1701 </td> <td> 77 </td>
</tr
<tr>
  <td> NACL </td> <td> 12 </td>
</tr
<tr>
  <td> NA12879 </td> <td> 32 </td>
</tr
</table>

构建和运行

请确保已安装 uv。

$ git clone https://github.com/sheffler/mcp-server-lims
$ cd mcp-server-lims
$ uv init
$ uv venv
$ . .venv/bin/activate
$ uv sync

此时,MCP 服务 SDK 的依赖项应已安装到 venv 中。

Claude Desktop 配置

编辑以下文件以配置 Claude Desktop:

  • ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "mcp-lims-server" : {
      "command": "/Users/sheffler/git/mcp-server-lims/.venv/bin/python",
      "args": [
        "/Users/sheffler/git/mcp-server-lims/lims_server.py"
      ]
    },
    "sqlite": {
      "command": "/Users/sheffler/.local/bin/uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/Users/sheffler/test.db"
      ]
    },
  }
}

Oterm 配置

~/Library/Application Support/oterm/config.json

{"theme": "textual-dark",
 "splash-screen": false,
 "mcpServers": {

    "mcp-lims-server" : {
      "command": "/Users/sheffler/git/mcp-server-lims/.venv/bin/python",
      "args": [
        "/Users/sheffler/git/mcp-server-lims/lims_server.py"
      ]
    },

    "sqlite": {
      "command": "/Users/sheffler/.local/bin/uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/Users/sheffler/test.db"
      ]
    },

 }
}

Claude 生成的工作流报告

下面展示了一份由 Claude 生成的示例报告(使用 Claude Desktop)。

README 配图

对话记录

此处附有与 Claude 的对话记录,供参考。

评论

支持 Markdown

第一次接触 MCP?

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

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