Skip to main content
Glama
oliver-virt

nightscout-mcp

by oliver-virt

nightscout-mcp

Nightscout のデータを Claude に公開する、読み取り専用の MCP サーバーです。

「今の血糖値はどうなってる?」 や 「今週のタイム・イン・レンジはどうだった?」、「まだ効いているインスリンはどのくらい?」 と尋ねると、自分のデータから答えが得られます。

医療機器ではありません。 これは、あなたがすでに持っているデータを読み取り専用で表示するものです。治療の判断に使用しないでください。重要なことは、CGM、ポンプ、医師に確認してください。測定値は古くなっていたり、欠落していたり、間違っていたりする可能性があり、LLM が誤って解釈する可能性もあります。

動作イメージ

あなた: この2週間、夜間の血糖値はどうでしたか?

Claude: (glucose_patterns を呼び出し)

深夜に一貫して低くなっていますね。一度きりではなく、パターンとして:

時間

中央値

70未満の割合

01:00

112

4%

02:00

94

18%

03:00

77

31%

04:00

89

22%

05:00

108

9%

03:00 は、1日の中で群を抜いて悪い時間帯です。およそ3晩に1回はその時間帯に70を下回り、05:00 までには自然に戻っています。このパターンは、基礎レートを管理している人に見せる価値があります。

あなた: すぐに変更が必要なものはありますか?

Claude: (get_site_ages と get_device_status を呼び出し)

センサーは9日目なので、あと1日ほどで交換時期です。カニューレは2日目です。ポンプのリザーバーは18単位、ポンプのバッテリーは22%です。これは明日ではなく、今夜対応すべきものです。

(数値は例であり、実際のデータではありません。)

Related MCP server: MCP Nightscout

ツール

現在の状態

ツール

戻り値

get_current_glucose

最新の測定値、トレンド方向、経過時間

get_recent_glucose

過去N時間(デフォルト3時間)の測定値

get_insulin_on_board

アクティブなインスリンと炭水化物(Loop/AAPS)

get_device_status

ポンプのリザーバーとバッテリー、アップローダーのバッテリー、ループの健全性

get_site_ages

カニューレ、センサー、インスリン、ポンプバッテリーの経過日数

期間集計

ツール

戻り値

time_in_range

低/範囲内/高の割合、平均、GMI、CV%(デフォルト24時間)

glucose_patterns

時間帯別の血糖値 — 実際に低くなる/高くなる時間帯

compare_periods

直近N日間とその前のN日間の比較(差分付き)

get_recent_treatments

ボーラス、炭水化物、サイト交換(デフォルト12時間)

リファレンス

ツール

戻り値

get_profile

基礎レート、ISF、炭水化物比、目標値

server_status

Nightscout のバージョンと設定済みのしきい値

glucose_patterns は特に知っておく価値があります。「血糖値はどうなっているか」はグラフで答えられる質問ですが、「一日のうちどの時間帯に確実に低くなるか」はグラフでは答えられません。モデルが2週間分の測定値から見つけ出すのに適した種類の質問です。時間帯は Nightscout プロファイルのタイムゾーンでビン化されるため、午前3時はあなたの午前3時を意味します。

書き込みツールはありません。このサーバーは Nightscout の何も変更できません。

意図的に公開していないもの

Nightscout の ボーラスウィザードプレビュー (bwp) は 推奨インスリン量 を返します。これを表示すると、データを表示するものから治療を提案するものに変わってしまいます。これは、あなたにとっても、そのようなソフトウェアの規制の面でも、まったく別のものです。補正を計算するものについても同じ理由です。ここにあるすべてのツールは読み取り専用です。

セキュリティ

これは個人の健康データをパブリックインターネット上で提供するため、デフォルトは意図的に厳格になっています。

  • ベアラートークンが必須で、サーバーはトークンなしでは起動しません。 「変数を忘れた場合の未認証モード」はありません。それは、デプロイ時に気づかれない失敗だからです。

  • 上流への最小権限。 Nightscout への読み取りは 読み取り可能な アクセストークンで行い、管理者の API_SECRET は決して使いません。このサーバーが完全に侵害されても、Nightscout に書き込むことはできません。

  • 定数時間のトークン比較 により、応答時間からベアラートークンを1文字ずつ復元することはできません。

  • エラーはサニタイズされます。 Nightscout はクエリパラメータで認証するため、トークンはリクエスト URL に含まれます。上流の障害は、パスとステータスのみを名前として再発生させ、資格情報をログやクライアントから見えるエラーに残しません。

  • 転送ヘッダーは、指定したプロキシからのみ信頼されます (TRUSTED_PROXY_IPS)。未設定の場合は誰も信頼しません。

  • コンテナ内では非 root ユーザーとして実行されます。

