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 — худший час вашего дня с большим отрывом: примерно одна ночь из трёх в это время опускается ниже 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-токен, и сервер отказывается запускаться без него. Нет режима «без аутентификации, если забыл переменную» — это тот сбой, который развёртывание не замечает.

  • Минимальные привилегии на стороне источника. Он читает Nightscout с читаемым токеном доступа, никогда не используя административный API_SECRET. Даже полная компрометация этого сервера не позволит записать что-либо в ваш Nightscout.

  • Сравнение токенов за постоянное время, чтобы по времени ответа нельзя было восстановить bearer посимвольно.

  • Ошибки очищаются. Nightscout аутентифицируется через параметр запроса, поэтому токен находится в URL запроса; ошибки вышестоящего сервиса перевыбрасываются с указанием только пути и статуса, не допуская попадания учётных данных в логи и видимые клиенту ошибки.

  • Пересылаемые заголовки доверяются только прокси, которые вы указали, через TRUSTED_PROXY_IPS. Если не задано — не доверять никому.

  • Работает от непривилегированного пользователя в контейнере.

/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

Сгенерируйте 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 <ваш MCP_BEARER>

Введите значение, включая слово Bearer и пробел — Claude отправляет заголовок как есть и не добавляет своего префикса.

Аутентификация через заголовок запроса — бета-функция Claude. Если вы не видите раздел Request headers, запросите доступ у Anthropic. Claude Code может использовать этот же сервер уже сегодня через свою собственную конфигурацию MCP.

Единицы измерения

NS_UNITS=mg/dl (по умолчанию) или mmol. Это влияет только на представление значений; Nightscout всегда читается в мг/дл и конвертируется на выходе.

Отношение к Nightscout

Это независимый проект. Он не аффилирован с Nightscout Foundation, не одобрен им и не является его частью.

Сам Nightscout (cgm-remote-monitor) распространяется под лицензией AGPL-3.0. Этот сервер не содержит кода Nightscout и не подключает библиотек Nightscout — он только делает HTTP-запросы к REST API работающего экземпляра. Потребление API на расстоянии не создаёт производного произведения, а сетевое условие AGPL обусловлено модификацией покрываемой программы, чего здесь не происходит. Поэтому копилефт Nightscout не распространяется на этот проект, и он лицензирован отдельно.

Если вы форкнете этот проект и включите в него какой-либо исходный код Nightscout, эти рассуждения перестанут применяться к вашему форку.

Лицензия

MIT — см. LICENSE.

Выбор сделан в пользу доступности: это небольшой коннектор, ценность которого в том, что любой может запустить его за десять минут. Копилефт никого не защитил бы в типичном случае, а типичный случай — это один человек, размещающий его для своих собственных данных.

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
    -