Problem: After getting genotyped, I wanted plain questions answered with evidence — “Can I take this GLP-1?”, “What does my APOE mean for Alzheimer risk?” — without pasting rsIDs into random chatbots. PharmCAT and similar tools are valuable but not aimed at MCP/LLM workflows; papers are unstructured.
What it is: An open JSON shape for PGx (one file ≈ one gene–drug study, PMID/DOI on every interpretation) plus an MCP server so Claude, Cursor, or any MCP client can load your raw file, query the catalog, and answer in natural language with study-backed reasoning.
Local workflow (privacy-first):
Clone or npx openpgx — raw DNA stays out of git: use the genomes/ folder (gitignored). Supported parsers today: 23andMe .txt and Genera .csv (same convention as in genomes/README.md: drop files there, then point the tool at the path).
In the assistant: e.g. “Upload my genome from genomes/my_file.txt” — parsing stays on your machine.
Ask medication, risk, trait, or supplement questions; answers tie back to the study JSON (and optional full reports).
What ships today (from the repo):
118 curated study files · 109 genes · 219 drug strings indexed (generics + brands + fuzzy/typo-friendly resolution, multilingual prompts)
19 disease-risk conditions · 31 traits
9 MCP tools (upload, medication check, PGx / risk / trait reports, comparisons, supplements, combined report)
Contributing: No code required to add evidence — drop a new JSON under data/pgx/studies/ and PR; the server indexes at runtime.
Install (stdio, local):
npx openpgx
Claude Desktop example:
{ "mcpServers": { "openpgx": { "command": "npx", "args": ["-y", "openpgx"] } } }
Site: https://openpgx.ai · Repo: https://github.com/open-pgx/openpgx · npm: https://www.npmjs.com/package/openpgx
There is also an optional hosted MCP endpoint for people who prefer zero install (data processed server-side with a short session TTL) — for maximum privacy, the local npx path above is the one I use.
I’d especially like feedback on the study JSON schema: we kept it deliberately small so a paper + rsIDs can become one file. What would you add or split differently for real-world use?
Disclaimer: educational / research tooling, not a substitute for a clinician or pharmacist.