Mirobody
Lab results to LOINC codes and UCUM units, symptoms and diagnoses to ICPC-3. Offline, no API key.
作者提供的说明(英文原文)
Marrow Health: your Apple Health data over MCP, from the free iOS app. Reads, and writes on demand.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"marrow": {
"command": "uvx",
"args": [
"marrow-mcp"
]
}
}
}在终端中运行这条命令
claude mcp add marrow -- uvx marrow-mcp粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"marrow": {
"command": "uvx",
"args": [
"marrow-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"marrow": {
"type": "stdio",
"command": "uvx",
"args": [
"marrow-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日
注册名称已通过域名 skeletonarmy.tech 验证(注册中心会核实域名所有权)
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.4.1)于15天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。
同一分类中有:Mirobody, FHIR MCP Server, Google Health MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Lab results to LOINC codes and UCUM units, symptoms and diagnoses to ICPC-3. Offline, no API key.
MCP server providing seamless access to FHIR APIs for AI tools and healthcare applications
Privacy-first unofficial Google Health API v4 MCP server for health, sleep, activity, HR agents
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
marrow-mcp)Let your AI agents read your own Apple Health data.
Marrow is a free iOS app that tracks 178 health data series - 172 Apple Health types plus its own meal diary and set-by-set weightlifting log. This repo is its self-hosted companion server: one Python file, standard library only, that keeps a SQLite mirror of your data on hardware you own and serves it over the Model Context Protocol so agents can query it 24/7, phone in your pocket.
Nothing here talks to a cloud. Data flows phone → your machine, full stop.
pip install "marrow-mcp[qr]" # [qr] adds segno, which draws the pairing QR
marrow-server --port 8800 --data ./data # prints a pairing URL
Without [qr] the pairing page shows the pairing JSON instead of a code.
or from a clone
python3 marrow_server.py # prints a pairing URL
python3 marrow_server.py --port 8800 --data ./data
or with Docker
docker compose up -d
Open the pairing URL on any screen, then in Marrow: Export, Server MCP, Pair with a server, and scan. From then on the app's background pushes keep the mirror current with the app closed. The app pairs over plain http only on your own networks (a private or tailnet IPv4 address, a .local or .ts.net name, a short LAN name). A public address needs https (--url https://...).
Stop the old server and start the new one on the same --data directory. An existing mirror.sqlite gains the new columns on first start, and the tokens in --data carry over, so the phone stays paired. Sets logged by Marrow 1.4 carry a set_type (work, warmup, failure or drop). Warm-ups are still listed but no longer count toward volume or records, and rows mirrored before the upgrade read as work sets.
The server speaks MCP over Streamable HTTP (JSON-RPC 2.0, protocol version 2025-06-18), authenticated with a bearer token it generates on first run and prints alongside the pairing link.
Claude Code
claude mcp add --transport http marrow \
http:// :8800/mcp \ --header "Authorization: Bearer "
Claude Desktop, one click
Download marrow.mcpb, double-click it, and Claude Desktop installs the extension and asks for the URL and token. No terminal involved. (The bundle is a tiny zero-dependency bridge in mcpb/. It forwards Claude's stdio to your Marrow URL and nothing else.)
Claude Desktop (manual), Cursor, or anything using an `mcp.json`
{
"mcpServers": { "marrow": { "type": "http", "url": "http:// :8800/mcp", "headers": { "Authorization": "Bearer " } } } }
Check it by hand
curl -s http://<server-ip>:8800/mcp \
-H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Thirteen tools, all of them reads. The server also carries write tools (log a meal, a workout and so on), but it lists them only after a phone registers it for write-back, and today only Marrow Connect does that. A self-hosted server paired from the app serves the thirteen reads and nothing an agent can call writes to your health record.
Four of them answer in the app's own terms, scored against your own trailing normal with the same math the app's Home page uses (the day itself excluded), so an agent starts from a read that is already true for you instead of judging a number against the population:
| Tool | Returns |
|---|---|
daily_brief | One day: each key metric with its value and a phrase (normal for you, above your normal, well below your normal), food and water against your targets, last night's sleep, training done, mood and symptoms, and flags worth mentioning |
baselines | Your own normal per metric: mean and spread over the window, the latest value's z and phrase, the 7-day mean and the 90-day trend per month |
what_changed | The recent days against the period before them: what moved and how notable it is for you, food, training, sleep and bedtime shifts, and streams that started or stopped arriving |
data_quality | What the mirror holds and how fresh it is: per metric the latest day, coverage, cadence, sources and whether it has gone stale, plus diary, sleep and training coverage and when the phone last synced |
The nine raw reads:
| Tool | Returns |
|---|---|
health_summary | Recent days across activity, heart, sleep and nutrition |
list_metrics | Every metric in the mirror, with units and coverage |
metric_daily | Daily values for any metric, up to 400 days |
metric_samples | Raw records with timestamps and source devices |
workouts | Workouts from every source: activity, start, end, duration and source |
nutrition_log | The meal diary: every logged food with full nutrient detail, by day |
strength_log | Every lifting set with its set type and estimated 1RM, per-exercise progression, and volume per muscle group (warm-ups left out) |
sleep_log | One night per wake day: bedtime, wake time, hours asleep, minutes per stage |
symptoms_and_mood | Symptoms with their severity, and State of Mind entries with valence, feelings and what they were about |
Every read takes days back from the phone's today, or from and to on the phone's calendar. metric_samples pages with before (the start of the last record you have). Tools with an output schema also answer with structuredContent.
Four prompts come with the server (how_am_i_doing, weekly_review, doctor_prep, log_from_text) and four resources (marrow://today, marrow://metrics, marrow://targets, marrow://quality), for the clients that show them.
Metric keys: list_metrics shows Apple's short names (active_energy_burned), and the tools also accept the app's own keys (active_energy, heart_rate_variability), so an agent moved over from the phone keeps its vocabulary.
Then ask your agent things like *"how did my sleep change once I started training in the mornings?"* and let it go and look.
/plugin marketplace add MarrowHealth/marrow-mcp then /plugin install marrow-health@marrow. It adds the Marrow Connect server and four commands (/marrow-health:how-am-i-doing, weekly-review, doctor-prep, log) plus a skill that knows which tool answers what.Both Claude (Pro/Max, US) and ChatGPT now read Apple Health natively. Use them if that is all you need. They stop where this server starts:
| Claude / ChatGPT connector | Marrow + this server | |
|---|---|---|
| Where it works | The iOS app only | Claude Code, Claude Desktop, Cursor, OpenClaw, Hermes, any MCP client, on any machine |
| When it works | While you are in the chat on the phone | 24/7, phone in your pocket, from your own box |
| What the model sees | Raw HealthKit numbers | Daily values reconciled against Apple's own totals, meal diary, set-by-set lifts |
| Where the data lives | Their cloud, per conversation | SQLite on hardware you own |
| Cost | Subscription | Free, MIT |
OpenClaw / Hermes / any agent on a home machine. Point the agent's MCP config at the server URL with the bearer token, exactly as in the mcp.json block above. Reach it from outside the LAN with tailscale serve --bg --https=8800 http://127.0.0.1:8800 and use the tailnet URL.
This server is one of the doors on Marrow's Export tab, and you do not need it to give agents access:
http:// :21212/mcp, answering while the app is running. Seven of the raw reads above, zero extra hardware.All four are in the free tier. Setup for all of them: https://marrowhealthapp.com/guides.
Marrow Connect is the hosted Pro path: Marrow runs the mirror, and ChatGPT, Claude or Gemini read it with the phone asleep and nothing to run. It is the only door that can log for you, once you turn on Allow AI write in the app. https://marrowhealthapp.com/connect
tailscale serve, Caddy, or an equivalent so the transport is HTTPS and the device is authenticated before the bearer token is ever presented.--data: .app-token for the phone's pushes and .mcp-token for agents. Rotating one does not disturb the other.Marrow is on the App Store, iOS 17+, and requires Apple Health. Get it on the App Store.
The iOS app is closed source. This server is not, because you should be able to read anything you are asked to run on your own hardware.
Listed in the official MCP registry as tech.skeletonarmy/marrow, verified by DNS on skeletonarmy.tech.
mcp-name: tech.skeletonarmy/marrow
MIT. See LICENSE.