Apple Health MCP Server 实现了一个模型上下文协议(MCP)服务器,旨在实现基于大语言模型(LLM)的智能体与 Apple Health 数据之间的无缝交互。它提供了一个标准化接口,用于查询、分析和管理从 XML 导出文件导入并在 Elasticsearch 中索引的 Apple Health 记录。通过一套全面的工具,用户可以使用自然语言提示和高级过滤功能,探索、搜索和分析个人健康数据,而无需直接了解底层数据格式或 Elasticsearch 查询。
git clone https://github.com/the-momentum/apple-health-mcp-server
cd apple-health-mcp-server
cp config/.env.example config/.env
编辑 config/.env
文件,填入你的凭证和配置。详见 环境变量。
make es
启动 Elasticsearch 并导入你的 XML 数据。uv run python scripts/xml2es.py --delete-all
你可以通过以下两种方式在 LLM 客户端中运行 MCP 服务器:
make build
替换为你的本地仓库路径,将
替换为你从 Apple Health 导出的原始数据文件名(不包含 .xml
扩展名)):{
"mcpServers": {
"docker-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--init",
"--mount",
"type=bind,source=/{xml-file-name}.xml,target=/root_project/raw.xml" ,
"--mount", // 可选 - 用于重新加载的卷
"type=bind,source=/app,target=/root_project/app" , // 可选
"--mount",
"type=bind,source=/config/.env,target=/root_project/config/.env" ,
"-e",
"ES_HOST=host.docker.internal",
"mcp-server:latest"
]
}
}
}
uv
二进制文件的路径:(Get-Command uv).Path
which uv
和
):{
"mcpServers": {
"uv-mcp-server": {
"command": "uv",
"args": [
"run",
"--frozen",
"--directory",
"" ,
"start"
],
"env": {
"PATH": ""
}
}
}
}
应该是包含 uv
二进制文件的文件夹(不要在末尾包含 uv
本身)。
完成上述步骤后,重启你的 MCP 客户端以应用更改。在某些情况下,你可能需要使用任务管理器或系统的进程管理器终止所有相关进程,以确保:
.env
文件提供广泛的配置选项。按照 快速开始 部分的步骤进行安装和配置。
以下是一个使用自然语言查询 Apple Health 数据的示例:
# 假设这是一个 MCP 客户端与服务器交互的代码示例
# 保持原始代码和注释不变
# 这里没有具体代码示例,实际使用中需要根据 MCP 客户端的 API 进行调用
# 高级场景说明:使用高级过滤和分析功能查询特定时间段内的健康数据
# 保持原始代码和注释不变
# 这里没有具体代码示例,实际使用中需要根据 MCP 客户端的 API 进行调用
Apple Health MCP Server 实现了一个模型上下文协议(MCP)服务器,旨在实现基于大语言模型(LLM)的智能体与 Apple Health 数据之间的无缝交互。它提供了一个标准化接口,用于查询、分析和管理 Apple Health 记录—从 XML 导出文件导入并在 Elasticsearch 中索引—通过一套全面的工具。这些工具可从与 MCP 兼容的客户端(如 Claude Desktop)访问,使用户能够使用自然语言提示和高级过滤功能探索、搜索和分析个人健康数据,而无需直接了解底层数据格式或 Elasticsearch 查询。
Apple Health MCP 服务器采用模块化、可扩展的架构,专为强大的健康数据管理和 LLM 集成而设计:
这个演示展示了 Claude 如何使用 apple-health-mcp-server
回答关于你的数据的问题。演示中的示例提示:
⚠️ 重要提示
以下所有变量除非标记为必需,否则均为可选。如果未设置,服务器将使用显示的默认值。只有
RAW_XML_PATH
是必需的,并且必须指向你的 Apple Health XML 文件。
属性 | 详情 |
---|---|
变量名 | 描述 |
RAW_XML_PATH |
Apple Health XML 文件的路径 |
ES_HOST |
Elasticsearch 主机 |
ES_PORT |
Elasticsearch 端口 |
ES_USER |
Elasticsearch 用户名 |
ES_PASSWORD |
Elasticsearch 密码 |
ES_INDEX |
Elasticsearch 索引名称 |
XML_SAMPLE_SIZE |
要采样的 XML 记录数量 |
变量 | 描述 | 示例值 | 是否必需 |
---|---|---|---|
RAW_XML_PATH |
Apple Health XML 文件的路径 | raw.xml |
✅ |
ES_HOST |
Elasticsearch 主机 | localhost |
❌ |
ES_PORT |
Elasticsearch 端口 | 9200 |
❌ |
ES_USER |
Elasticsearch 用户名 | elastic |
❌ |
ES_PASSWORD |
Elasticsearch 密码 | elastic |
❌ |
ES_INDEX |
Elasticsearch 索引名称 | apple_health_data |
❌ |
XML_SAMPLE_SIZE |
要采样的 XML 记录数量 | 1000 |
❌ |
Apple Health MCP 服务器提供了一套工具,用于在原始 XML 级别和 Elasticsearch 中探索、搜索和分析你的 Apple Health 数据:
xml_reader
)工具 | 描述 |
---|---|
get_xml_structure |
分析你的 Apple Health XML 导出文件的结构和元数据(文件大小、标签、类型)。 |
search_xml_content |
在 XML 文件中搜索特定内容(按属性值、设备、类型等)。 |
get_xml_by_type |
从 XML 文件中提取特定健康记录类型的所有记录。 |
es_reader
)工具 | 描述 |
---|---|
get_health_summary_es |
获取 Elasticsearch 中所有 Apple Health 数据的摘要(总数、类型细分等)。 |
search_health_records_es |
在 Elasticsearch 中灵活搜索健康记录,支持高级过滤和查询选项。 |
get_statistics_by_type_es |
获取特定健康记录类型的综合统计信息(计数、最小值、最大值、平均值、总和)。 |
get_trend_data_es |
分析特定健康记录类型随时间的趋势(每日、每周、每月、每年聚合)。 |
所有工具都可通过与 MCP 兼容的客户端访问,并且可以使用自然语言或编程查询来探索和分析你的 Apple Health 数据。
我们正在不断增强 Apple Health MCP 服务器的功能。以下是未来的计划:
如果你有建议,欢迎与我们联系或直接贡献代码。
Apple Health MCP 服务器采用模块化、可扩展的架构,旨在实现高效的健康数据管理和与 LLM 的集成。主要组件包括:
为了实现高性能的数据处理和查询,服务器采用了以下技术:
服务器在数据处理和存储过程中注重数据安全,采取了以下措施:
本项目采用 MIT 许可证进行分发。详情请见 MIT License。
感谢所有为该项目做出贡献的人!查看 贡献者列表。
由 Momentum 用心打造 • 用人工智能改变医疗数据管理