Medplum MCP
Securely access and manage FHIR healthcare data stored in Medplum.
Read a Health Access folder of Apple Watch workouts and vitals; write training plans back as files.
Pick the AI app you use, then copy the settings.
Passed 3/3 checks · Runs on your computer · ✓ Commands checked Nov 13, 2026
First: which AI do you use?
Pick your app and the steps appear below.
Works with Claude, with some setup first
Install Node.js on your computer first (one time) · Only the Claude desktop app (Windows or Mac), not the web or phone
One time only; it works for every server that needs Node.js
SettingsDeveloperEdit Config
{
"mcpServers": {
"healthfolder": {
"command": "npx",
"args": [
"-y",
"@reneturcios/healthfolder",
"mcp"
]
}
}
}Use Healthfolder and tell me what you can do for me, then show me one thing✓ If Claude says it is using Healthfolder or shows a Healthfolder tool in the answer, you are connected
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
ChatGPT cannot connect Healthfolder yet
Healthfolder runs on your computer, but ChatGPT can only connect servers that run on the web
A · Use an app that can connect Healthfolder
B · Others in Clinics & health that work with ChatGPT
Picked from the most used in the same category, only ones that connect by address with no key
Works with Claude Code, with some setup first
Install Node.js on your computer first (one time)
One time only; it works for every server that needs Node.js
Mac: press Command+Space and type Terminal · Windows: open PowerShell
claude mcp add --scope user healthfolder -- npx -y @reneturcios/healthfolder mcpYou should see Healthfolder listed as connected
Use Healthfolder and tell me what you can do for me, then show me one thing✓ If Claude Code says it is using Healthfolder or shows a Healthfolder tool in the answer, you are connected
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with Cursor, with some setup first
Install Node.js on your computer first (one time)
One time only; it works for every server that needs Node.js
Use Healthfolder and tell me what you can do for me, then show me one thing✓ If Cursor says it is using Healthfolder or shows a Healthfolder tool in the answer, you are connected
Menu names checked against Cursor’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with VS Code, with some setup first
Install Node.js on your computer first (one time)
One time only; it works for every server that needs Node.js
Use Healthfolder and tell me what you can do for me, then show me one thing✓ If VS Code says it is using Healthfolder or shows a Healthfolder tool in the answer, you are connected
Menu names checked against VS Code’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Claude Code
claude mcp add --scope user healthfolder -- npx -y @reneturcios/healthfolder mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"healthfolder": {
"command": "npx",
"args": [
"-y",
"@reneturcios/healthfolder",
"mcp"
]
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"healthfolder": {
"command": "npx",
"args": [
"-y",
"@reneturcios/healthfolder",
"mcp"
]
}
}
}VS Code (mcp.json)
{
"servers": {
"healthfolder": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@reneturcios/healthfolder",
"mcp"
]
}
}
}These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Based on how this server connects and on each app’s own docs, checked Nov 10, 2026.
Run on your computer in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 14, 2026
The registry name was verified with the GitHub account CloudCorpRecords, which owns the repo
Code last changed 9 days ago
Uses MIT
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Ask, share a tip or report that it does not work. Sorted by what people marked helpful.
No posts yet. Be the first to ask or share.
Posts here are written by users, not the PopNx team.
No reviews yet
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed 9 days ago, and the latest version (0.1.0) reached the registry 9 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js, Docker on your computer.
In the same category: Medplum MCP, Mirobody, Apple Health
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Securely access and manage FHIR healthcare data stored in Medplum.
Local-first Apple Health MCP server for questions about your sleep, workouts and heart data.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Read a Health Access folder of Apple Watch workouts and vitals, and write training plans back into it — as plain files. The folder an app writes from Apple Health (workouts, day files, an index, a profile) is the whole API: this package is a local stdio MCP server plus a CLI over that folder. No account, no network, nothing leaves the machine.
First hit wins:
--dir on the command lineHEALTHACCESS_DIR environment variable (alias TIDE_DIR)dir = "..." in ~/.config/healthaccess/config.toml (the path can be overridden with HEALTHACCESS_CONFIG; zone bounds can also be set there as zones = [133, 146, 158, 169])~/Library/CloudStorage/*, ~/Dropbox, ~/Google Drive, ~/OneDrive*, ~/Box, then ~/Documents. A Health Access folder holds an index.json of schema healthaccess.index.v1 and a workouts/ directory. If discovery finds several, the server refuses to guess and lists them.Run healthfolder --check to print the resolved folder, where it came from, and the zone bounds in effect.
npx -y @reneturcios/healthfolder --check
npx -y @reneturcios/healthfolder list --sport swim --limit 5 npx -y @reneturcios/healthfolder show 7A1C3E90 npx -y @reneturcios/healthfolder vitals --days 14 npx -y @reneturcios/healthfolder summary --weeks 4 npx -y @reneturcios/healthfolder rate 7A1C3E90 7 "legs heavy, breathing fine" npx -y @reneturcios/healthfolder plan push ./s30.json npx -y @reneturcios/healthfolder plan status 2026-10-24T20:22:05Z-s30 npx -y @reneturcios/healthfolder plan list npx -y @reneturcios/healthfolder day 2026-05-14 npx -y @reneturcios/healthfolder days --from 2026-05-01 --to 2026-05-14 --groups heart,sleep npx -y @reneturcios/healthfolder catalog npx -y @reneturcios/healthfolder profile npx -y @reneturcios/healthfolder ecgs
Every command prints pretty JSON. Exit codes: 0 success, 1 domain or IO error, 2 usage error. --dir works on every subcommand.
npx -y @reneturcios/healthfolder mcp
MCP client config:
{
"mcpServers": { "healthfolder": { "command": "npx", "args": ["-y", "@reneturcios/healthfolder", "mcp"] } } }
Add "--dir", " " to args to skip the folder search.
| Tool | What it does |
|---|---|
list_workouts | Workouts from the index (deduplicated, newest first), one summary line each |
get_workout | One workout in full: document, summary, parts text, zones, cardiac cost |
get_vitals | Resting HR, HRV, body mass, sleep, steps, VO2max, blood pressure over the last N days |
training_summary | One entry per ISO week: volume, zones, effort, cardiac cost, rings from day files |
rate_workout | Store the athlete's own effort rating (1–10) in the workout file |
push_plan | Validate a training plan and write plans/ .json for the app to put on the Watch |
get_plan_status | A plan's state: pending, scheduled, failed or cancelled |
list_plans | Every plan with its state and planned distance/time |
get_day | One day file with every Health group it holds |
get_days | Day files in a range (max 366 days), optionally reduced to named groups |
get_catalog | catalog.json plus the export-coverage check |
get_profile | profile.json as written |
list_ecgs | Every ECG summary in ecg/, newest first |
All results are pretty-printed JSON text with floats rounded to one decimal. Malformed arguments are JSON-RPC InvalidParams errors; domain problems (unknown id, failed validation, a refusal) come back as isError results with the reason in plain words.
Two safety rules are built in:
rate_workout only ever stores a number the athlete said. A workout that already carries Apple's own rating (effort_source: "apple") is refused unless the call passes override: true — the refusal names the file, the existing rating, and the remedy, and nothing is written.push_plan reports every validation violation in one message (sport, name length, block/step shape, goal type and value, zone, label length), so a plan can be fixed in one pass.Resources: healthaccess://index (the deduplicated index) and the template healthaccess://workout/{id} (one workout, heart-rate series included). MCP prompts are not implemented in this build.
profile.json: max HR = 208 − 0.7 × age, bounds at 72/79/86/92 % of it (age 34 → [133, 146, 158, 169]). Zone seconds are computed from the heart-rate series: each sample's time until the next sample goes to that sample's zone, only time inside the workout counts, gaps over 60 s count as 60 s. With no bounds known, a file's own legacy zones are shown, marked bounds_source: "file".2026-05-14 Pool swim "S12" · 1200 m · 36:06 · avg HR 129 (max 162) · Z1–2 93% · effort 6/10 (apple) · best FR 100 2:12 → 284 beats/100 m — each segment appears only when its data exists.On initialize, and after tool calls at most once a minute, the server writes mcp/clients/ .json in the folder so the app can show "Connected". The id is the FNV-1a 64 hash of machine name + client name; the file carries the client name/version from the initialize request, the machine name (HEALTHACCESS_MACHINE overrides it), call counts carried over between writes, and the last tool name — never arguments or results. A failed write never fails a tool call. The CLI writes the same file, as client healthfolder-cli, only from the commands that write into the folder anyway (rate, plan push).
docker run -i ghcr.io/cloudcorprecords/healthfolder # stdio MCP server
docker run --rm ghcr.io/cloudcorprecords/healthfolder list --dir /data
Mount the Health Access folder into the container and pass --dir (or set HEALTHACCESS_DIR) so the server can find it.
npm install
npm run build # tsc -> dist/ npm test # tsx --test test/*.test.ts (synthetic folders, no network) npm run dev # run the CLI from source
MIT — Copyright (c) 2026 Rene Turcios.