关于 MCP SERVER LIMS
MCP SERVER LIMS 是用于演示实验室样本数据管理工作流的 MCP 服务,面向需要协调多步骤实验流程的 AI Agent。它结合模拟仪器工具与数据库,让 Agent 登记样本、筛选处理结果并生成汇总报告。
主要功能
- 01登记并跟踪样本数据
- 02模拟样本制备仪器
- 03模拟分析仪器并生成结果
- 04使用结构化数组输入输出
- 05跨工作流步骤汇总样本信息
适用场景
- 01演练样本登记到分析的实验流程
- 02仅将通过制备的样本送入分析
- 03测试 Agent 处理结构化工具数据
- 04生成涵盖多个步骤的工作流报告
MCP 相关
该 MCP 服务向客户端提供数据库及模拟仪器工具,用于实验室样本工作流。示例还需运行 mcp-server-sqlite,以保存中间数据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP 服务 LIMS
此代码库包含视频中展示的 MCP Server 代码,该视频来自以下 LinkedIn 文章。示例展示了 Anthropic 的 Claude 调用 MCP 数据库和模拟仪器工具,执行实验室工作流中的各个步骤。这个示例颇具挑战性,因为它要求在多个步骤中管理结构丰富的数据集合。
https://www.linkedin.com/pulse/ai-agent-lims-iot-mcp-tom-sheffler-ylmpc/
简介
LIMS(实验室信息管理系统)示例的目标是让 AI Agent 管理一组样本在实验室工作流中流转时相关的数据。
这里的合成工作流是实验室中可能遇到的某种流程的简化版本,但省略了许多细节。在此工作流中,实体样本会在处理或分析它们的仪器之间传递。此外,还有与样本进入仪器及处理完成后跟踪样本相关的数据流。
下方的工作流示意图展示了工作流的各个步骤以及必须管理的数据。数据以表格形式展示,每个步骤中的每个样本对应一条记录。

示例
工作流从样本管到达开始。样本管有若干支。每支管都有一个“样本名称”和对应的“质量”。样本管进入实验室时的相关数据会录入数据跟踪系统。此步骤称为“登记”。
样本在系统中登记后,就可以由第一台仪器处理。样本被装入仪器,与样本相关的数据也会发送到该仪器。随后,仪器便可开始处理。第一台仪器称为“制备”仪器。它的输出包括两部分:
- 制备完成的样本,装在一组输出管中
- 每个样本及其制备方式的相关数据
在我们的模拟制备步骤中,每个样本都会经过处理,在管中的样本上附加一个遗传标签(“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 定义的一些显著特点包括:
- 在 JSON 的“$defs”段中使用命名结构“InputSample”
- 输入参数“sample_list”是一个数组
- 该数组为同质数组,所有“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)。

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