Skip to main content
Glama
README.md
# MedMemory MCP

[![PyPI version](https://img.shields.io/pypi/v/medmemory-mcp)](https://pypi.org/project/medmemory-mcp)
[![Python 3.12+](https://img.shields.io/pypi/pyversions/medmemory-mcp)](https://pypi.org/project/medmemory-mcp)
[![License: MIT](https://img.shields.io/github/license/priyanshugoel24/medmemory-mcp)](LICENSE)
[![Downloads](https://img.shields.io/pypi/dm/medmemory-mcp)](https://pypi.org/project/medmemory-mcp)
[![Glama](https://glama.ai/mcp/servers/badge/priyanshugoel24/medmemory-mcp)](https://glama.ai/mcp/servers/priyanshugoel24/medmemory-mcp)

Privacy-first personal health record MCP server — store medical documents locally with AES-256 encryption and query with Claude.

MedMemory lets you ingest prescriptions, lab reports, and discharge summaries into an encrypted local database, then ask Claude questions about your health history in natural language. Your data never leaves your machine.

## Demo

[![MedMemory Demo](https://img.shields.io/badge/▶_Watch_Demo-YouTube-red)](https://youtube.com)

## Features

- **8 MCP tools** — medications, lab trends, drug interactions, vaccination status, visit history, allergies, health summary, document ingestion
- **Privacy-first** — AES-256 encrypted SQLite database, nothing sent to cloud storage
- **Gemini Vision** — reads handwritten prescriptions and scanned PDFs natively
- **Drug interaction checker** — real-time OpenFDA API lookup against your current medication list
- **WHO vaccination schedule** — cross-references your records and flags overdue vaccines
- **Companion web UI** — 6-page Next.js dashboard at [medmemory-ui.vercel.app](https://medmemory-ui.vercel.app)
- **Works with Claude Desktop and Cursor**

## Quick Start

```bash
pip install medmemory-mcp
medmemory-setup
```

Then add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "medmemory": {
      "command": "medmemory-server"
    }
  }
}
```

Restart Claude Desktop. MedMemory is ready.

## Try the Hosted Demo

No installation needed — connect to the Railway demo server with synthetic patient data:

```json
{
  "mcpServers": {
    "medmemory-demo": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://web-production-ba446.up.railway.app/sse"]
    }
  }
}
```

## Tools

| Tool | Description | Example prompt |
|------|-------------|----------------|
| `ingest_health_document` | Parse any medical PDF or image into the DB | "Ingest this prescription: /path/to/rx.pdf" |
| `get_current_medications` | Return active medication list | "What medications am I on?" |
| `get_lab_trend` | Historical readings for any lab marker | "Show me my HbA1c trend" |
| `get_visit_history` | Doctor visits with specialty filter | "What did my cardiologist say?" |
| `get_vaccination_status` | Cross-reference WHO schedule, flag gaps | "Am I up to date on vaccines?" |
| `check_drug_interaction` | OpenFDA lookup against your med list | "Is Ibuprofen safe with my medications?" |
| `get_allergies` | Return recorded allergies | "What allergies do I have on record?" |
| `generate_health_summary` | Printable one-pager for new doctors | "Generate my health summary" |

## Privacy Architecture

| What | Where it goes |
|------|--------------|
| Your health records | Local encrypted SQLite only |
| Encryption key | Your machine only, never transmitted |
| Document text during ingestion | Gemini API (transient, not stored) |
| Drug name during interaction check | OpenFDA API only |
| Tool call results | Anthropic (same as any Claude conversation) |

**Verify the encryption yourself:**

```bash
xxd ~/medmemory.db | head -3
# Should show random bytes — not "SQLite format 3"
```

See [PRIVACY.md](PRIVACY.md) for full details.

## Web UI

Live at [medmemory-ui.vercel.app](https://medmemory-ui.vercel.app)

6 pages: Dashboard · Upload · Medications · Lab Results · Timeline · Health Summary

## Development

```bash
# Clone and install
git clone https://github.com/priyanshugoel24/medmemory-mcp
cd medmemory-mcp
uv sync

# Set up environment
cp .env.example .env
# Add GEMINI_API_KEY, OPENFDA_API_KEY, MEDMEMORY_DB_KEY

# Seed test data
uv run seed_data.py

# Run MCP server in dev mode
uv run mcp dev medmemory/server.py

# Run FastAPI bridge
uv run uvicorn medmemory.api:app --reload --port 8000

# Run Next.js UI
cd ui && npm run dev
```

## Project Structure

TDQS

A4/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: drug interaction checking, health summary generation, allergies, medications, lab trends, vaccinations, visit history, and document ingestion. No two tools overlap in functionality, making it easy for an agent to select the correct one.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_allergies, generate_health_summary, ingest_health_documents). The verbs are appropriately descriptive and uniform, with no mixing of styles.

Tool Count5/5

With 8 tools, the server is well-scoped for a personal health record assistant. Each tool provides a distinct value, and the count is neither too thin nor overwhelming for the domain.

Completeness4/5

The tool set covers core health record operations: retrieving medications, allergies, vaccinations, lab trends, and visit history, plus drug interaction checks and document ingestion. Missing are update or delete capabilities, but these are likely out of scope for a retrieval-focused assistant.

Maintenance

ActivityInactive
ResponsivenessNo issues