wellness-cgm-mcp について
wellness-cgm-mcpは、持続血糖モニターのデータをAIエージェントに提供するローカル優先のサーバーです。DexcomとLibreLink Up経由のFreeStyle Libreに対応し、プロバイダー未設定時は合成モックデータを利用できます。
主な機能
- 01DexcomとLibreの血糖データを取得
- 02血糖値と目標範囲内時間を集計
- 03食事への反応を分析し低血糖を検出
- 04要求期間に対する実データ範囲を報告
- 05認証情報なしで合成データを利用
活用シーン
- 01直近の血糖値と傾向を確認
- 02食事時刻と血糖反応を照合
- 03モックデータでエージェントのワークフローを試作
- 04指標を解釈する前に実データ範囲を確認
MCP 対応
MCPサーバーはstdioまたは任意のHTTPで、血糖値、集計、食事反応分析など19種類のCGMツールを公開します。認証情報は環境変数に保存され、外部リクエストは選択したCGMプロバイダーにのみ送信されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
19掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| client | enum | いいえ | claude | codex | cursor | windsurf | hermes | openclaw | generic |
詳細
Wellness CGM MCP
AI エージェント向けのローカル優先型持続血糖モニター MCP です。
Dexcom Developer API。Levels に対抗するパターン、エージェント優先、$0。
🩸 開発の理由:Levels は、まさにこれと同じこと――CGM の読み取り、食事との相関分析、血糖値の急上昇の検出――に月額 $199 を請求します。wellness-cgm-mcp は、無料でローカル優先の MCP として同じことを実現します。Stelo OTC + Dexcom developer API + お使いのエージェント + wellness-nourish = 代謝の全サイクルです。
⚡ ワンコマンドでインストール — 使用するランタイムを選択してください:
- Delx Wellness for Hermes:
npx -y delx-wellness-hermes setup- Delx Wellness for OpenClaw:
npx -y delx-wellness-openclaw setup
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。
概要
CGM データ(設定がない場合は合成モックデータも)を、MCP 対応のあらゆるエージェントに提供するローカル MCP サーバーです。2 つの実データバックエンドに対応しています:Dexcom(Developer API、サンドボックスと本番環境)と、LibreLink Up 経由の FreeStyle Libre(OTC センサー — 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"]
# }
# }
# }
エージェントが 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 — OTC センサー)
開発者プログラムへの登録も、アプリの構築も不要です。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/window_hours ではなく、hours_covered を参照してください。12時間分に基づく GMI(推定 A1C)、CV、TIR は、3日分の結果ではありません。複数日にわたる指標には Dexcom を使用してください。Dexcom の v3 API は開始/終了時刻を指定でき、要求を反映します。モックモードでは要求された全期間のデータが合成されるため、期間が切り詰められることはありません。
開始/終了を明示する 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 は構造上の項目であり、実際の取得結果を示すものではありません
この項目が答えるのは「このプロバイダーはこれほど長い期間をカバーできますか?」であり、「今回の読み取り結果は短かったですか?」ではありません。センサーを装着してから2時間後に 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_status | env、認証情報、モード(ライブ/モック) |
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_url | Dexcom OAuth URL ビルダー |
cgm_hypo_events | 低血糖イベントの検出(ADA レベル1 < 70、レベル2 < 54)—「イベントなし」が適用されるのは hours_covered の範囲のみ |
cgm_libre_status | FreeStyle 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を呼び出して確認してください。
すべてのサマリーに2種類のTime-In-Rangeプロファイル
- 糖尿病(70-180 mg/dL)— 糖尿病の成人に対するADA標準です。
- 代謝の健康(70-140 mg/dL)— 糖尿病でないユーザー向けのLevels式です。
エージェントは両方を提示するため、ユーザーは自身の状況に合った方を選べます。
食事の反応バンド
| ベースラインからのピークΔ | バンド |
|---|---|
| < 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(OTCセンサー)。リリース済み。
- 次回 — リフレッシュトークンのローテーション。食事ごとの履歴ブラウザー(どの食品であなたの血糖値が急上昇するか?)。しきい値アラート(血糖値がX mg/dLをY分間超えたときにエージェントに通知)。wellness-nourishとの食事横断自動化。
このプロジェクトの対象外
- 医療上の助言や診断ではありません。
- インスリン/薬剤の投与量を決めるためのものではありません。医療従事者の指示に従ってください。
- DexcomまたはAbbottとは提携していません。
📧 お問い合わせとサポート
- 📨 [email protected] — 一般的な質問、連携サポート、パートナーシップ
- 🐛 バグ報告/機能リクエスト — GitHub Issues
- 🐦 最新情報 — Xの@delx369
- 🌐 サイト — wellness.delx.ai
ライセンス
MIT — LICENSEを参照してください。
wellness-cgm-mcpは独立したオープンソースソフトウェアです。DexcomおよびFreeStyle Libreは、それぞれの所有者の商標です。いずれの企業もこのプロジェクトとは提携しておらず、推奨もしていません。
スキルまたはMCP
同じパッケージに、2つの利用方法があります。MCPはstdio/HTTP上でツールを登録します。スキルを使えば、クライアントにMCPがない場合でも、CLI経由で同じツールを利用できます。
npx -y wellness-cgm call cgm_connection_status --json '{}'
skill/SKILL.mdをエージェントのスキルディレクトリにコピーしてください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。