mcpField
A
Apple Health

Apple Health

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

关于 Apple Health

Apple Health MCP 是一个本地运行的 MCP 服务,可使用 SQL 和 DuckDB 查询 Apple Health 的 CSV 导出数据。适合希望分析睡眠、运动和心脏数据且重视数据留在本地的用户。

主要功能

  1. 01读取 Simple Health Export CSV 导出文件
  2. 02通过 DuckDB 执行 SELECT 类分析查询
  3. 03提供表结构与样例数据探索
  4. 04生成每周、每月或自定义健康摘要
  5. 05限制数据库文件访问范围并禁用网络

适用场景

  1. 01查询睡眠、运动和心率等历史健康数据
  2. 02生成每周或每月的健康数据摘要
  3. 03通过 SQL 对健康记录进行自定义分析

MCP 相关

该项目是 MCP 服务,通过 stdio 传输向 MCP 客户端提供 health_schema、health_query 和 health_report 三个工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"neiltron-apple-health": {
"command": "npx",
"args": [
"-y",
"@neiltron/apple-health-mcp"
],
"env": {
"HEALTH_DATA_DIR": "<HEALTH_DATA_DIR>",
"MAX_MEMORY_MB": "<MAX_MEMORY_MB>",
"CACHE_SIZE": "<CACHE_SIZE>"
}
}
}
}
启动命令npx -y @neiltron/apple-health-mcp
需要配置的环境变量
HEALTH_DATA_DIRPath to the Apple Health CSV export directory
MAX_MEMORY_MBMaximum memory usage in megabytes
CACHE_SIZEMaximum number of cached query results

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

安装包
npm@neiltron/apple-health-mcp1.4.5

工具

还没有获取到工具列表

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

详细介绍

Apple Health MCP 服务

npm version License: MIT

通过 MCP 客户端使用 SQL 和 DuckDB 查询 Apple Health 数据。该服务在本地运行,按需读取 CSV 导出文件,并提供用于发现架构、分析查询和生成健康摘要的工具。

要求

目前不支持 Apple Health 原生的 export.xml 格式。

配置 MCP 客户端

对于 Claude Desktop,将以下内容添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "apple-health": {
      "command": "npx",
      "args": ["-y", "@neiltron/apple-health-mcp"],
      "env": {
        "HEALTH_DATA_DIR": "/path/to/your/unzipped/health-export"
      }
    }
  }
}

更改配置后,重启客户端。其他 MCP 客户端也可以使用相同的命令、参数、环境和 stdio 传输方式。

环境变量
变量必填默认值用途
HEALTH_DATA_DIR是—包含导出 CSV 文件的目录
MAX_MEMORY_MB否2048DuckDB 内存限制,单位为 MB
CACHE_SIZE否100缓存查询结果的最大数量

导出健康数据

  1. 在 iPhone 上安装并打开 Simple Health Export CSV。
  2. 选择 All,并选择要导出的时间范围。
  3. 将压缩包传输到运行 MCP 客户端的计算机。
  4. 解压文件,并将 HEALTH_DATA_DIR 设置为解压后的目录。

该服务会就地读取文件。它不会上传导出文件,也不会发起网络请求,不过返回给 MCP 客户端的查询结果可能会发送给该客户端配置的模型提供商。

工具

工具用途
health_schema查看表名、列、单位和示例行
health_query运行一条 DuckDB SELECT 系列分析语句,并以 JSON、CSV 或摘要形式输出
health_report生成每周、每月或自定义健康摘要

请从 health_schema 开始;表名取决于导出文件中的内容。 有关数据模型和可用示例,请参阅查询 Apple Health 数据。

health_query 接受一条 DuckDB 分析语句。有关支持的语句和受限操作,请参阅查询防护措施。

查询防护措施

该服务将 DuckDB 的文件访问限制在 HEALTH_DATA_DIR 范围内。它还会禁用网络访问和临时磁盘存储,并锁定数据库设置。数据目录保持可读写状态,以便导入器读取 CSV 文件。

这些控制措施可减少生成的 SQL 带来意外副作用的风险,但无法隔离进程。请通过本地 stdio MCP 客户端运行该服务。不要将其暴露给不受信任的网络客户端。如果该服务必须接受不受信任的 SQL,请使用进程或操作系统隔离。

历史记录和记忆

首次需要查询某张表时,会加载该表的完整 CSV 历史记录。 没有日期范围限制,因此查询可以追溯到导出数据的最早时间。

由于每个工具都可以访问全部已配置的历史数据,因此只应从你信任其处理这些数据的 MCP 客户端启动此服务。

已加载的表会保存在内存中,DuckDB 使用上文所述的 MAX_MEMORY_MB 限制。大约 1 GiB 足以容纳两年的多表导出数据,因此默认的 2048MB 留有余量;导出数据量更大时,请提高 MAX_MEMORY_MB。服务绝不会将健康记录溢写到磁盘上的临时目录,因此,如果导出数据超出内存限制,会直接报错。

其他当前限制:

  • 仅支持 Simple Health Export CSV 布局。
  • DuckDB 数据库驻留在内存中,并会在每个服务进程启动时重建,因此每次启动都会重新加载 CSV 文件。持久化增量导入是未来计划,目前尚未实现。
  • 设备重叠可能导致测量记录看起来重复;查询应在适当情况下考虑 sourceName。
  • 健康报告仅总结记录的数据,不构成医疗建议。

开发

git clone https://github.com/neiltron/apple-health-mcp.git
cd apple-health-mcp
bun install

npm test
npm run typecheck
npm run build

有关代码布局、数据生命周期和实现约束,请参阅架构。 有关发布和恢复步骤,请参阅发布流程。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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