← Back to directory
A

Apple Health MCP Server

Community
Query your Apple Health export locally with SQL
Category
Other #25 of 230
Stars
★ 575 Very popular
Transport
stdio (local process)
Runtime
Node.js 22+
Credentials
No credential needed
License
MIT
Last commit
Tools
3
67FMRS · C

A local-first Apple Health MCP server that queries a local CSV export read-only through DuckDB, exposing three tools: health_schema, health_query, and health_report. It reads files in place without uploading the export or making network requests, though query results returned to the client may be sent to that client's model provider. Best suited to users who already export with Simple Health Export CSV and value local data handling; it does not support the native export.xml and offers no persistent incremental import. Reports are not medical advice.

Strongest · Documentation 15/20 Weakest · Reliability 11/20

Reliability
11/20
Security and permissions
15/20
Maintenance
12/20
Documentation
15/20
Setup experience
14/20
Why each score
Reliability 11/20
README and server.json are mutually consistent: local stdio transport, npx launch, read-only SQL, three well-scoped tools (health_schema/health_query/health_report), with disclosed memory cap, explicit fail-rather-than-spill behavior, per-process DuckDB rebuild and no date window. Path looks plausible. However, per the static calibration rule, the repository shows no verified CI workflows and no committed tests covering the server's key paths (README only mentions an npm test command), so init/handshake and tool-behavior parity cannot be confirmed; CSV-layout-only support and duplicate-measurement handling (sourceName) remain unverified edge cases. Scored at the "plausible happy path, thin tests/edge cases" anchor.
Security and permissions 15/20
No credentials, tokens or network uploads; data is read locally, nothing is spilled to a temp directory, only READ_ONLY queries are exposed, and HEALTH_DATA_DIR is the single required input—an appropriately narrow scope. README discloses that results passed to the MCP client may reach that client's model provider and warns to only attach trusted clients, which is clear data-flow disclosure. Deductions: no described confirmation mechanism for sensitive operations, no sandboxing/hardening guidance, and no dependency-audit or lockfile evidence for the DuckDB/npm supply chain. No red line is triggered.
Maintenance 12/20
MIT license, semantic version 1.4.2, published npm package, only 5 open issues and not archived indicate active maintenance. But stars (567) are a discovery signal only and add no points; there is no evidence of commit/release dates, issue response time, a security-response channel (SECURITY.md), or a dependency-update policy (e.g., Dependabot). Governance and versioning transparency gaps keep this mid-range rather than full marks.
Documentation 15/20
Docs are layered: runtime requirement (Node 22), export-app steps, Claude Desktop config example, env-var table with required/defaults, tool-purpose table, pointers to the data-model/querying guide, memory estimation (~1 GiB for two years), and explicit limitations (no export.xml support, no date window, no persistent incremental import, not medical advice). Gaps: no per-tool parameter detail with example outputs, no troubleshooting section, no quantified cost/performance boundaries, and no separate security/privacy policy document, so it falls short of the top anchor.
Setup experience 14/20
The install path is clear: a single npx -y command with a copy-pasteable JSON config; only HEALTH_DATA_DIR is required, with sensible defaults for the rest, and a mainstream client (Claude Desktop) example is provided. However, users must first install the third-party iOS app Simple Health Export CSV, export, unzip and transfer CSVs to the host, plus have Node 22+; platform compatibility (Windows/Linux) is untested/undeclared and the proprietary-app prerequisite is a non-standard manual step. Given the static cap of 15 and the manual, mildly fragile prerequisite, it stays below that ceiling.

Static review · not runListed 2026-09-18

Read the FMRS scoring method →

Fit and risk

What it can accessReads local files

Best for

  • Users who want health data to stay local rather than pass through a third-party server
  • Users who already have an Apple Health CSV export from Simple Health Export CSV
  • Quantified-self practitioners who are comfortable with SQL and DuckDB
  • Claude Desktop users working from a trusted MCP client

Not for

  • Users who only have the native Apple Health export.xml and have not converted it to CSV
  • Users who do not want query results potentially sent to the model provider configured in their MCP client
  • Anyone treating health reports as medical advice or diagnosis
  • Users who need persistent incremental import or a database reused across processes

Required permissions

  • Read the Apple Health CSV export files in the directory given by HEALTH_DATA_DIR
  • DuckDB processes data in memory, bounded by MAX_MEMORY_MB
  • The server itself makes no network requests and does not upload the export; however, query results returned to your MCP client may be sent to that client's configured model provider

