apple-health-coverage-mcp
Apple Health Coverage MCP
Локальный MCP-слой семантики только для чтения, который предотвращает незаметное искажение трендов здоровья из-за пропусков, когда Apple Watch не были на руке, разряженного устройства, задержек синхронизации и нулевых значений-заглушек от экспортера.
Отсутствующие наблюдения — это неизвестность, а не ноль. Ноль допустим только тогда, когда метрика действительно была наблюдаема.
Этот проект не диагностирует состояния здоровья и не утверждает, что знает, была ли пропущенная интервальная запись Watch вызвана отсутствием на руке, разряженной батареей или другой проблемой устройства.
Проблема
Многие конвейеры Apple Health создают ежедневные строки, даже когда Watch не собирали данные. Пустые поля или сгенерированные нули могут затем сделать активность, восстановление, сон и пользовательские оси здоровья хуже, чем они были на самом деле.
Apple Health Coverage MCP разделяет два вопроса:
Какое значение было наблюдаемо?
Была ли эта метрика достаточно наблюдаема, чтобы интерпретировать значение?
Он классифицирует покрытие перед расчётом тренда и отказывается интерпретировать периоды ниже настраиваемого порога покрытия.
Related MCP server: Apple Health Shortcuts MCP
Текущий охват
Текущая версия потребляет нормализованный ежедневный JSON-файл. Она включает детерминированный синтетический фикстур и не содержит личных данных о здоровье.
Реализовано:
Полное, частичное, недоступное, ожидающее синхронизации и неизвестное состояния покрытия
Независимые свидетельства доступности Watch
Различие между наблюдаемым нулём и нулём-заглушкой
Зависимость от Watch для конкретных метрик
Метрики, поддерживаемые телефоном, такие как шаги
Пороги трендов с учётом покрытия
Поздние/дополненные ежедневные апсерты
MCP
structuredContentплюс текстовый запасной вариантАннотации MCP: только чтение/идемпотентность/закрытый мир
Планируемые адаптеры:
MetricBridge /
health-export-mcpApple Health
export.xmlЖивой мост iPhone в стиле HealthKite
Версионированные определения пользовательских осей здоровья
Состояния покрытия
Состояние | Значение | Поведение тренда |
| Не менее 18 часов свидетельств контакта с кожей | Допустимо |
| Некоторые свидетельства Watch, но не полный день | Допустимо только если правила метрики разрешают |
| Активность телефона есть, но свидетельств контакта Watch нет | Значения, требующие Watch, исключаются |
| Последние образцы могут ещё поступить | Временно исключено |
| Ни Watch, ни телефон не дают достаточных свидетельств | Исключено |
likely_watch_unavailable намеренно возвращает несколько возможных причин и claimedCause: null.
Семантика метрик
Каждая метрика объявляет свои собственные правила:
{
"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"
}
}Предоставленное экспортером exercise_minutes: 0 исключается, когда покрытие Watch недоступно. Реальный ноль из наблюдаемого дня остаётся в среднем. Поддерживаемый телефоном step_count может оставаться пригодным, когда Watch отсутствуют.
Инструменты MCP
health_coverage_day— объясняет покрытие наблюдений за один деньhealth_coverage_range— проверяет покрытие по датамhealth_metric_catalog— обнаруживает правила наблюдаемости для конкретных метрикhealth_metric_trend— рассчитывает только тренды, поддерживаемые покрытиемhealth_data_quality— обобщает покрытие перед интерпретацией
Все инструменты локальны, только для чтения, идемпотентны и работают в закрытом мире.
Запуск синтетической демонстрации
Требуется Node.js 22 или новее.
npm test
npm run check
npm run demoДемонстрация запрашивает health_data_quality через реальный JSON-RPC stdio-сервер, используя examples/synthetic-health.json.
Конфигурация MCP-клиента
Используйте абсолютный путь:
{
"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"
]
}
}
}Для личных данных замените синтетический фикстур на нормализованный вывод адаптера, хранящийся вне Git-репозитория.
Нормализованный ввод
{
"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
}
}
]
}Этот пример классифицирует Watch как вероятно недоступные. Ноль упражнений исключается как вероятная заглушка, в то время как шаги, поддерживаемые телефоном, остаются пригодными.
Модель дополнения
Записи HealthKit могут поступать или изменяться после предыдущего анализа. upsertDays:
Использует дату как ежедневную идентичность
Сохраняет более новую загрузку
Объединяет вновь доступные метрики
Помечает запись как
backfilledСохраняет предыдущую классификацию покрытия
Производные тренды и будущие оси здоровья всегда должны пересчитываться после апсерта.
Конфиденциальность
Сервер не открывает сетевых подключений.
Вывод инструментов MCP всё равно передаётся той модели ИИ, которую использует ваш клиент.
Личные экспорты, базы данных, ZIP-файлы и сгенерированные CSV-файлы игнорируются Git.
Никогда не коммитьте экспорты Apple Health или реальные производные наборы данных.
Для чувствительных данных предпочитайте агрегированные запросы или локальную модель.
Разработка
Реализация использует стандартную библиотеку Node и встроенный тестовый раннер.
npm test
npm run checkТесты используют синтетические записи и охватывают наблюдаемые нули, нули-заглушки, частичное ношение, недоступность Watch, ожидание синхронизации, неизвестные дни, отказ от тренда при низком покрытии, запасной вариант телефона и дополнение.
Лицензия
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