mcpField
W
wellness-cgm-mcp

wellness-cgm-mcp

本地服务
wellness.delx.ai健康医疗13 周前更新

关于 wellness-cgm-mcp

wellness-cgm-mcp 是一款本地优先服务,可向 AI Agent 提供连续血糖监测数据。它支持 Dexcom 和通过 LibreLink Up 接入的 FreeStyle Libre;配置提供方前也可使用模拟数据。

主要功能

  1. 01读取 Dexcom 和 Libre 血糖数据
  2. 02汇总血糖及目标范围内时间指标
  3. 03分析餐后反应并检测低血糖
  4. 04报告请求时间范围的实际覆盖情况
  5. 05无需凭据即可使用模拟数据

适用场景

  1. 01查看近期血糖读数和趋势
  2. 02对照进餐时间与血糖反应
  3. 03用模拟读数搭建 Agent 工作流原型
  4. 04解读指标前核实实际数据覆盖范围

MCP 相关

该 MCP 服务通过 stdio 或可选的 HTTP 提供 19 种 CGM 工具,包括血糖读数、汇总和餐后反应分析。凭据保存在环境变量中,出站请求仅发送至所选 CGM 提供方。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"davidmosiah-wellness-cgm": {
"command": "npx",
"args": [
"-y",
"wellness-cgm-mcp"
]
}
}
}
启动命令npx -y wellness-cgm-mcp

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

安装包
npmwellness-cgm-mcp0.4.0

工具

19

收录的工具列表 · 更新于 2 周前

参数类型必填说明
clientenum否claude | codex | cursor | windsurf | hermes | openclaw | generic

详细介绍

Wellness CGM MCP

面向 AI Agent 的本地优先连续血糖监测仪 MCP。
Dexcom Developer API。Levels 平替方案,Agent 优先,$0。

npm 版本 npm 下载量 MIT 许可证 网站

GitHub 星标 专为 MCP 打造 Hermes OpenClaw

🩸 为什么要做这个:Levels 每月收费 $199,提供的功能恰好就是这些——读取你的 CGM 数据、与餐食关联分析、标记血糖飙升。wellness-cgm-mcp 用免费的本地优先 MCP 实现了同样的功能。Stelo OTC + Dexcom Developer API + 你的 Agent + wellness-nourish = 完整的代谢闭环。

⚡ 一键安装 — 选择你的运行环境:


HTTP(v2 无状态)

默认使用 stdio。可选的 Streamable HTTP — 无会话 ID,返回 JSON 响应,仅限环回地址:

npx -y wellness-cgm-mcp --http
# GET  http://127.0.0.1:3000/health
# POST http://127.0.0.1:3000/mcp   (sessionless)

环境变量:WELLNESS_CGM_HOST、WELLNESS_CGM_PORT、WELLNESS_CGM_TRANSPORT=http。

概述

本地 MCP 服务,向任何兼容 MCP 的 Agent 提供 CGM 数据(未配置时提供合成模拟数据)。支持两个真实数据后端:Dexcom(Developer API,沙盒和生产环境)以及通过 LibreLink Up 接入的 FreeStyle Libre(非处方传感器 — Libre 2 / Libre 3)。通过 CGM_PROVIDER 选择后端;如果只设置了 Libre 凭据,则会自动检测并使用 Libre。两者都使用同一套 ADA 目标范围内时间 / GMI / 低血糖 / 餐后反应引擎。

60 秒快速体验(模拟模式,无需设置)

npx -y wellness-cgm-mcp doctor       # see env / mode
npx -y wellness-cgm-mcp status

# In Claude Desktop / Cursor / etc., add:
# {
#   "mcpServers": {
#     "wellness-cgm": {
#       "command": "npx",
#       "args": ["-y", "wellness-cgm-mcp"]
#     }
#   }
# }

现在 Agent 已拥有 10 个 CGM 工具。没有 Dexcom 令牌时,每个工具都会返回标记为 mock: true 的合成读数,非常适合原型开发。

实时配置(Dexcom Developer)

# 1. Sign up at https://developer.dexcom.com (sandbox is free)
# 2. Create an app, register your redirect URI
export DEXCOM_ENV=sandbox
export DEXCOM_CLIENT_ID=...
export DEXCOM_CLIENT_SECRET=...
export DEXCOM_REDIRECT_URI=https://your.callback/redirect