Risks and side effects

  • Every tool can reach the whole configured history, so only start this server from an MCP client you trust with that data
  • Health data is sensitive; once query results are sent to a model provider they leave the local environment
  • The first request that needs a table loads that table's full CSV history, with no date window
  • Tables are held in memory; an export that does not fit within MAX_MEMORY_MB fails with an explicit error instead of spilling to disk
  • Device overlap can produce duplicate-looking measurements, so queries may need to account for sourceName
  • Health reports summarize recorded data and are not medical advice

Setup

Before you start

Runtime:Node.js 22+

HEALTH_DATA_DIR required Required; path to the unzipped Apple Health CSV export created with Simple Health Export CSV on your iPhone.
Other optional settings (2)
MAX_MEMORY_MB optional Optional; DuckDB memory limit in megabytes, default 2048. Raise it for larger exports.
CACHE_SIZE optional Optional; maximum number of cached query results, default 100.
  1. Install and open Simple Health Export CSV on your iPhone.
  2. Select All and choose the time range to export.
  3. Transfer the archive to the computer running your MCP client.
  4. Unzip it and set HEALTH_DATA_DIR to the resulting directory.
  5. In Claude Desktop, add the following to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
"mcpServers": {
"apple-health": {
"command": "npx",
"args": ["-y", "@neiltron/apple-health-mcp"],
"env": {
"HEALTH_DATA_DIR": "/path/to/your/unzipped/health-export"
}
}
}
}

  1. Restart the client after changing its configuration. Other MCP clients can use the same command, arguments, environment, and stdio transport.
claude_desktop_config.json
{
  "mcpServers": {
    "apple-health": {
      "command": "npx",
      "args": ["-y", "@neiltron/apple-health-mcp"],
      "env": {
        "HEALTH_DATA_DIR": "/path/to/your/unzipped/health-export"
      }
    }
  }
}

Shown for Claude Desktop. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "apple-health": {
      "command": "npx",
      "args": [
        "-y",
        "@neiltron/apple-health-mcp"
      ],
      "env": {
        "HEALTH_DATA_DIR": "/path/to/your/unzipped/health-export"
      }
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add apple-health -e HEALTH_DATA_DIR=/path/to/your/unzipped/health-export -- npx -y @neiltron/apple-health-mcp

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

After restarting the MCP client, confirm health_schema, health_query, and health_report appear in the tool list, then call health_schema — returning table names, columns, and sample rows proves the connection works.

Troubleshooting

  1. Verify Node.js is version 22 or newer
  2. Check that HEALTH_DATA_DIR points to the unzipped CSV export directory
  3. Confirm the export was created with Simple Health Export CSV; the native export.xml format is not supported
  4. If you hit a memory error, raise MAX_MEMORY_MB (roughly 1 GiB covers a two-year multi-table export)
  5. Restart the MCP client after changing its configuration
  6. Start with health_schema, since table names depend on the files in your export
  7. When you see duplicate-looking measurements, account for sourceName in queries

Things to try

Once connected, you can ask your AI assistant things like:

  • List the tables and columns in my Apple Health export
  • Query my sleep hours for last month, summarized per day
  • Generate a weekly health report covering activity and heart data
  • How many minutes did I work out each week over the past year?

Tools 3

health_schema read-only
Discover table names, columns, units, and sample rows
health_query read-only
Run a read-only SELECT query with JSON, CSV, or summary output
health_report read-only
Generate a weekly, monthly, or custom health summary

Use cases

Let an AI assistant answer questions about sleep, workouts, activity, and heart data
Explore the Apple Health data model yourself with read-only SQL
Generate weekly, monthly, or custom health summaries
Discover the tables and columns in your export with health_schema

Supported clients

Claude Desktop

Listed from the project's documentation, not tested by this site.

Overview

A local-first MCP server that lets AI assistants answer questions about your sleep, workouts, activity, and heart data from a local CSV export. It queries health data read-only through DuckDB and does not upload the export or make network requests. It requires Node.js 22 or newer and an Apple Health CSV export created with Simple Health Export CSV; the native export.xml format is not currently supported.

Similar servers

BioMCP 75 · B

One binary. One grammar. Evidence from the biomedical sources you already trust.

★ 670 · Tools 11 Compare with this →

Source revision 2fbcf29599a5 Data synced 2026-11-02 Read the FMRS scoring method