pemr
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pemringest the new lab results for Alice"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
pemr
Personal EMR — a local-first, family-scale medical record framework. Source documents (scanned labs, visit notes, etc.) are retained as-is; a SQLite database is the source of truth for structured data. Deterministic work — ingest, deduplication, query, analysis, and brief-generation — lives in a Python CLI engine wrapped by a thin MCP server, so AI agents call typed tools instead of re-inventing the logic on every request.
⚠️ This repository is framework + documentation only. No personal or medical data lives here. The live database, source scans, generated exports, and backups all reside outside the repo in a local data directory.
.gitignorehard-blocks databases, documents, and thedata/ inbox/ sources/ exports/ backups/dirs as a backstop.
What it does
Ingest without duplication — content-hash on source files (catches re-scans) plus semantic dedup keys on extracted rows (same clinical fact from two documents → one row).
Query fast — canned + ad-hoc reads over a typed schema (labs, meds, procedures, appointments) with a generic
observationscatch-all for the long tail.Generate on demand — master health summary, per-appointment "walk-in readiness" briefs, and a chronological journal, all rendered from the DB so they never drift.
Extend to the whole family — one DB,
person_idon every row; adding a member is one command, not a fork of the tooling.
Full design — schema, dedup algorithm, ingest pipeline, tool surface, backup — in docs/Architecture.md.
Related MCP server: Medical MCP Server
Design decisions
Area | Choice |
Structured store | SQLite (source of truth); source scans retained on disk |
Schema | Hybrid — typed tables + generic |
Multi-person | Single DB, |
Generated docs | Rendered views from the DB (disposable) |
Ingestion | Agent does vision→structure; tools validate + dedup + commit |
Interface | Python CLI engine + thin MCP wrapper |
Dedup | Content-hash (documents) + semantic keys (rows) |
Backup |
|
Status
Design is locked; build proceeds in phases (skeleton → ingest/dedup → query → render → MCP →
backup → care-gap rules) per the Architecture doc. Phase 1 (skeleton) is done: package
layout, migrations/001_init.sql, pemr migrate, pemr person add|list|show, config, CI.
Phase 2 (ingest + two-layer dedup) is done: content-hash blob store + commit-extraction
(pemr ingest), semantic dedup keys with conflict staging (migrations/002_conflict.sql,
pemr review-conflicts), starter analyte/name dictionary. Phase 3 (query layer) is done:
structured reads (pemr query labs|meds|timeline), full-text search over OCR text + record
fields (migrations/003_fts.sql, pemr find), and lab pemr trends — all with --json.
Data / privacy posture
Local-first. The live pemr.db sits on a non-synced local path (WAL sidecars corrupt
under cloud sync); only clean VACUUM INTO snapshots sync to Drive/OneDrive. Private-ish,
not encrypted-at-rest by default — an encrypted-snapshot upgrade is a drop-in later. No
HIPAA/PHI compliance layer and no provider interoperability; this is a personal archive, and
it assists appointment prep and research — it does not give clinical advice.
Framework scaffolding (from the template)
This repo was generated from
meridun/model-repo and carries its
documentation-tier system, token-optimizer hooks, role-based model routing, and the agentic
SDLC pipeline. See docs/Documentation.md and
docs/Development_AgenticSDLC.md. The skill/agent
prefix has been renamed from the template default to pemr-.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/meridun/pemr'
If you have feedback or need assistance with the MCP directory API, please join our Discord server