mcpField
M
Mirobody

Mirobody

本地服务
mirobody.ai健康医疗1.4k今天更新

关于 Mirobody

Mirobody 是一套开源健康数据系统,可在本地汇集记录并标准化检验项目名称和单位。它面向需要可追溯健康记录的个人与 Agent,提供离线解析器和通过 MCP 查询数据的工具。

主要功能

  1. 01将检验名称解析为 LOINC 编码
  2. 02使用 UCUM 标准化单位
  3. 03导入报告、设备和基因文件
  4. 04将读数关联到来源文档
  5. 05通过 Agent 工具查询健康记录
  6. 06离线运行解析器

适用场景

  1. 01统一不同检验报告中的项目名称
  2. 02比较不同来源和时间的健康读数
  3. 03将症状记录转换为编码数据
  4. 04向 MCP 客户端开放健康记录

MCP 相关

Mirobody 提供七个按登录用户限定范围的 MCP 工具:四个用于读取健康记录,三个用于解析名称和单位。服务端向 MCP 客户端开放记录数据和标准化操作。

配置

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

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

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

安装包
pypimirobody1.5.9

工具

6

收录的工具列表 · 更新于 1 天前

参数类型必填说明
namestring否The test name exactly as printed, any language.
unitstring否The unit as printed: g/dL, mmol/L, 次/分. Omit when none.
valuestring|number否The result as printed: 13.5, <5, 阴性, Positive.
readingsarray否

详细介绍

Mirobody

Mirobody

用数据映照你的身体。

一套标准,汇集所有来源,呈现完整的你——建立一份长期记录,帮助你了解健康状况的走向。
这个开源版本会在你的设备上,从化验报告、可穿戴设备和基因文件中建立这份记录,追溯每个数值的来源,并通过 MCP 向你的 AI Agent 开放数据。
只需一条命令即可标准化健康数据;用你自己的模型密钥在 Codespaces 中体验完整应用;也可以将应用、数据和模型全部在本地运行。

English · 中文 · 日本語

PyPI License: Apache-2.0 GitHub stars

▶ 在线演示 · 一条命令快速体验 · 在 Codespaces 中打开 · 100% 本地运行

询问胆固醇的变化情况:Agent 展示每一步操作,将三份名称各异的报告绘制为一条趋势曲线,并可通过数值旁的编号来源打开读数及其文件

三份报告,同一项检测有三种名称。绘成一条趋势曲线,每个数值都能追溯到原始文件。

选择开始方式

你的目标从这里开始所需条件
标准化名称和单位一条命令uv;无需模型或 API 密钥
在浏览器中体验完整应用GitHub CodespacesGitHub 账户和你自己的模型 API 密钥
在自己的设备上运行应用、模型并保存记录使用 Docker 实现 100% 本地运行安装 Docker 和 Compose;16 GB 内存;无需 API 密钥
在自己的设备上运行应用并保存记录,无需 Docker不使用 DockerDebian 或 Ubuntu;PostgreSQL 16;Python 3.12;你自己的模型 API 密钥
无需运行任何程序即可在自己的记录上使用在 Theta Web 或 Theta 移动应用中试用 Mirobody账户

一条命令快速体验引擎

安装好 uv 后,将以下命令粘贴到终端:

uvx --python 3.12 mirobody resolve "LDL cholesterol" 血红蛋白 ヘモグロビン "Total Kolesterol" 血脂

无需克隆代码仓库、安装 Docker、模型或 API 密钥。uv 会为你准备 Python 和软件包;首次运行时需要联网下载。之后,解析器会使用内置词汇表离线工作。

血红蛋白 和 ヘモグロビン 都会解析为 718-7。血脂 则无法解析:它表示一个类别,而不是某一项检测。同一引擎也会在完整应用中标准化名称和单位。

mirobody resolve:中文和日文的血红蛋白名称会解析为同一个 LOINC 代码,而较宽泛的类别则无法解析

→ 通过 Python 或 MCP 使用引擎

在 Codespaces 中试用完整应用

使用自己的模型 API 密钥,在浏览器中运行 Web 应用。GitHub 会准备好运行环境;你无需在电脑上安装 Docker 或 Python。

在 GitHub Codespaces 中打开

  1. 创建 codespace,然后等待终端中的自动设置完成。它会启动应用、Postgres、worker 和合成演示数据。
  2. 打开终端中显示的设置链接,输入自己的模型 API 密钥:OpenRouter、OpenAI、Gemini、Anthropic、DeepSeek、DashScope,或任何兼容 OpenAI 的网关。只有在真实请求成功后,密钥才会保存。转发的应用端口默认设为私有。
  3. 在 Email code 选项卡中,以 [email protected] 登录,验证码为 111111。询问 “我的胆固醇有什么变化?” 演示数据包含你和 [email protected] 的记录,共有 2,019 条读数,其中妈妈的记录以只读方式与你共享。
  4. 在 Data 页面从 demo/upload/ 上传合成样本,查看新报告如何加入记录;或者切换到妈妈的记录并再次提问。

