Skip to main content

apple-health-mcp

MCP server that loads your Apple Health export into an in-memory SQLite database and exposes it to LLMs via the Model Context Protocol.

Quick start

uvx apple-health-mcp --input ~/Downloads/export.zip

Or install it permanently:

uv tool install apple-health-mcp
apple-health-mcp --input ~/Downloads/export.zip

Exporting your data from Apple Health

  1. Open the Health app on your iPhone
  2. Tap your profile picture (top-right)
  3. Scroll down and tap Export All Health Data
  4. Confirm — this may take a few minutes
  5. Save or AirDrop the resulting export.zip to your Mac

Claude Desktop integration

Add this to your claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "apple-health": {
      "command": "uvx",
      "args": [
        "apple-health-mcp",
        "--input",
        "/absolute/path/to/export.zip"
      ]
    }
  }
}

Restart Claude Desktop. The tools will appear in the tools menu.

MCP tools

list_metrics()

Returns every distinct record type and its count.

list_workout_types()

Returns every distinct workout activity type and its count.

summary(metric, period)

Aggregates a metric by day, week, or month. Returns count, avg, min, max, and sum.

summary("StepCount", "week")
summary("HeartRate", "month")

query(sql)

Run arbitrary read-only SQL against the database. Only SELECT statements are allowed.

Schema:

records(type, source_name, unit, value, start_date, end_date)
workouts(activity_type, source_name, duration, duration_unit,
         total_energy_kcal, total_distance, distance_unit, start_date, end_date)

Examples:

-- Daily step totals for the last 30 days
SELECT substr(start_date, 1, 10) AS day, sum(CAST(value AS REAL)) AS steps
FROM records WHERE type = 'StepCount'
GROUP BY day ORDER BY day DESC LIMIT 30;

-- Longest runs
SELECT start_date, duration, total_distance, distance_unit
FROM workouts WHERE activity_type = 'Running'
ORDER BY total_distance DESC LIMIT 10;

Environment variable

Instead of --input, you can set:

export HEALTH_EXPORT_PATH=~/Downloads/export.zip

Development

git clone https://github.com/smarzola/apple-health-mcp
cd apple-health-mcp
uv sync                         # install deps + dev tools
uv run pytest                   # run tests
uv run apple-health-mcp --input ~/Downloads/export.zip

Lint, format & typecheck

uv run ruff check src/ tests/          # lint
uv run ruff format --check src/ tests/ # format check
uv run mypy src/                       # typecheck

Auto-fix:

uv run ruff check --fix src/ tests/    # auto-fix lint
uv run ruff format src/ tests/         # auto-format

Pre-commit hooks

uv run pre-commit install     # one-time setup
# Now ruff + mypy run automatically on every commit

Cutting a release

gh release create v0.2.0 --generate-notes
# Triggers GitHub Actions → builds → publishes to PyPI → smoke tests

License

MIT

Release files for apple-health-mcp 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for apple-health-mcp 0.1.1
File Size Uploaded
apple_health_mcp-0.1.1.tar.gz 66.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for apple-health-mcp 0.1.1
File Interpreter ABI Platform
apple_health_mcp-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 74.3 kB

Release files / apple_health_mcp-0.1.1.tar.gz

Download URL apple_health_mcp-0.1.1.tar.gz
Size 66.9 kB
Tags Source
SHA-256 checksum
How to use checksums
729e6b7e42294f4c5295938e715d2b0bd3ad9d478061a75e3e911e2c4ba0dccb
BLAKE2b-256 checksum
How to use checksums
551dfdee144061f72d47163b893c4f14df0685a8e3541e3517cb28ec7784875b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 22, 2026.

Transparency log

Release files / apple_health_mcp-0.1.1-py3-none-any.whl

Download URL apple_health_mcp-0.1.1-py3-none-any.whl
Size 7.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d1f2fadcf2de2749a4519dff64b8877b9272a7dffbc16433157cdb37e16aa0fc
BLAKE2b-256 checksum
How to use checksums
564ac44210eaee60a29d64702ad03be42128b08e876baf0377452c92f5ddf14e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 22, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page