
Mirobody MCP Server: Turn Lab Results into Standard Medical Codes
Lets Claude, Cursor and other assistants turn lab results and symptoms into standard medical codes, offline.
Mirobody is an open-source health record project. Its MCP server is a small offline part of it. It maps lab names and units to LOINC and UCUM, and symptoms and diagnoses to ICPC-3, using vocabularies inside the package.
It runs on your computer with uv and Python 3.12. It reads no health record and needs no API key for the five vocabulary tools. The sixth, standardize_report, reads a document with an AI model and needs extra setup. The full Mirobody app has its own, larger MCP link for your own record.
Good for
- Health-data developers who need LOINC and UCUM mapping
- People comparing lab results printed in different units or languages
- Researchers coding symptoms and diagnoses to ICPC-3
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install Mirobody MCP
Claude Code
- 1
Copy this prompt.
Add the Mirobody MCP server to Claude Code. Run this command: claude mcp add mirobody -- uvx --python 3.12 mirobody mcp Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires uv (Python), Python 3.12+.
Read-only mode: All tools are read-only. Skip standardize_report if you do not want documents sent to a model provider.
The command needs the mcp argument and Python 3.12, which the MCP Registry entry also uses. standardize_report additionally needs the mirobody[parse] extra and a model provider key; the other tools work offline without a key.
Built from the package data we hold. Not yet tested by us.
Tools
Codes lab readings
Turns lab or vital-sign readings as printed, in any language, into standard FHIR records with a LOINC code and a unit. The unit helps pick the code, and up to 200 readings go in one call.
Try: “Code this reading: LDL cholesterol 3.2 mmol/L.”
Read ·
standardize_readingClassifies a symptom or diagnosis
Places a complaint or a diagnosis in a person's own words on the ICPC-3 classification. You say whether it is a symptom or a condition, and unplaced words are returned without a code.
Try: “Classify "sore throat" as a symptom.”
Read ·
standardize_complaintReads a lab report file
Reads a lab report as PDF, image, spreadsheet or text and returns every reading as a coded record. It sends the document to the model provider you configured, so it needs the parse extra and a model key.
Try: “Standardize the lab report at /Users/me/labs/june.pdf.”
Files ·
standardize_reportLooks up LOINC codes by name
Looks up LOINC codes for up to 200 test names. A panel name returns the panel code, and a whole family of tests such as a lipid panel is refused.
Try: “Find the LOINC code for 血红蛋白.”
Read ·
resolve_indicatorNormalizes units
Rewrites units as printed, such as mg/dL or 毫摩尔每升, into the standard UCUM form and their measurement family. An empty result means the unit is not recognized.
Try: “Normalize these units: mg/dL, 次/分.”
Read ·
normalize_unitConverts a value between units
Converts one value from one unit to another. Moving between mass and molar concentration needs the LOINC code, and a null answer means the units measure different things.
Try: “Convert 193 mg/dL of total cholesterol to mmol/L.”
Read ·
convert_unit
Read from the source code
Permissions
medium risk · 2 things to watch
Medium risk
It only reads, and five of six tools run offline over the package vocabularies. standardize_report sends a lab report to your configured AI model provider, so avoid it for documents you do not want to share.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
standardize_report sends your document to an AI model provider
It reads a lab report file and sends it to the model provider you configured. Skip that tool for sensitive documents, or use a provider you trust. github.com
standardize_report can read any local file path you give it
It takes a local path readable by the server. Name only the report you mean to share. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | All six tools are marked read-only in the code. |
|---|---|
| Talks to | standardize_report sends the report to the model provider you configure; the module docs say the other tools use no network |
| Sign-in and keys | No credentials for the vocabulary tools. standardize_report needs the parse extra and a model provider key. |
Questions
Is the Mirobody MCP server official?
Yes. It ships inside the thetahealth/mirobody project itself, as the mirobody mcp command, and is listed in the official MCP Registry.
Does it need an API key?
No, not for the five vocabulary tools. Only standardize_report needs the parse extra and a key for a model provider.
Does it read my health record?
No. The offline server reads no database or user record, only the vocabularies in the package. The full Mirobody app has a separate MCP link for your own record.
What does it need installed?
It needs uv and Python 3.12 or later. The install box uses uvx with Python 3.12 and the mcp subcommand, which a plain package name would leave out.
How is it different from the full Mirobody app MCP link?
The README says the full stack serves seven tools scoped to the signed-in person: four read your record and three resolve names and units. This offline server serves the vocabulary tools without a database.
What if it cannot find a code?
It returns the reading without a code and says why. The server instructions tell the assistant to report it as unknown rather than guess.
Information
updated Nov 2, 2026
- Publisher
- Official
- Package
mirobody- Registry
- PyPI
- Transport
- stdio
- Version
- 1.5.9
- License
- Apache-2.0
- Last commit
- Oct 31, 2026
- Open issues
- 3
- Listed in
- Official MCP registry
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 4Hide
- quickstart.md · github.com
- README.md · github.com
- stdio.py · github.com
- server.json · github.com