应用及其记录运行在 GitHub 云端;模型服务会接收并处理文档和问题。请使用随附的合成数据进行体验。Codespaces 有使用限制和计费规则;模型使用费用由你的模型提供商收取。完成后请停止 codespace。若想在自己的电脑上完全掌控一切,请使用下方的本地方式。

完全在本地运行

应用、记录和模型都在自己的电脑上运行。无需模型 API 密钥。 Docker Compose 会启动整个服务栈和 llama.cpp,其中包含一个小型问答模型和一个文档读取器:

git clone --depth 1 https://github.com/thetahealth/mirobody.git && cd mirobody
COMPOSE_PROFILES=local-cpu ./deploy.sh

请预留 16 GB 内存,其中至少 8 GB 分配给 Docker。无需 GPU;在 Windows 上,请在 WSL 2 终端中运行命令。首次启动需要联网下载容器镜像和模型权重。如果你的网络无法访问镜像仓库,deploy.sh 会提示并通过镜像源重试;.env 中的 DOCKER_MIRROR 用于指定你自己的镜像源。完成这些下载后,文档读取、标准化和问答都会在本地运行。使用 CPU 回答可能需要几分钟;Mac、NVIDIA 和 Windows 选项介绍了如何使用 GPU。

打开脚本显示的应用链接。本地模型已选好;使用上方的同一演示账号登录,然后提问或上传样本。如何选择模型对比了本地选项。

首次运行页面:在 OpenRouter 密钥旁编辑模型名称,然后显示“100% 在本机运行”:页面找到 llama.cpp 服务并列出其提供的模型,两个模型均已就绪

更想使用 Docker 搭配云端模型? 不指定本地模型配置文件运行 ./deploy.sh,然后将自己的模型密钥粘贴到显示的设置链接中。应用和记录保留在你的主机上;模型服务会处理你的文档和问题。

聊天计算对所有模型都使用本地 Python,并直接处理原始查询数据。可选计算器需要本地 Docker 镜像和守护进程连接;设置与数据流介绍了原生应用和容器化应用。查询视图无需该执行器即可提供内置统计信息。

→ 自托管指南 · 使用教程 · 在服务器上部署

无需 Docker 即可运行

不需要容器,也不会从注册表拉取任何内容。 在 Debian 或 Ubuntu 上,PostgreSQL 16 和 pgvector 来自发行版自带的软件包,应用直接从检出目录运行。Codespaces 路径执行的也是同样的安装:

git clone --depth 1 https://github.com/thetahealth/mirobody.git && cd mirobody
scripts/install_native.sh   # PostgreSQL, pgvector, the Python package, a .env
scripts/start_native.sh     # the worker and the app on port 18060

打开它打印出的链接,并使用 [email protected] 登录,验证码为 111111:演示记录已预先填充。通过打印出的设置链接添加模型密钥,即可启用文档提取和问答。install_native.sh 会使用 sudo 安装系统软件包,并为 postgres 账户写入一条 sudoers 规则,脚本运行时会说明这一点。

本地模型属于 Docker 路径,因此此路径通过模型服务来回答。其他方面与数据留在你设备上的部分中它上方的表格行一致:记录保存在你刚安装的 PostgreSQL 中,姓名与验证码不会离开设备。

你可以做什么

  • 比较不同实验室的报告。 PDF、手机照片和电子表格共 23 种文件类型,都会汇集到同一份记录中。每项读数都链接到其来源页面。
  • 导入日常数据。 导入 Apple Health 导出文件,或连接 Garmin、Oura 和 Whoop。
  • 照顾家人。 邀请共享自己记录的人,或为从不登录的父母保留一份记录。
  • 撰写健康日志。 headache since last night, BP 150/95, no fever 会转换为一项编码后的主诉和两项编码后的读数;“no fever”不会被记录为发烧。
  • 探索遗传数据。 上传 23andMe、AncestryDNA 或 WeGene 导出文件,或 VCF 文件,然后按 rsID、基因或区域提问。药物相关问题采用 CPIC 覆盖范围,不会更改用药。
  • 使用自己的 Agent。 通过 MCP 连接 Claude Code、Codex 或 Cursor,或在 Python 中嵌入离线引擎。

收集 · 标准化 · Agent

收集报告、设备数据和遗传数据;标准化名称和单位以便比较不同来源;跨记录提问,并追溯每个答案的来源

阶段功能位置
① 收集实验室报告、设备数据、照片、遗传文件和日志条目都可从各种来源导入;每项读数都会保留其来源文件。collect/
② 标准化A1c、HbA1c 和 Glycated Hemoglobin 会解析为同一代码,单位会统一为一种标准,且可离线完成:来自分散来源的读数会整理为同一张表中的规范行。无法归类的名称会保持未解析状态。engine/ · standardize/
③ Agent答案来自查询该表的工具,而不是模型的记忆:趋势、不同实验室和设备之间的比较,以及图表。每个数值都可追溯到其文件,因此你可以自行核查,而不必盲目信任。agent/

模型负责读取文档和推理;代码和单位来自软件包中捆绑的词汇表,而不是模型。读数如何在处理流水线中流转。

关爱家人

