Skip to main content
Glama
oliver-virt

nightscout-mcp

by oliver-virt

nightscout-mcp

一个只读的 MCP 服务器,将你的 Nightscout 数据暴露给 Claude。

问一句 “我的血糖在做什么?”、“这周我的目标范围内时间怎么样?”,或 “还有多少胰岛素在起效?”,就能从你自己的数据中得到答案。

不是医疗设备。 这只是对你已有数据的只读视图。不要据此做出治疗决定。 任何重要的事情都要与你的 CGM、胰岛素泵和临床医生确认。读数可能过期、缺失或 错误,LLM 也可能误读它们。

效果示例

你: 过去两周我夜间血糖一直在做什么?

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 是你一天中最差的一个小时,而且差距很大——大约每三个晚上就有 一个晚上在 03:00 左右低于 70,到 05:00 又会自行回升。 这种形态值得拿给负责你基础率的人看。

你: 有什么我很快需要改的吗?

Claude: (调用 get_site_ages 和 get_device_status)

传感器已经用了 9 天,所以大约一天后到期。软管已经用了 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 是最值得了解的一个。“我的血糖是多少”这个问题,图表已经能回答; “我在一天中的什么时间会可靠地偏低”则是图表回答不了的,而这正是模型擅长从两周的 读数中提取出来的那种信息。小时按你 Nightscout 配置文件自己的时区分桶,所以凌晨 3 点就是你的凌晨 3 点。

没有写入工具。该服务器无法更改 Nightscout 中的任何内容。

刻意不暴露

Nightscout 的追加剂量向导预览(bwp)会返回一个建议胰岛素剂量。把它暴露出来, 就会把这个服务器从展示你数据的东西,变成建议治疗的东西——无论对你还是对此类软件 的监管方式而言,这都完全是另一回事。任何计算校正量的功能同理。这里的每个工具都只是读取。

安全性

这会在公共互联网上提供个人健康数据,因此默认设置刻意严格:

  • 必须提供 bearer token,没有它服务器会拒绝启动。 不存在“如果你忘了设置变量 就变成未认证”的模式——那正是部署时永远不会注意到的失败方式。

  • 上游最小权限。 它使用可读访问令牌读取 Nightscout,绝不使用管理员 API_SECRET。即使此服务器被完全攻破,也无法写入你的 Nightscout。

  • 恒定时间令牌比较,因此无法通过响应时间来逐字符恢复 bearer。

  • 错误信息已净化。 Nightscout 通过查询参数进行身份验证,因此令牌位于请求 URL 中;上游故障被重新抛出时只包含路径和状态,从而将凭据排除在日志和客户端可见的错误之外。

  • 只信任你指定的代理转发的头信息,通过 TRUSTED_PROXY_IPS 设置。未设置意味着 不信任任何人。

  • 在容器中以非 root 用户运行。

/health 是唯一无需认证的路由。它返回固定的 {"ok": true},不读取任何内容。

设置

1. 创建一个只读的 Nightscout 令牌

在 Nightscout 中:管理工具 → 主体 → 添加。只给它 readable 角色。你会得到一个 类似 claude-1a2b3c4d5e6f7890 的令牌。

不要使用你的 API_SECRET。这里没有任何写入操作,所以给它写权限不会带来任何好处, 而一旦令牌泄露,你会失去一切。

2. 配置

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

用你自己不会凭空想出来的东西生成 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 中:自定义 → 连接器 → 添加自定义连接器

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

  • 打开请求头,添加 authorization,值为 Bearer <your MCP_BEARER>

输入的值要包含 Bearer 这个词和空格——Claude 会原样发送该请求头,不会自行添加任何前缀。

请求头认证是 Claude 的测试版功能。如果你没有看到请求头部分,请向 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 的 copyleft 不适用于此,本项目单独许可。

如果你 fork 本项目并将任何 Nightscout 源代码纳入其中,上述理由就不再适用于你的 fork。

许可证

MIT — 参见 LICENSE。

选择 MIT 是为了覆盖面:这是一个小型连接器,其价值在于任何人都能在十分钟内运行它。 在常见情况下,copyleft 保护不了任何人——常见情况就是一个人为自己的数据自行托管它。

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
    -