FHIR MCP Server
MCP server providing seamless access to FHIR APIs for AI tools and healthcare applications
Description from the maker (original English)
Lab results to LOINC codes and UCUM units, symptoms and diagnoses to ICPC-3. Offline, no API key.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"mirobody": {
"command": "uvx",
"args": [
"mirobody",
"mcp"
]
}
}
}Run this in your terminal
claude mcp add mirobody -- uvx mirobody mcpPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"mirobody": {
"command": "uvx",
"args": [
"mirobody",
"mcp"
]
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"mirobody": {
"type": "stdio",
"command": "uvx",
"args": [
"mirobody",
"mcp"
]
}
}
}These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
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 5, 2026
The registry name was verified against the domain thetahealth.ai (the registry checks domain ownership)
Code last changed today
Uses Apache-2.0
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Needs the server’s tool list first; this check starts in the next step
Compared only with servers in this prototype, not the whole registry.
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 today, and the latest version (1.5.10) reached the registry 4 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.
In the same category: FHIR MCP Server, Google Health MCP, Langcare MCP FHIR
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
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
An MCP FHIR server written in Go for EMR systems like Epic and Cerner
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.
Mirror your body in data.
One standard, every source, one complete picture of you — building a lasting record to understand where your health is going.
This open-source edition keeps that record on your own machine: lab reports, wearables and genetic files flow into it, and your AI agent can query it over MCP.
English · [中文](README.zh-CN.md) · [日本語](README.ja.md)
[▶ Live demo](https://chat.mirobody.ai/demo?ref=github-readme&lang=en) · [Try one command](#try-the-engine-with-one-command) · [Open in Codespaces](#try-the-full-app-in-codespaces) · [100% local](#run-everything-100-locally)
Three reports, three names for the same test. One trend, with the file behind every number.
| You want to | Start here | What you need |
|---|---|---|
| Standardize names and units, in a terminal or inside your AI agent | One command | uv; no model or API key |
| Try the full app in your browser | GitHub Codespaces | A GitHub account and your own model API key |
| Keep the app, models and records on your machine | 100% local with Docker | Docker with Compose; 16 GB memory; no API key |
| Keep the app and records on your machine, without Docker | No Docker | Debian or Ubuntu; PostgreSQL 16; Python 3.12; your own model API key |
| Use it on your own records with nothing to run | Try Mirobody in Theta Web, or in the Theta mobile app | An account |
With uv installed, paste this into your terminal:
uvx --python 3.12 mirobody resolve "LDL cholesterol" 血红蛋白 ヘモグロビン "Total Kolesterol" 血脂
No repository clone, Docker, model or API key. uv prepares Python and the package for you; the first run needs a network connection to download them. The resolver then works offline from the bundled vocabulary.
血红蛋白 and ヘモグロビン both resolve to 718-7. 血脂 stays unresolved: it names a category, not one test. The same engine standardizes names and units across the full app.
Give the same engine to your AI agent. In Claude Code:
claude mcp add mirobody -- uvx --python 3.12 mirobody mcp
Your agent can then standardize any name, reading, unit or complaint you paste, on your machine and without a key. Reading a whole report also needs mirobody[parse] and a model key. Other MCP clients take the same command.
→ Use the engine from Python or MCP
Run the web app in your browser with your own model API key. GitHub prepares the environment; you do not need to install Docker or Python on your computer.
you@mirobody.ai, code 111111, on the Email code tab. Ask "How has my cholesterol changed?" The demo holds 2,019 readings across your record and mom@mirobody.ai's, shared with you view-only.demo/upload/ on the Data page to see a new report join the record, or switch to mom's record and ask again.The app and its records run in GitHub's cloud; the model service receives the documents and questions it processes. Use the included synthetic data to explore. Codespaces has usage limits and billing; model usage is billed by your model provider. Stop the codespace when you finish. For complete control on your own machine, use the local route below.
The app, records and models all run on your own machine. No model API key needed. Docker with Compose starts the stack and llama.cpp, with a small answering model and a document reader:
git clone --depth 1 https://github.com/thetahealth/mirobody.git && cd mirobody
COMPOSE_PROFILES=local-cpu ./deploy.sh
Allow 16 GB of memory, at least 8 GB of it for Docker. No GPU is required; on Windows, run the commands in a WSL 2 terminal. The first start needs a network connection to download container images and model weights. If the registry is not reachable from your network, deploy.sh says so and retries through a mirror; DOCKER_MIRROR in .env names your own. After those downloads, document reading, standardization and answers run locally. CPU answers can take minutes; Mac, NVIDIA and Windows options explain how to use your GPU.
Open the app link the script prints. The local models are already selected; sign in with the same demo account above, ask a question or upload a sample. Which model to choose compares the local options.
Prefer Docker with a cloud model? Run ./deploy.sh without a local model profile, then paste your own model key into the printed setup link. The app and records stay on your host; the model service processes your documents and questions.
Chat calculations take the original queried data directly. A cloud model's code runs as JavaScript inside the app, with nothing to set up; a model on your own hardware computes in Python in a local Docker container when the app can reach a Docker daemon. Setup and data flow cover both. Query views provide their built-in statistics without either.
→ Self-host guide · Walkthrough · Deploy on a server
No container, and nothing pulled from a registry. On Debian or Ubuntu, PostgreSQL 16 with pgvector comes from the distribution's own packages and the app runs straight from the checkout. It is the same install the Codespaces path performs:
git clone --depth 1 https://github.com/thetahealth/mirobody.git && cd mirobody
scripts/install_native.sh # PostgreSQL, pgvector, the Python package, a .env scripts/start_native.sh # the worker and the app on port 18060
Open the link it prints and sign in as you@mirobody.ai, code 111111: the demo record is seeded already. A model key from the printed setup link adds document extraction and answers. install_native.sh installs system packages with sudo and writes one sudoers rule for the postgres account, and says so as it runs.
The local models belong to the Docker path, so this one answers through a model service. Everything else matches the row above it in what stays on your machine: the records live in the PostgreSQL you just installed, and a name to a code never leaves the machine.
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.Mirobody does not diagnose or prescribe, and its answers are not medical advice.
| Stage | What it does | Where |
|---|---|---|
| ① Collect | Lab reports, devices, photos, genetic files and journal entries come in from every source; each reading keeps the file it came from. | collect/ |
| ② Standardize | A1c, HbA1c and Glycated Hemoglobin resolve to one code, units to one standard, offline: readings from scattered sources land as clean rows in one table. A name it cannot place stays unresolved. | engine/ · standardize/ |
| ③ Agent | Answers come from tools that query that table, not from the model's memory: trends, comparisons across labs and devices, a chart. Every number traces to its file, so you can check it instead of taking it on trust. | 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 is standardized, step by step · How a reading moves through the pipeline.
<img src="docs/images/care-circle-sharing.svg" alt="Invite a family member; they choose whether you may view or edit their own