Mirobody
Lab results to LOINC codes and UCUM units, symptoms and diagnoses to ICPC-3. Offline, no API key.
제작자가 쓴 설명(영어 원문)
Local-first CGM MCP for AI agents: Dexcom Developer API + FreeStyle Libre via LibreLink Up.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"wellness-cgm": {
"command": "npx",
"args": [
"-y",
"wellness-cgm-mcp"
]
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add wellness-cgm -- npx -y wellness-cgm-mcp프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"wellness-cgm": {
"command": "npx",
"args": [
"-y",
"wellness-cgm-mcp"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"wellness-cgm": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"wellness-cgm-mcp"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 9일 점검
레지스트리 이름이 GitHub 계정 davidmosiah 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.4.0)은 5개월 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.
같은 카테고리에는: Mirobody, FHIR MCP Server, Langcare MCP FHIR
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:↓ 주간 다운로드i★ 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
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
Wellness CGM MCP
Local-first continuous glucose monitor MCP for AI agents.
Dexcom Developer API. Levels-killer pattern, agent-first, $0.
🩸 Why this exists: Levels charges $199/mo to do exactly this — read your CGM, correlate with meals, flag spikes. wellness-cgm-mcp is the same game as a free local-first MCP. Stelo OTC + Dexcom developer API + your agent + wellness-nourish = the full metabolic loop.
⚡ One-command install — pick your runtime:
- Delx Wellness for Hermes:
npx -y delx-wellness-hermes setup
- Delx Wellness for OpenClaw:
npx -y delx-wellness-openclaw setup
Default is stdio. Optional Streamable HTTP — no session id, JSON responses, loopback only:
npx -y wellness-cgm-mcp@0.7.0 --http
Env: WELLNESS_CGM_HOST, WELLNESS_CGM_PORT, WELLNESS_CGM_TRANSPORT=http.
Local MCP server that exposes CGM data (and synthetic mock data when nothing is configured) to any MCP-aware agent. Two real backends are supported: Dexcom (Developer API, sandbox + production) and FreeStyle Libre (the OTC sensor — Libre 2 / Libre 3) via LibreLink Up. Pick the backend with CGM_PROVIDER; it auto-detects Libre when only Libre credentials are set. Both feed the same ADA time-in-range / GMI / hypo / meal-response engine.
npx -y wellness-cgm-mcp@0.7.0 doctor # see env / mode
npx -y wellness-cgm-mcp@0.7.0 status
The agent now has 10 CGM tools. Without a Dexcom token, every tool returns synthetic readings tagged mock: true — perfect for prototyping.
# 1. Sign up at https://developer.dexcom.com (sandbox is free)
export DEXCOM_ENV=sandbox export DEXCOM_CLIENT_ID=... export DEXCOM_CLIENT_SECRET=... export DEXCOM_REDIRECT_URI=https://your.callback/redirect
npx -y wellness-cgm-mcp@0.7.0 authorize
npx -y wellness-cgm-mcp@0.7.0 exchange
No developer program, no app to build — just the same email/password you use in the LibreLinkUp follower app (the OTC Libre 2 / Libre 3 sensor works). In the LibreLink app, share your readings; in the LibreLinkUp app, accept the invite. Then:
export CGM_PROVIDER=libre # or just set the creds below and let it auto-detect
export LIBRELINKUP_EMAIL=you@example.com export LIBRELINKUP_PASSWORD=...
export LIBRELINKUP_REGION=us # eu (default) | us | de | fr | au | jp ...
npx -y wellness-cgm-mcp@0.7.0 libre-login
Once logged in, every glucose tool (cgm_glucose_now, cgm_daily_summary, cgm_time_in_range, cgm_meal_response, cgm_hypo_events, …) reads from Libre and returns the same ADA TIR / GMI / hypo / meal-response metrics — each response carries a provider field so you always know the source. Without any credentials, everything returns synthetic mock: true data.
LibreLink Up's graph endpoint takes no start/end parameter — it always answers with its own fixed trailing window of roughly 12 hours. Asking for 24h or 72h does not widen it, so on Libre those extra hours simply do not exist.
Every windowed payload therefore reports what it actually covered:
// cgm_daily_summary({ hours: 72 }) on live Libre
{ "window_hours": 72, // what you asked for "hours_covered": 12, // what the numbers below are ACTUALLY computed over "observed_window": { "start": "…", "end": "…", "hours": 12 }, "window_truncated_by_provider": true, "notes": ["LibreLink Up returns ~12h of graph data per read and ignores wider spans; requested 72h, covered 12h. …"] }
Read hours_covered, never the requested hours / window_hours. A GMI (estimated A1C), CV or time-in-range built on 12h is not a 3-day result. For multi-day metrics use Dexcom, whose v3 API takes an explicit start/end and honours the request. Mock mode synthesises the full requested span, so it is never truncated.
The same applies to cgm_hypo_events, which takes an explicit from/to: "no hypoglycemia events" is only a claim about hours_covered. A 3-day question answered from a live Libre read is a 12-hour answer, and the payload says so in hours_covered, observed_window.hours, window_truncated_by_provider and notes. (events_per_day is safe either way — its denominator is the observed span, not the requested one — but the frame around it is not.)
window_truncated_by_provider is structural, not empiricalIt answers *"can this provider cover a span this wide?"* — never *"did this particular read come back short?"*. A sensor applied two hours ago answers cgm_daily_summary({ hours: 12 }) with hours_covered: 2, window_truncated_by_provider: false and an empty notes, because nothing is broken and warning there would be a false alarm. That is deliberate:
An empty `notes` means "no known provider ceiling was hit", not "the window was fully covered".
hours_coveredis the only number that states the real span — compare it againsthours_requestedbefore reporting any window.
| Tool | Purpose |
|---|---|
cgm_agent_manifest | Runtime contract |
cgm_capabilities | Providers, metrics, privacy modes |
cgm_connection_status | env, credentials, mode (live vs mock) |
cgm_privacy_audit | Local storage + outbound destinations |
cgm_data_inventory | Metric catalog + TIR ranges + GMI formula |
| `cgm_glucose_now` | Most recent EGV + trend |
cgm_glucose_window | All EGVs over last N hours (+ hours_covered — see the Libre ~12h limit) |
| `cgm_daily_summary` | Mean / GMI / CV / 2 TIR profiles — over `hours_covered`, not the requested window |
| `cgm_meal_response` | Baseline → peak → return + band |
cgm_authorize_url | Dexcom OAuth URL builder |
| `cgm_hypo_events` | Hypo event detection (ADA Level 1 < 70, Level 2 < 54) — "no events" applies to `hours_covered` only |
| `cgm_libre_status` | FreeStyle Libre (LibreLink Up) config + region + mode — v0.4 |
| `cgm_libre_login` | Log in to LibreLink Up + list followed sensors — v0.4 |
The table omits the shared profile/onboarding/quickstart/demo helpers (
cgm_profile_get,cgm_profile_update,cgm_onboarding,cgm_quickstart,cgm_demo) for brevity — callcgm_agent_manifestfor the full, always-current list.
Agents surface BOTH so the user picks the one that fits their context.
| Peak Δ from baseline | Band |
|---|---|
| < 30 mg/dL | excellent |
| 30-49 | good |
| 50-79 | moderate |
| ≥ 80 | poor |
Combine with wellness-nourish to compute "what did I eat → what happened" automatically.
wellness-nourish: meal at 13:15 (rice + chicken)
↓ wellness-cgm-mcp.cgm_meal_response(meal_time) ↓ { peak: 167, peak_delta: 72, band: "moderate", peak_time_minutes: 45 } ↓ whoop-mcp.recovery: 67% ↓ Agent: "That meal hit a moderate spike (peak +72 mg/dL at 45 min) AND recovery is borderline. Try protein-first next time, or swap white rice for lentils — should drop the peak ~30 mg/dL."
Levels charges $199/mo for this. Here it is, free, local-first, MCP.
DEXCOM_ACCESS_TOKEN / LIBRELINKUP_* stay in env vars; the LibreLink Up auth token is never returned in tool output.mock: true until a provider is configured.Run wellness-cgm-mcp doctor to inspect.
MIT — see LICENSE.
wellness-cgm-mcp is independent open-source software. Dexcom and FreeStyle Libre are trademarks of their respective owners. Neither company is affiliated with or endorses this project.
Same package, two doors. MCP registers tools on stdio/HTTP. The skill can drive the same tools through the CLI when the client has no MCP:
npx -y wellness-cgm-mcp@0.7.0 call cgm_connection_status --json '{}'
Copy skill/SKILL.md into your agent skills dir.
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요