apple-health-coverage-mcp
Apple Health Coverage MCP
Eine lokale, schreibgeschützte MCP-Semantikschicht, die verhindert, dass Nicht-Tragen der Apple Watch, Lücken durch entladene Geräte, verzögerte Synchronisierung und Exporteur-Platzhalter-Nullen Gesundheitstrends stillschweigend verfälschen.
Fehlende Beobachtungen sind unbekannt, nicht Null. Eine Null ist nur gültig, wenn die Metrik tatsächlich beobachtbar war.
Dieses Projekt diagnostiziert keine Gesundheitszustände und behauptet nicht zu wissen, ob ein fehlendes Watch-Intervall durch Nicht-Tragen, eine entladene Batterie oder ein anderes Geräteproblem verursacht wurde.
Problem
Viele Apple-Health-Pipelines erzeugen tägliche Zeilen, auch wenn die Watch keine Daten erfasst hat. Leere Felder oder generierte Nullen können dann Aktivität, Erholung, Schlaf und benutzerdefinierte Gesundheits-Achsen schlechter erscheinen lassen, als sie waren.
Apple Health Coverage MCP trennt zwei Fragen:
Welcher Wert wurde beobachtet?
War diese Metrik gut genug beobachtbar, um den Wert zu interpretieren?
Es klassifiziert die Abdeckung, bevor es einen Trend berechnet, und weigert sich, Zeiträume unterhalb eines konfigurierbaren Abdeckungsschwellenwerts zu interpretieren.
Related MCP server: Apple Health Shortcuts MCP
Aktueller Umfang
Die aktuelle Version verarbeitet eine normalisierte tägliche JSON-Datei. Sie enthält eine deterministische synthetische Testvorlage und keine persönlichen Gesundheitsdaten.
Implementiert:
Vollständige, teilweise, nicht verfügbare, ausstehende Synchronisierung und unbekannte Abdeckungszustände
Unabhängige Watch-Verfügbarkeitsnachweise
Unterscheidung zwischen beobachteter Null und Platzhalter-Null
Metrikspezifische Watch-Abhängigkeit
Telefonbasierte Metriken wie Schritte
Abdeckungsbewusste Trend-Schwellenwerte
Spät eintreffende/backgefillte tägliche Upserts
MCP
structuredContentplus Text-FallbackSchreibgeschützte/idempotente/geschlossene-Welt-MCP-Anmerkungen
Geplante Adapter:
MetricBridge /
health-export-mcpApple Health
export.xmlHealthKite-ähnliche Live-iPhone-Brücke
Versionierte benutzerdefinierte Gesundheits-Achsen-Definitionen
Abdeckungszustände
Zustand | Bedeutung | Trend-Verhalten |
| Mindestens 18 Stunden Hautkontakt-Nachweise | Zulässig |
| Einige Watch-Nachweise, aber nicht einen ganzen Tag | Nur zulässig, wenn die Metrikregeln es erlauben |
| Telefonaktivität vorhanden, aber keine Watch-Hautkontakt-Nachweise | Watch-abhängige Werte ausgeschlossen |
| Aktuelle Stichproben können noch eintreffen | Vorübergehend ausgeschlossen |
| Weder Watch noch Telefon liefern genügend Nachweise | Ausgeschlossen |
likely_watch_unavailable liefert bewusst mehrere mögliche Gründe und claimedCause: null.
Metriksemantik
Jede Metrik deklariert ihre eigenen Regeln:
{
"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"
}
}Ein vom Exporter bereitgestelltes exercise_minutes: 0 wird ausgeschlossen, wenn die Watch-Abdeckung nicht verfügbar ist. Eine echte Null von einem beobachteten Tag bleibt im Durchschnitt. Der telefonbasierte step_count bleibt nutzbar, wenn die Watch nicht vorhanden ist.
MCP-Tools
health_coverage_day— erklärt die Beobachtungsabdeckung eines Tageshealth_coverage_range— untersucht die Abdeckung über Datumsbereichehealth_metric_catalog— entdeckt metrikspezifische Beobachtbarkeitsregelnhealth_metric_trend— berechnet nur abdeckungsgestützte Trendshealth_data_quality— fasst die Abdeckung vor der Interpretation zusammen
Alle Tools sind lokal, schreibgeschützt, idempotent und geschlossene Welt.
Synthetische Demo ausführen
Erfordert Node.js 22 oder neuer.
npm test
npm run check
npm run demoDie Demo fragt health_data_quality über den echten JSON-RPC-stdio-Server mit examples/synthetic-health.json ab.
MCP-Client-Konfiguration
Verwenden Sie einen absoluten Pfad:
{
"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"
]
}
}
}Ersetzen Sie für persönliche Daten die synthetische Testvorlage mit einer normalisierten Adapterausgabe, die außerhalb des Git-Repositorys gespeichert ist.
Normalisierte Eingabe
{
"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
}
}
]
}Dieses Beispiel klassifiziert die Watch als wahrscheinlich nicht verfügbar. Die Trainings-Null wird als wahrscheinlicher Platzhalter ausgeschlossen, während telefonbasierte Schritte nutzbar bleiben.
Backfill-Modell
HealthKit-Datensätze können nach einer früheren Analyse eintreffen oder sich ändern. upsertDays:
Verwendet das Datum als tägliche Identität
Behält die neuere Erfassung
Führt neu verfügbare Metriken zusammen
Markiert den Datensatz als
backfilledBehält die bisherige Abdeckungsklassifizierung bei
Abgeleitete Trends und zukünftige Gesundheits-Achsen sollten nach einem Upsert immer neu berechnet werden.
Datenschutz
Der Server öffnet keine Netzwerkverbindung.
Die MCP-Toolausgabe geht weiterhin an das KI-Modell, das Ihr Client verwendet.
Persönliche Exporte, Datenbanken, ZIP-Dateien und generierte CSVs sind gitignored.
Committen Sie niemals Apple-Health-Exporte oder echte abgeleitete Datensätze.
Bevorzugen Sie Aggregatabfragen oder ein lokales Modell für sensible Daten.
Entwicklung
Die Implementierung verwendet die Standardbibliothek von Node und den nativen Test-Runner.
npm test
npm run checkTests verwenden synthetische Datensätze und decken beobachtete Nullen, Platzhalter-Nullen, teilweises Tragen, Watch-Nichtverfügbarkeit, ausstehende Synchronisierung, unbekannte Tage, Trend-Verweigerung bei geringer Abdeckung, Telefon-Fallback und Backfill ab.
Lizenz
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