apple-health-coverage-mcp
Cobertura de Apple Health MCP
Una capa semántica MCP local y de solo lectura que evita que los intervalos sin uso del Apple Watch, las brechas por descarga del dispositivo, la sincronización retrasada y los ceros de marcador de posición del exportador corrompan silenciosamente las tendencias de salud.
Las observaciones faltantes son desconocidas, no cero. Un cero solo es válido cuando la métrica era realmente observable.
Este proyecto no diagnostica afecciones de salud ni afirma saber si un intervalo sin uso del Watch se debió a que no se llevaba puesto, a una batería agotada o a otro problema del dispositivo.
Problema
Muchos pipelines de Apple Health generan filas diarias incluso cuando el Watch no estaba recopilando datos. Los campos vacíos o los ceros generados pueden hacer que la actividad, la recuperación, el sueño y los ejes de salud personalizados parezcan peores de lo que eran.
Apple Health Coverage MCP separa dos preguntas:
¿Qué valor se observó?
¿Era esa métrica lo suficientemente observable como para interpretar el valor?
Clasifica la cobertura antes de calcular una tendencia y se niega a interpretar periodos por debajo de un umbral de cobertura configurable.
Related MCP server: Apple Health Shortcuts MCP
Alcance actual
La versión actual consume un archivo JSON diario normalizado. Incluye un fixture sintético determinista y ningún dato personal de salud.
Implementado:
Estados de cobertura completa, parcial, no disponible, sincronización pendiente y desconocida
Evidencia independiente de disponibilidad del Watch
Distinción entre cero observado y cero de marcador de posición
Dependencia del Watch específica de la métrica
Métricas respaldadas por el teléfono, como los pasos
Umbrales de tendencia sensibles a la cobertura
Upserts diarios con llegada tardía o relleno
MCP
structuredContentmás respaldo de textoAnotaciones MCP de solo lectura, idempotentes y de mundo cerrado
Adaptadores planificados:
MetricBridge /
health-export-mcpApple Health
export.xmlPuente en vivo estilo HealthKite para iPhone
Definiciones versionadas de ejes de salud personalizados
Estados de cobertura
Estado | Significado | Comportamiento de tendencia |
| Al menos 18 horas de evidencia de contacto con la piel | Elegible |
| Alguna evidencia del Watch, pero no un día completo | Elegible solo cuando las reglas de la métrica lo permitan |
| Existe actividad del teléfono pero no evidencia de contacto con la piel del Watch | Valores que requieren Watch excluidos |
| Pueden llegar muestras recientes | Excluido temporalmente |
| Ni el Watch ni el teléfono proporcionan suficiente evidencia | Excluido |
likely_watch_unavailable devuelve deliberadamente múltiples razones posibles y claimedCause: null.
Semántica de métricas
Cada métrica declara sus propias reglas:
{
"exercise_minutes": {
"unit": "min",
"measurementMode": "cumulative_event",
"zeroSemantics": "valid_if_observable",
"wearDependence": "wearable_required"
},
"step_count": {
"unit": "count",
"measurementMode": "cumulative_event",
"zeroSemantics": "valid_if_observable",
"wearDependence": "wearable_preferred"
}
}Un exercise_minutes: 0 proporcionado por el exportador se excluye cuando la cobertura del Watch no está disponible. Un cero real de un día observado permanece en el promedio. El step_count respaldado por el teléfono puede seguir siendo utilizable cuando el Watch no está presente.
Herramientas MCP
health_coverage_day— explica la cobertura de observación de un díahealth_coverage_range— inspecciona la cobertura entre fechashealth_metric_catalog— descubre reglas de observabilidad específicas de la métricahealth_metric_trend— calcula solo tendencias respaldadas por coberturahealth_data_quality— resume la cobertura antes de la interpretación
Todas las herramientas son locales, de solo lectura, idempotentes y de mundo cerrado.
Ejecutar la demo sintética
Requiere Node.js 22 o superior.
npm test
npm run check
npm run demoLa demo consulta health_data_quality a través del servidor real JSON-RPC stdio usando examples/synthetic-health.json.
Configuración del cliente MCP
Usa una ruta absoluta:
{
"mcpServers": {
"apple-health-coverage": {
"command": "node",
"args": [
"/absolute/path/apple-health-coverage-mcp/src/server.js",
"--data",
"/absolute/path/apple-health-coverage-mcp/examples/synthetic-health.json"
]
}
}
}Para datos personales, reemplaza el fixture sintético con una salida de adaptador normalizada almacenada fuera del repositorio Git.
Entrada normalizada
{
"schemaVersion": "wear-health/v1",
"metricDefinitions": {},
"days": [
{
"date": "2026-08-18",
"ingestedAt": "2026-08-19T08:00:00Z",
"coverageSignals": {
"skinContactHours": 0,
"heartRateSamples": 0,
"phoneActivityPresent": true,
"watchSeenOnAdjacentDays": true,
"syncState": "complete"
},
"metrics": {
"exercise_minutes": 0,
"step_count": 3200
}
}
]
}Ese ejemplo clasifica el Watch como probablemente no disponible. El cero de ejercicio se excluye como probable marcador de posición, mientras que los pasos respaldados por el teléfono siguen siendo utilizables.
Modelo de relleno
Los registros de HealthKit pueden llegar o cambiar después de un análisis anterior. upsertDays:
Usa la fecha como identidad diaria
Conserva la ingesta más reciente
Fusiona las métricas recién disponibles
Marca el registro como
backfilledConserva la clasificación de cobertura anterior
Las tendencias derivadas y los futuros ejes de salud siempre deben recalcularse después de un upsert.
Privacidad
El servidor no abre ninguna conexión de red.
La salida de la herramienta MCP sigue yendo al modelo de IA que use tu cliente.
Las exportaciones personales, bases de datos, archivos ZIP y CSV generados están en gitignore.
Nunca hagas commit de exportaciones de Apple Health ni de conjuntos de datos derivados reales.
Prefiere consultas agregadas o un modelo local para datos sensibles.
Desarrollo
La implementación usa la biblioteca estándar de Node y el ejecutor de pruebas nativo.
npm test
npm run checkLas pruebas usan registros sintéticos y cubren ceros observados, ceros de marcador de posición, uso parcial, no disponibilidad del Watch, sincronización pendiente, días desconocidos, rechazo de tendencias de baja cobertura, respaldo del teléfono y relleno.
Licencia
MIT
This server cannot be installed
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
- FlicenseNot gradedqualityCmaintenanceExposes health metrics (activity, blood pressure, glucose, heart rate, sleep, SpO2) from the Sapphire Wellness App to AI assistants via the Model Context Protocol.
- AlicenseNot gradedqualityCmaintenanceExposes Apple Health data as read-only tools for AI via HTTP MCP. Provides three tools: health_now, health_detail, and health_trends.MIT
- AlicenseNot gradedqualityCmaintenanceExposes Apple Health data as three read-only MCP tools (current status, details, trends) via a Cloudflare Worker, enabling AI assistants to view health metrics without modification.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI to query Apple Health data through three read-only tools: current status, detailed sleep/metrics, and trends over 7/14/30 days. It deploys to Cloudflare quickly, keeping health data private and access-controlled.MIT
Related MCP Connectors
63 tools for Apple Health, Fitbit, Oura & Health Connect data in Claude, ChatGPT, Grok & Mistral.
Training analytics over your Hevy log: e1RM, PRs, volume, consistency, bodyweight.
Glucose readings from your LibreLink Up sensor: graph, logbook, stats and summaries (read-only). Sec
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/mayank-youdata/apple-health-coverage-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server