From function-health-mcp
Reference guide for Function Health MCP data model, auth flow, and tool patterns
How this skill is triggered — by the user, by Claude, or both
Slash command
/function-health-mcp:fh-usageThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Background context for working with Function Health lab data. This skill is loaded automatically to help you use the FH tools effectively.
Background context for working with Function Health lab data. This skill is loaded automatically to help you use the FH tools effectively.
Function Health runs comprehensive lab panels requiring 1-3 lab visits over several weeks. All visits within one test round share the same requisitionId.
2026-01-20/)round-meta.json in each directory contains: requisitionId, visitDates, resultCountQuery tools read from ~/.function-health/exports/ — they never hit the API:
fh_results, fh_biomarker, fh_summary, fh_categories, fh_changes, fh_recommendations, fh_reportOnly two tools make API calls:
fh_sync — full data pull, writes to local storefh_check — lightweight requisition count checkLogin is CLI-only (password requires hidden terminal input):
npx -y -p function-health-mcp function-health login
The fh_login MCP tool only checks auth status and directs users to the CLI command. Never attempt to collect credentials through the MCP tool.
Credentials are stored at ~/.function-health/credentials.json (0o600 permissions). Tokens auto-refresh via Firebase JWT. If the refresh token is revoked, the server falls back to re-login using FH_EMAIL and FH_PASSWORD (from environment variables or ~/lifeos/.env / ~/.env files). Check authHint in fh_status output for guidance when auth fails.
fh_results accepts status ("in_range" | "out_of_range"), category, biomarker, and visit filters.fh_changes accepts from and to date strings; defaults to comparing the two most recent rounds.fh_sync has a 1-hour cooldown. Pass force: true to override.When fh_sync detects changes between rounds, it writes notification files to ~/.function-health/changes/:
fh_notifications reads pending notifications (call without acknowledge)fh_notifications with acknowledge: true clears themfh_status — confirms auth, data availability, and last sync timefh_status shows hasData: false when exports are empty/results-report — the biomarkerResultsRecord field, NOT the /results endpoint (which returns PDFs)fh_changes compares all markers across entire rounds, not individual visitsfh_notifications first, present changes, then acknowledgenpx claudepluginhub daveremy/function-health-mcpShows freshness of health data sources (Apple Health, Oura, Fitbit, labs), last coach prescription and completion, missed-day count, lab status flags, and auto-trigger hook installation status for debugging the health-mcp auto-trigger chain.
Connects to US health systems via HealthEx to pull clinical history, analyze with Claude, and optionally export to a curated FHIR store. Triggers on health record requests.
Generates cross-platform health data queries, writes health metrics, and monitors real-time health changes via Shiny Health for Apple HealthKit and Android Health Connect.