# 3. Get the OAuth URL, open it, grant access, copy the code from the redirect
npx -y wellness-cgm-mcp authorize

# 4. Swap code for tokens
npx -y wellness-cgm-mcp exchange <auth_code_from_redirect>

# 5. Set DEXCOM_ACCESS_TOKEN to the access_token, restart the MCP — flips from mock to live.

实时设置(FreeStyle Libre — 非处方传感器)

无需开发者计划,也无需构建应用——只需使用你在 LibreLinkUp 关注者应用中使用的同一组电子邮件地址和密码(OTC Libre 2 / Libre 3 传感器均可使用)。在 LibreLink 应用中分享读数;在 LibreLinkUp 应用中接受邀请。然后:

export CGM_PROVIDER=libre               # or just set the creds below and let it auto-detect
export [email protected]
export LIBRELINKUP_PASSWORD=...
# Optional: region shard if you're not on EU/global, and a pinned sensor:
export LIBRELINKUP_REGION=us            # eu (default) | us | de | fr | au | jp ...
# export LIBRELINKUP_PATIENT_ID=<id>    # only if you follow more than one sensor

# Verify credentials + list the sensor(s) you follow (never prints the token):
npx -y wellness-cgm-mcp libre-login

登录后,每个血糖工具(cgm_glucose_now、cgm_daily_summary、cgm_time_in_range、cgm_meal_response、cgm_hypo_events,等等)都会读取 Libre 数据,并返回相同的 ADA TIR / GMI / 低血糖 / 餐后反应指标——每个响应都包含 provider 字段,让你始终知道数据来源。没有任何凭据时,所有内容都会返回合成的 mock: true 数据。

Libre 历史数据限制:每次读取约 12 小时

LibreLink Up 的图表端点不接受开始/结束参数——它始终返回自身固定的、约 12 小时的向前时间窗口。请求 24 小时或 72 小时并不会扩大窗口,因此 Libre 数据中根本不存在那些额外时长的数据。

因此,每个带时间窗口的数据负载都会报告实际覆盖的范围:

// cgm_daily_summary({ hours: 72 }) on live Libre
{
  "window_hours": 72,          // what you asked for
  "hours_covered": 12,         // what the numbers below are ACTUALLY computed over
  "observed_window": { "start": "…", "end": "…", "hours": 12 },
  "window_truncated_by_provider": true,
  "notes": ["LibreLink Up returns ~12h of graph data per read and ignores wider spans; requested 72h, covered 12h. …"]
}

请读取 hours_covered,而不是请求的 hours / window_hours。基于 12 小时数据计算的 GMI(估算 A1C)、CV 或目标范围内时间,并不是 3 天的结果。多日指标请使用 Dexcom,其 v3 API 接受明确的开始/结束时间,并会遵照请求。Mock 模式会合成完整的请求时间跨度,因此不会被截断。

这也适用于接受明确 from / to 参数的 cgm_hypo_events:“没有低血糖事件”这一说法仅适用于 hours_covered 所涵盖的范围。基于实时 Libre 读取来回答 3 天的问题,实际得到的是 12 小时的答案;数据负载会通过 hours_covered、observed_window.hours、window_truncated_by_provider 和 notes 说明这一点。(events_per_day 无论哪种情况都可靠——其分母是实际观测时长,而非请求时长——但围绕它的时间范围说明并非如此。)

window_truncated_by_provider 表示结构限制,而非实际情况

它回答的是*“此服务提供方能否覆盖如此宽的时间跨度?”,而不是“这次读取是否恰好返回了较短的范围?”*。例如,传感器刚安装两小时,调用 cgm_daily_summary({ hours: 12 }) 时会返回 hours_covered: 2、window_truncated_by_provider: false 和空的 notes,因为一切正常,在这种情况下发出警告会造成误报。这是有意设计的:

notes 为空表示“未触及已知的服务提供方上限”,而不是“已完整覆盖整个时间窗口”。 hours_covered 是唯一说明实际时间跨度的数值——报告任何时间窗口前,请将它与 hours_requested 进行比较。

工具(19)