邀请一位家人;由他们决定你是否可以查看或编辑他们自己的记录;询问他们分享的记录。未登录的家人可以由你管理,直到他们接管记录并选择授予你的访问权限

加入关怀圈本身不会分享任何内容。每位成员都可以决定其他人是否能查看或编辑自己的记录。对于从未登录的家长,你可以一直代为管理,直到他们认领记录并决定保留哪些权限。在操作指南中查看。

哪些内容保留在你的设备上

应用运行的位置与模型运行的位置是两项独立的选择。Mirobody 不会向任何地方报告使用情况。

Codespaces + 模型密钥本地 Docker + 模型密钥100% 在本机运行
应用和存储的记录位于 GitHub 云端的 Codespace 中位于你的设备上位于你的设备上
发送给模型进行处理的文档和问题根据模型供应商的条款发送给该供应商根据模型供应商的条款发送给该供应商保留在你的设备上
将名称映射为代码、将单位映射为 UCUM(② Standardize)使用捆绑的词汇表,在 Codespace 中处理在你的设备上处理,不联网在你的设备上处理,不联网
模型权重由模型供应商管理由模型供应商管理从 Hugging Face 下载一次

命令行解析器在初次下载后,也可以在你的设备上运行,无需模型或网络连接。

只有在你关联设备后,设备供应商才能看到数据。在这些数据传输到你无法控制的网络之前,请阅读 SECURITY.md:其中列出了服务器可以调用的所有地址。

基于 Mirobody 构建

你的需求从这里开始
在 Claude Code、Codex、Cursor 或 Gemini CLI 中访问你的记录Settings → MCP link,然后为每个客户端添加一行
在自己的代码中解析名称和单位pip install mirobody:离线运行,无需密钥,唯一依赖项为 numpy(库指南)
为你的编码 Agent 传授工作流npx skills add thetahealth/mirobody --skill standardize-health-data(skills)
添加新的设备供应商或工具将文件放入 mirobody/collect/providers/ 或 mirobody/agent/tools/(CONTRIBUTING)
无需部署即可试用应用Mirobody Web 演示,使用相同的合成演示文件

通过 MCP,这套技术栈提供七种工具,每种工具都仅适用于已登录用户:四种用于读取你的记录(读数、药物、基因型、药物基因组学),三种用于解析名称和单位。

安装 pip install mirobody 后,可在 Python 中使用同一引擎:

from mirobody.engine import resolve, resolve_reading

resolve("血红蛋白").loinc                                     # '718-7'   any language, one code
resolve_reading("total cholesterol", "5.0", "mmol/L").loinc  # '14647-2' the unit picks the code...
resolve_reading("total cholesterol", "193", "mg/dL").loinc   # '2093-3'  ...mass, not moles
resolve("中性粒细胞百分比").loinc                               # '26511-6' Neutrophils/Leukocytes
resolve("血脂").resolved                                     # False    a category, not one test
可核验的数据
声明核验方式
普通检查会以英语、中文、日语、俄语、爱沙尼亚语和土耳其语输出测试结果,得分为 345/345test_engine_coverage.py 会输出得分
具备量纲分析功能的 330 个 UCUM 单位,以及用于设备和实验室指标的 543 个目录成员标准化 · 设备对照表
23andMe、AncestryDNA、WeGene、MyHeritage 和 FamilyTreeDNA 导出数据,以及基于 GRCh37 和 GRCh38 的 VCF,解码后均得到相同的 12 个基因中的 13 个调用;该结果在软件包附带的公开 1000 Genomes 样本上进行了测试test_packaged_examples.py · 公开基因型示例
软件包明确标注了其词汇版本:mirobody.BUNDLE_VERSION 为 loinc-2.83+2026.09.17-aacb2c715b56python -c "import mirobody; print(mirobody.BUNDLE_VERSION)"
公开的健康 Agent 基准测试:ESL-Bench、MedHall-Bench、MedHarm-Benchmirobody-eval · benchmarks/

Mirobody 是 Theta 背后的健康数据引擎。Theta 是一款已上线的 Web 和移动端消费级健康应用,目前拥有以下用户:
Theta 实时注册用户数 Theta 实时日活跃用户数

参与贡献

最有价值的贡献,是指出解析器处理错误的术语。运行 mirobody resolve "<term>";如果答案有误或为空,请提交报告,或提交附带测试用例的修复。这正是词汇扩展到新语言的方式:俄语检验项目和爱沙尼亚语维生素术语见 #88,土耳其语实验室报告拼写见 #140;每个术语对应 resolver_overrides.tsv 中的一行,以及一个测试用例。CONTRIBUTING.md 介绍了环境设置和检查步骤。

基于 HL7 FHIR、LOINC(由 Regenstrief Institute 提供)、UCUM、ICPC-3(WONCA)、CPIC、llama.cpp 和 deepagents,谨此致谢。术语许可信息见 LICENSE-3RD-PARTY。

如果 Mirobody 帮你读懂了一份报告,点个星标就能帮助更多人找到它。

星标历史图表

文档 · 路线图 · 更新日志 · 安全 · AGENTS.md

Apache 2.0 · © 2026 Theta Health

评论

支持 Markdown

第一次接触 MCP?

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

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