
awslabs/mcp9.8k
Turn scattered health data into answers you can trace. Self-hosted AI health data engine for lab reports, wearables and genetics, with a built-in MCP server. Run it with Docker and one LLM key, or keep every model local on llama.cpp.
Turn scattered health data into answers you can trace.
A self-hosted AI health data engine that brings lab reports, wearables and genetic files into one standardized record.
Start with Docker and one model key, or run every model on your own machine.
English · 中文
Three reports, three names for the same test. One trend, with the file behind every number.
Docker with Compose is all the stack needs: no Python, Node.js or GPU. On Windows, run these in a WSL 2 terminal.
git clone --depth 1 https://github.com/thetahealth/mirobody.git && cd mirobody
./deploy.sh
Open the setup link the script prints and paste one model key: OpenRouter, OpenAI, Gemini, Anthropic, DeepSeek, DashScope, or any OpenAI-compatible gateway. The key is kept only after one real request through it works. Postgres, the server, the worker and a synthetic demo record start together.
[email protected], code 111111, on the Email code tab. The demo holds 2,019 readings across two records: yours, and [email protected]'s, which she shares with you view-only.demo/upload/ on the Data page, or switch to mom's record and ask again.From the cloned folder, start the stack with llama.cpp's CPU image beside it:
COMPOSE_PROFILES=local-cpu ./deploy.sh
The script points Mirobody at llama.cpp, which serves a small answering model and a document reader; the setup page has nothing to ask. Allow 16 GB of memory, at least 8 GB of it for Docker, and a one-time download of about 3.7 GB. With no GPU a first answer takes minutes: 2–3 on an Apple-silicon laptop's cores, up to about 15 on a 4-vCPU x86 server. On a Mac, running llama-server natively uses the GPU: about 30 s per answer on a 16 GB Apple-silicon laptop.
→ Self-host guide · Walkthrough · Deploy on a server
headache since last night, BP 150/95, no fever becomes a coded complaint and two coded readings; "no fever" is not logged as a fever.
| Stage | What it does | Where |
|---|---|---|
| ① Collect | Files, devices and journal entries come in; the source is kept, so every reading points back to it. | collect/ |
| ② Translate | A1c, HbA1c and Glycated Hemoglobin resolve to one code, units to one standard, offline. A name it cannot place stays unresolved. | engine/ · translate/ |
| ③ Agent | Ask over the coded record: trends, comparisons across labs and devices, a chart, and the file behind every number. | agent/ |
The model reads documents and reasons; the codes and units come from vocabularies bundled with the package, never from the model. How a reading moves through the pipeline.
Joining a care circle shares nothing by itself. Each member decides whether others may view or edit their own record. A parent who never signs in can be managed by you until they claim the record and choose what you keep. See it in the walkthrough.
Your record lives in a Postgres you run, and nothing here reports usage anywhere. What leaves depends on who reads it:
| With a model key | 100% on this machine | |
|---|---|---|
| Your documents and questions | sent to that model vendor, under its terms | stay here |
| A name to a code, a unit to UCUM (② Translate) | here, from the bundled vocabulary, with no network | the same |
| Model weights | none | downloaded once from Hugging Face |
Device vendors see data only after you link one. Before this reaches a network you do not control, read SECURITY.md: it lists every address the server can call.
| You want | Start here |
|---|---|
| Your record in Claude Code, Codex, Cursor or Gemini CLI | Settings → MCP link, then one line per client |
| Names and units resolved in your own code | pip install mirobody: offline, no key, numpy the only dependency (library guide) |
| Your coding agent taught the workflow | npx skills add thetahealth/mirobody --skill translate-health-data (skills) |
| A new device provider or tool | Drop a file into mirobody/collect/providers/ or mirobody/agent/tools/ (CONTRIBUTING) |
| A hosted API instead | Mirobody Cloud |
Over MCP the stack serves seven tools, each scoped to the signed-in person: four read your record (readings, medications, genotypes, pharmacogenomics) and three resolve names and units.
Try the vocabulary with no key, no network and, with uvx, no install:
uvx --python 3.12 mirobody resolve "LDL cholesterol" 血红蛋白 ヘモグロビン 血脂
from mirobody.engine import resolve, resolve_reading
resolve("血红蛋白").loinc # '718-7' any language, one code
resolve_reading("total cholesterol", "5.0", "mmol/L").loinc # '14647-2' the unit picks the code...
resolve_reading("total cholesterol", "193", "mg/dL").loinc # '2093-3' ...mass, not moles
resolve("中性粒细胞百分比").loinc # '26511-6' Neutrophils/Leukocytes
resolve("血脂").resolved # False a category, not one test
| Claim | Check it |
|---|---|
| 317/317 on the tests an ordinary checkup prints, in English, Chinese, Japanese, Russian and Estonian | test_engine_coverage.py prints the score |
| 330 UCUM units with dimensional analysis, and 316 standard device indicators | Standardization · Device crosswalk |
The package names its vocabulary: mirobody.BUNDLE_VERSION is loinc-2.83+2026.09.17-aacb2c715b56 | python -c "import mirobody; print(mirobody.BUNDLE_VERSION)" |
| Public health-agent benchmarks: ESL-Bench, MedHall-Bench, MedHarm-Bench | mirobody-eval · benchmarks/ |
Mirobody is the engine under Theta Wellness, a live consumer health app.
The most useful contribution is a term the resolver gets wrong. Run mirobody resolve "<term>"; if the answer is wrong or empty, report it or send a fix with a test case. CONTRIBUTING.md has the setup and the checks.
Built on HL7 FHIR, LOINC from the Regenstrief Institute, UCUM, ICPC-3 (WONCA), CPIC, llama.cpp and deepagents, with thanks. Terminology licences: LICENSE-3RD-PARTY.
If Mirobody helped you make sense of a report, a star helps the next person find it.
Documentation · Roadmap · Changelog · Security · AGENTS.md
Apache 2.0 · © 2026 Theta Health

awslabs/mcp9.8k
bethington/ghidra-mcp4.9kGhidra MCP Server — 200+ MCP tools for AI-powered reverse engineering. GUI plugin + headless server, lazy tool loading, convention enforcement, batch operations, Ghidra Server integration, and Docker deployment.
DevOps 与云

IBM/mcp-context-forge4.6kAn AI Gateway, registry, and proxy that sits in front of any MCP, A2A, or REST/gRPC APIs, exposing a unified endpoint with centralized discovery, guardrails and management. Optimizes Agent & Tool calling, and supports plugins.
DevOps 与云

bostrot/wslmanager4kGUI for the Windows Subsystem for Linux — and native Linux/macOS VMs on Mac. Install, back up, move and configure distros without CLI flags; AI assistant with tools, MCP server for agents, remote WSL over SSH.
DevOps 与云

metatool-ai/metamcp2.7k
patrickchugh/terravision1.6kCloud architecture diagrams in both directions: AI prompt or JSON to diagram, diagram to Terraform via MCP server, and Terraform to diagram via CLI or CI/CD. Using Official AWS, Azure and GCP icons.
DevOps 与云