Skip to main content
Glama
shantaramvernekar

Sapphire Wellness MCP Server

Sapphire Wellness MCP Server

Python-сервер Model Context Protocol (MCP), который предоставляет показатели здоровья из приложения Sapphire Wellness AI-ассистентам.

Доступные показатели

Показатель

Инструмент

Точки данных

Активность

get_activity

Шаги, калории, дистанция, активные минуты

Артериальное давление

get_blood_pressure

Систолическое/диастолическое (мм рт. ст.), категория AHA

Глюкоза

get_glucose

Глюкоза крови (мг/дл), контекст приёма пищи, время в диапазоне

Частота сердечных сокращений

get_heart_rate

Показания BPM, среднее/мин/макс, ЧСС в покое

Сон

get_sleep

Длительность, стадии глубокого/лёгкого/REM/бодрствования, эффективность

SpO2

get_spo2

Насыщение кислородом %, количество событий низкого насыщения

Сводка

get_health_summary

Все 6 показателей одним вызовом

Related MCP server: Sapphire Wellness MCP Server

Архитектура

Agent Container
      │  HTTP SSE
      ▼
sapphire-mcp:8000  ──asyncpg──▶  PostgreSQL:5432
  • Транспорт: HTTP SSE — требуется для многоконтейнерных развёртываний (stdio работает только когда агент запускает MCP-сервер как дочерний процесс)

  • База данных: PostgreSQL с таблицами показателей в стиле OpenTelemetry (time, metric_name, metric_value, attributes JSONB, ...)

  • Фреймворк: FastMCP с моделями ответов Pydantic v2

Полный документ по архитектуре см. в Design.md.

Структура проекта

MCPServers/
├── sapphire_wellness/
│   ├── server.py           # FastMCP app + SSE entry point
│   ├── config.py           # Settings (DB_URL, HOST, PORT via env)
│   ├── models/             # Pydantic response models per metric
│   ├── db/                 # asyncpg pool + shared base query
│   ├── repositories/       # DB → model mapping (one per metric)
│   └── tools/              # MCP tool definitions (one per metric)
├── Design.md               # Architecture reference
├── pyproject.toml
├── Dockerfile
├── podman-compose.yml
└── .env.example

Предварительные требования

  • Python 3.11+

  • PostgreSQL 14+ с созданными 6 таблицами показателей здоровья

  • podman-compose или Docker Compose (для контейнерного развёртывания)

Быстрый старт

Локальная разработка

# 1. Create and activate a virtual environment
python -m venv .venv

# Windows
.venv\Scripts\activate

# macOS / Linux
source .venv/bin/activate

# 2. Install dependencies
pip install -e .

# 3. Configure environment
cp .env.example .env
# Edit .env — set DB_URL to your PostgreSQL connection string

# 4. Run the server
python -m sapphire_wellness.server
# Server starts at http://0.0.0.0:8000

Контейнерное развёртывание (podman-compose)

# Build and start all services (postgres + mcp server)
podman-compose up --build

# Tear down
podman-compose down

MCP-сервер будет доступен по адресу http://localhost:10002/sse.

Чтобы подключить контейнер агента, задайте:

MCP_SERVER_URL=http://sapphire-mcp:10002/sse

Конфигурация

Все настройки считываются из переменных окружения (или файла .env):

Переменная

По умолчанию

Описание

DB_USER

wellness

Имя пользователя PostgreSQL

DB_PASSWORD

wellness

Пароль PostgreSQL

DB_HOST

localhost

Хост PostgreSQL (postgres внутри podman-compose)

DB_PORT

5432

Порт PostgreSQL

DB_NAME

wellness

Имя базы данных PostgreSQL

HOST

0.0.0.0

Адрес привязки MCP-сервера

PORT

8000

Порт привязки MCP-сервера

Справочник по инструментам

Все инструменты используют общие параметры:

Параметр

Тип

По умолчанию

Описание

user_id

str

Пользователь, чьи данные запрашиваются

date

str

"today"

Дата в формате ISO YYYY-MM-DD или "today"

period

str

"day"

"day" (24 ч), "week" (7 дней), "month" (30 дней)

get_activity

Возвращает шаги, калории, дистанцию и активные минуты. Итоги суммируются за период.

get_blood_pressure

Возвращает показания систолического/диастолического давления в мм рт. ст. Каждое показание классифицируется по категориям AHA:

  • Нормальное — систолическое <120 и диастолическое <80

  • Повышенное — систолическое 120–129 и диастолическое <80

  • Гипертония 1-й стадии — систолическое 130–139 или диастолическое 80–89

  • Гипертония 2-й стадии — систолическое ≥140 или диастолическое ≥90

  • Гипертонический криз — систолическое >180 или диастолическое >120

get_glucose

Возвращает показания глюкозы в мг/дл с контекстом приёма пищи (fasting, pre_meal, post_meal, bedtime, random) и статистикой, включая время в диапазоне (целевой диапазон: 70–180 мг/дл).

get_heart_rate

Возвращает показания частоты сердечных сокращений в BPM (активные и в покое) со средним, мин, макс и средним значением ЧСС в покое.

get_sleep

Возвращает разбивку по стадиям сна (глубокий, лёгкий, REM, бодрствование) в минутах, общую длительность и процент эффективности сна.

get_spo2

Возвращает показания SpO2 в %, со средним, мин, макс и количеством событий низкого насыщения (ниже 95%).

get_health_summary

Вызывает все 6 репозиториев показателей конкурентно и возвращает единый комбинированный ответ — идеально для ежедневных сводок о здоровье.

Просмотр инструментов

Используйте MCP Inspector для изучения схем инструментов и выполнения тестовых вызовов:

npx @modelcontextprotocol/inspector http://localhost:8000/sse

Подключение к Claude Desktop

Добавьте в ваш claude_desktop_config.json:

{
  "mcpServers": {
    "sapphire-wellness": {
      "url": "http://localhost:8000/sse"
    }
  }
}

Затем спросите Claude: «Каким было моё артериальное давление на этой неделе?» — и он вызовет get_blood_pressure с period="week".

Схема базы данных

Все 6 таблиц (heartrate, bloodpressure, glucose, spo2, activity, sleep) используют одинаковую схему в стиле OpenTelemetry. Колонка metric_name различает под-показатели внутри каждой таблицы (например, systolic и diastolic — отдельные строки в bloodpressure). Полный DDL и сопоставление под-показателей см. в Design.md.

Расширение

Добавление нового показателя:

  1. Создайте sapphire_wellness/models/<metric>.py — модель Pydantic

  2. Создайте sapphire_wellness/repositories/<metric>_repo.py — запрос к БД + сопоставление

  3. Создайте sapphire_wellness/tools/<metric>.py — определение @mcp.tool()

  4. Зарегистрируйте в server.py

Замена базы данных: Реализуйте новый класс, повторяющий сигнатуры методов в repositories/base.py (HealthRepository), и передайте его в функции register() в server.py.

Добавление check_health_alerts: Этот инструмент запланирован на Фазу 2. Он будет отмечать показания, выходящие за пределы нормальных порогов (например, АД >140/90, SpO2 <95%), и возвращать структурированные предупреждения с уровнями серьёзности.

F
license - not found
Not graded
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • MCP server for Withings health data — sleep, activity, heart, and body metrics.

  • Securely access and manage FHIR healthcare data stored in Medplum.

  • HealthData.gov MCP — wraps HealthData.gov CKAN API (free, no auth)

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shantaramvernekar/sapphire-wellness-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server