工具用途
cgm_agent_manifest运行时约定
cgm_capabilities服务提供方、指标、隐私模式
cgm_connection_statusenv、凭据、模式(实时或 mock)
cgm_privacy_audit本地存储 + 出站目的地
cgm_data_inventory指标目录 + TIR 范围 + GMI 公式
cgm_glucose_now最新 EGV + 趋势
cgm_glucose_window过去 N 小时的所有 EGV(+ hours_covered — 参见 Libre 约 12 小时的限制)
cgm_daily_summary平均值 / GMI / CV / 2 种 TIR 概况——基于 hours_covered,而非请求的时间窗口
cgm_meal_response基线 → 峰值 → 回落 + 区间
cgm_authorize_urlDexcom OAuth URL 构建器
cgm_hypo_events低血糖事件检测(ADA 1 级 < 70,2 级 < 54)——“无事件”仅适用于 hours_covered
cgm_libre_statusFreeStyle Libre(LibreLink Up)配置 + 区域 + 模式 — v0.4
cgm_libre_login登录 LibreLink Up + 列出关注的传感器 — v0.4

为简洁起见,表格省略了共享的个人资料/引导/快速入门/演示辅助工具(cgm_profile_get、cgm_profile_update、cgm_onboarding、cgm_quickstart、cgm_demo)——调用 cgm_agent_manifest 获取完整且始终最新的列表。

每份摘要都包含两种目标范围内时间配置

  • 糖尿病(70-180 mg/dL)——ADA 针对糖尿病成年人的标准。
  • 代谢健康(70-140 mg/dL)——Levels 风格,适用于非糖尿病用户。

Agent 会同时展示两者,供用户根据自身情况选择。

餐后反应区间

基线峰值 Δ区间
< 30 mg/dL极佳
30-49良好
50-79中等
≥ 80较差

结合 wellness-nourish,即可自动计算“我吃了什么 → 后来发生了什么”。

杀手级组合

wellness-nourish: meal at 13:15 (rice + chicken)
       ↓
wellness-cgm-mcp.cgm_meal_response(meal_time)
       ↓
{ peak: 167, peak_delta: 72, band: "moderate", peak_time_minutes: 45 }
       ↓
whoop-mcp.recovery: 67%
       ↓
Agent: "That meal hit a moderate spike (peak +72 mg/dL at 45 min)
        AND recovery is borderline. Try protein-first next time, or
        swap white rice for lentils — should drop the peak ~30 mg/dL."

Levels 每月为此收费 $199。现在,你可以免费使用这个本地优先的 MCP。

隐私

  • ✅ 凭据仅保存在本地——DEXCOM_ACCESS_TOKEN / LIBRELINKUP_* 保存在环境变量中;LibreLink Up 身份验证令牌绝不会在工具输出中返回。
  • ✅ 默认使用模拟模式——在配置数据源之前,每个工具都会返回带有 mock: true 的模拟数据。
  • ✅ 无第三方遥测——所有出站请求仅发送至你的 CGM 数据源(Dexcom,或 Libre 对应的 Abbott LibreLink Up API)。

运行 wellness-cgm-mcp doctor 进行检查。

路线图

  • ✅ v0.4 — 通过 LibreLink Up 支持 FreeStyle Libre(非处方传感器)。已发布。
  • 下一步 — 刷新令牌轮换。按餐食查看历史记录(哪些食物会让你的血糖飙升?)。阈值提醒(当血糖持续高于 X mg/dL 达 Y 分钟时通知 Agent)。与 wellness-nourish 实现跨餐食自动化。

本项目不提供什么

  • 不提供医疗建议或诊断。
  • 不适用于胰岛素/药物剂量决策——请遵从临床医生的建议。
  • 与 Dexcom 或 Abbott 无关联。

📧 联系与支持

许可证

MIT — 参见 LICENSE。

wellness-cgm-mcp 是独立的开源软件。Dexcom 和 FreeStyle Libre 是其各自所有者的商标。两家公司均未参与或认可本项目。

Skill 或 MCP

同一个软件包,两种接入方式。MCP 通过 stdio/HTTP 注册工具。当客户端不支持 MCP 时,skill 可通过 CLI 调用相同的工具:

npx -y wellness-cgm call cgm_connection_status --json '{}'

将 skill/SKILL.md 复制到你的 Agent 技能目录中。

评论

支持 Markdown

第一次接触 MCP?

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

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