Sapphire Wellness MCP Server
Sapphire Wellness MCP Server
Python-сервер Model Context Protocol (MCP), который предоставляет показатели здоровья из приложения Sapphire Wellness AI-ассистентам.
Доступные показатели
Показатель | Инструмент | Точки данных |
Активность |
| Шаги, калории, дистанция, активные минуты |
Артериальное давление |
| Систолическое/диастолическое (мм рт. ст.), категория AHA |
Глюкоза |
| Глюкоза крови (мг/дл), контекст приёма пищи, время в диапазоне |
Частота сердечных сокращений |
| Показания BPM, среднее/мин/макс, ЧСС в покое |
Сон |
| Длительность, стадии глубокого/лёгкого/REM/бодрствования, эффективность |
SpO2 |
| Насыщение кислородом %, количество событий низкого насыщения |
Сводка |
| Все 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 downMCP-сервер будет доступен по адресу http://localhost:10002/sse.
Чтобы подключить контейнер агента, задайте:
MCP_SERVER_URL=http://sapphire-mcp:10002/sseКонфигурация
Все настройки считываются из переменных окружения (или файла .env):
Переменная | По умолчанию | Описание |
|
| Имя пользователя PostgreSQL |
|
| Пароль PostgreSQL |
|
| Хост PostgreSQL ( |
|
| Порт PostgreSQL |
|
| Имя базы данных PostgreSQL |
|
| Адрес привязки MCP-сервера |
|
| Порт привязки MCP-сервера |
Справочник по инструментам
Все инструменты используют общие параметры:
Параметр | Тип | По умолчанию | Описание |
|
| — | Пользователь, чьи данные запрашиваются |
|
|
| Дата в формате ISO |
|
|
|
|
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.
Расширение
Добавление нового показателя:
Создайте
sapphire_wellness/models/<metric>.py— модель PydanticСоздайте
sapphire_wellness/repositories/<metric>_repo.py— запрос к БД + сопоставлениеСоздайте
sapphire_wellness/tools/<metric>.py— определение@mcp.tool()Зарегистрируйте в
server.py
Замена базы данных:
Реализуйте новый класс, повторяющий сигнатуры методов в repositories/base.py (HealthRepository), и передайте его в функции register() в server.py.
Добавление check_health_alerts:
Этот инструмент запланирован на Фазу 2. Он будет отмечать показания, выходящие за пределы нормальных порогов (например, АД >140/90, SpO2 <95%), и возвращать структурированные предупреждения с уровнями серьёзности.
This server cannot be installed
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
- AlicenseNot gradedqualityCmaintenanceExposes personal Garmin wellness data through MCP tools for accessing summary, sleep, HRV, heart rate, stress, body battery, and historical data.MIT
- FlicenseNot gradedqualityCmaintenanceExposes health metrics from the Sapphire Wellness App to AI assistants via MCP, enabling queries on activity, blood pressure, glucose, heart rate, sleep, and SpO2 data.
- FlicenseNot gradedqualityCmaintenanceExposes health metrics from the Sapphire Wellness App to AI assistants, enabling natural language queries for activity, blood pressure, glucose, heart rate, sleep, and SpO2 data.
- FlicenseNot gradedqualityCmaintenanceMCP server that exposes health metrics from the Sapphire Wellness App to AI assistants, enabling natural language queries for activity, blood pressure, glucose, heart rate, sleep, and SpO2 data.
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)
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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