Sapphire Wellness MCP Server
Sapphire Wellness MCP Server
Un servidor Python del Model Context Protocol (MCP) que expone métricas de salud de la aplicación Sapphire Wellness a asistentes de IA.
Métricas expuestas
Métrica | Herramienta | Puntos de datos |
Actividad |
| Pasos, calorías, distancia, minutos activos |
Presión arterial |
| Sistólica/diastólica (mmHg), categoría AHA |
Glucosa |
| Glucosa en sangre (mg/dL), contexto de comida, tiempo en rango |
Frecuencia cardíaca |
| Lecturas de BPM, media/mín/máx, FC en reposo |
Sueño |
| Duración, fases profundo/ligero/REM/despierto, eficiencia |
SpO2 |
| Saturación de oxígeno %, número de eventos de baja saturación |
Resumen |
| Las 6 métricas en una sola llamada |
Related MCP server: Sapphire Wellness MCP Server
Arquitectura
Agent Container
│ HTTP SSE
▼
sapphire-mcp:8000 ──asyncpg──▶ PostgreSQL:5432Transporte: HTTP SSE — necesario para despliegues multi-contenedor (stdio solo funciona cuando el agente lanza el servidor MCP como proceso hijo)
Base de datos: PostgreSQL con tablas de métricas estilo OpenTelemetry (
time,metric_name,metric_value,attributes JSONB, ...)Framework: FastMCP con modelos de respuesta Pydantic v2
Consulta Design.md para el documento completo de arquitectura.
Estructura del proyecto
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.exampleRequisitos previos
Python 3.11+
PostgreSQL 14+ con las 6 tablas de métricas de bienestar creadas
podman-compose o Docker Compose (para despliegue en contenedores)
Inicio rápido
Desarrollo local
# 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:8000En contenedores (podman-compose)
# Build and start all services (postgres + mcp server)
podman-compose up --build
# Tear down
podman-compose downEl servidor MCP estará disponible en http://localhost:10002/sse.
Para conectar tu contenedor de agente, configura:
MCP_SERVER_URL=http://sapphire-mcp:10002/sseConfiguración
Todos los ajustes se leen de variables de entorno (o de un archivo .env):
Variable | Valor por defecto | Descripción |
|
| Nombre de usuario de PostgreSQL |
|
| Contraseña de PostgreSQL |
|
| Host de PostgreSQL ( |
|
| Puerto de PostgreSQL |
|
| Nombre de la base de datos PostgreSQL |
|
| Dirección de enlace del servidor MCP |
|
| Puerto de enlace del servidor MCP |
Referencia de herramientas
Todas las herramientas comparten estos parámetros:
Parámetro | Tipo | Valor por defecto | Descripción |
|
| — | Usuario cuyos datos se van a consultar |
|
|
| Fecha ISO |
|
|
|
|
get_activity
Devuelve pasos, calorías, distancia y minutos activos. Los totales se suman a lo largo del período.
get_blood_pressure
Devuelve lecturas sistólicas/diastólicas en mmHg. Cada lectura se clasifica según las categorías AHA:
Normal — sistólica <120 y diastólica <80
Elevada — sistólica 120–129 y diastólica <80
Hipertensión etapa 1 — sistólica 130–139 o diastólica 80–89
Hipertensión etapa 2 — sistólica ≥140 o diastólica ≥90
Crisis hipertensiva — sistólica >180 o diastólica >120
get_glucose
Devuelve lecturas de glucosa en mg/dL con contexto de comida (fasting, pre_meal, post_meal, bedtime, random) y estadísticas que incluyen tiempo en rango (objetivo: 70–180 mg/dL).
get_heart_rate
Devuelve lecturas de frecuencia cardíaca en BPM (activa y en reposo) con media, mín, máx y BPM medio en reposo.
get_sleep
Devuelve el desglose de fases del sueño (profundo, ligero, REM, despierto) en minutos, la duración total y el porcentaje de eficiencia del sueño.
get_spo2
Devuelve lecturas de SpO2 en %, con media, mín, máx y un recuento de eventos de baja saturación (por debajo del 95%).
get_health_summary
Llama a los 6 repositorios de métricas de forma concurrente y devuelve una única respuesta combinada: ideal para informes diarios de salud.
Inspección de herramientas
Usa el MCP Inspector para explorar los esquemas de las herramientas y hacer llamadas de prueba:
npx @modelcontextprotocol/inspector http://localhost:8000/sseConexión con Claude Desktop
Añade a tu claude_desktop_config.json:
{
"mcpServers": {
"sapphire-wellness": {
"url": "http://localhost:8000/sse"
}
}
}Después pregunta a Claude: «¿Cuál fue mi presión arterial esta semana?» y llamará a get_blood_pressure con period="week".
Esquema de base de datos
Las 6 tablas (heartrate, bloodpressure, glucose, spo2, activity, sleep) comparten el mismo esquema estilo OpenTelemetry. La columna metric_name distingue las sub-métricas dentro de cada tabla (p. ej., systolic y diastolic son filas separadas en bloodpressure). Consulta Design.md para el DDL completo y el mapeo de sub-métricas.
Ampliación
Añadir una nueva métrica:
Crea
sapphire_wellness/models/<metric>.py— modelo PydanticCrea
sapphire_wellness/repositories/<metric>_repo.py— consulta de BD + mapeoCrea
sapphire_wellness/tools/<metric>.py— definición de@mcp.tool()Regístralo en
server.py
Cambiar la base de datos:
Implementa una nueva clase que replique las firmas de los métodos en repositories/base.py (HealthRepository) y pásala a las funciones register() en server.py.
Añadir check_health_alerts:
Esta herramienta está prevista para la Fase 2. Marcará las lecturas fuera de los umbrales normales (p. ej., PA >140/90, SpO2 <95%) y devolverá alertas estructuradas con niveles de gravedad.
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