/health は唯一の認証不要ルートです。固定の {"ok": true} を返し、何も読み取りません。

セットアップ

1. 読み取り専用の Nightscout トークンを作成する

Nightscout で: Admin Tools → Subjects → Add。readable ロールのみを付与します。claude-1a2b3c4d5e6f7890 のようなトークンが得られます。

API_SECRET は使用しないでください。ここでは何も書き込まないため、書き込みアクセスを渡しても何も得られず、トークンが漏れた場合にすべてを失うことになります。

2. 設定

cp .env.example .env
# edit .env — at minimum NS_URL, NS_TOKEN, MCP_BEARER

自分で考えたものではないベアラートークンを生成します:

python3 -c "import secrets; print(secrets.token_urlsafe(32))"

3. 実行

docker build -t nightscout-mcp .
docker run -d --name nightscout-mcp --env-file .env -p 8787:8787 nightscout-mcp

または Docker なしで:

pip install -r requirements.txt
set -a && source .env && set +a
python server.py

4. HTTPS の背後に配置する

サーバーは平文の HTTP を話し、TLS はその前で終端することを想定しています (Traefik、Caddy、nginx、Cloudflare Tunnel など)。Claude はあなたのデバイスからではなく Anthropic のサーバーから接続するため、URL はパブリックインターネットから到達可能である必要があります。

プロキシが X-Forwarded-* を設定する場合は、それを指定します:

TRUSTED_PROXY_IPS=172.18.0.0/16

5. Claude に接続する

Claude で: Customize → Connectors → Add custom connector

  • URL: https://your-host.example.com/mcp/

  • Request headers を開き、authorization を追加し、値に Bearer <your MCP_BEARER> を指定します。

Bearer という単語とスペースを含めて値を入力してください。Claude はヘッダーをそのまま送信し、独自のプレフィックスは追加しません。

リクエストヘッダー認証は Claude のベータ版です。Request headers セクションが表示されない場合は、Anthropic にアクセスを依頼してください。Claude Code は、独自の MCP 設定を介して同じサーバーを今日から使用できます。

単位

NS_UNITS=mg/dl (デフォルト) または mmol。これは値の表示方法にのみ影響します。Nightscout は常に mg/dL で読み取られ、出力時に変換されます。

Nightscout との関係

これは独立したプロジェクトです。Nightscout Foundation とは提携しておらず、承認も受けておらず、その一部でもありません。

Nightscout 自体 (cgm-remote-monitor) は AGPL-3.0 でライセンスされています。このサーバーには Nightscout のコードは含まれておらず、Nightscout のライブラリにもリンクしていません。実行中のインスタンスの REST API に HTTP リクエストを行うだけです。API を間接的に利用しても二次的著作物は生じず、AGPL のネットワーク条項は対象プログラムの変更を条件としていますが、このサーバーは変更を行いません。したがって、Nightscout のコピーレフトはここには及ばず、このプロジェクトは別途ライセンスされています。

これをフォークして Nightscout のソースコードを組み込んだ場合、その推論はあなたのフォークには適用されなくなります。

ライセンス

MIT — LICENSE を参照してください。

リーチを考慮して選択しました。これは小さなコネクタであり、その価値は誰でも10分で実行できることです。コピーレフトは、一般的なケース (1人が自分のデータのために自己ホストするケース) では誰も保護しません。

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables Type 1 diabetes patients and caregivers to monitor real-time blood glucose from Dexcom Share, calculate insulin doses, and receive empathetic AI-powered sick day care guidance through natural language interactions.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects AI assistants to Nightscout for real-time glucose monitoring, analysis, and treatment logging, enabling natural language interaction with CGM data.
    7
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to access and analyze Continuous Glucose Monitor (CGM) data from Nightscout, providing real-time readings, history, and analytics.
    7
    1
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Bridges your Nightscout CGM data with AI assistants via the Model Context Protocol, enabling natural language queries about glucose readings, treatments, statistics, and pattern analysis.
    21
    -