{
  "markdown": "# oak-longevity-mcp-server\n\n> An [MCP](https://modelcontextprotocol.io) server for **longevity & metabolic medicine** — a medication catalog, evidence-based dosing protocols, contraindication screening, drug-interaction checks, required baseline labs, ongoing monitoring plans, FDA/compounding regulatory status, and patient-intake pathway suggestions across **35 compounds**.\n\nBuilt for [Oak Longevity Institute](https://www.oaklongevity.com) by Keith Schmidt, MD — a telemedicine longevity practice in Illinois. This server makes the practice's clinical reference data available to any MCP client (Claude Desktop, Claude Code, or your own agent), and is structured for a free/premium monetization model.\n\n> ⚠️ **Clinical decision-support, not medical advice.** All output must be reviewed by a licensed clinician. **Many longevity compounds here are used off-label, are compounded, or are investigational/not FDA-approved.** Dosing, contraindication, interaction, lab, and regulatory data change frequently — always verify against current primary literature, FDA/DEA resources, and your state board of pharmacy.\n\n---\n\n## What it does\n\n| Tool | Tier | Description |\n|---|---|---|\n| `get_medication_list` | **Free** | Full medication catalog grouped by category, with ids, drug class, and DEA/Rx schedule. |\n| `get_medication_details` | **Free** | Mechanism, formulations, who it's for / not for, and schedule for one medication. |\n| `get_fda_status` | **Free** | FDA approval status, DEA schedule, 503A/503B compounding considerations, approved uses, off-label notes. |\n| `get_dosing_protocol` | Premium | Evidence-based dosing: route, start, titration, maintenance, max, evidence grade, pearls — by indication. |\n| `get_required_labs` | Premium | Recommended baseline labs/assessments **before** prescribing, grouped by panel with rationale. |\n| `get_monitoring_plan` | Premium | Ongoing monitoring schedule — what to check, interval, and action/threshold. |\n| `check_contraindications` | Premium | Screens a medication against a patient profile (age, sex, conditions, meds) → **PASS / FLAG / REJECT** with the triggering findings. |\n| `check_drug_interactions` | Premium | Pairwise interaction warnings across a medication list, ranked by severity, with mechanism + management. |\n| `screen_patient_intake` | Premium | Maps a patient's symptoms/goals to suggested treatment pathways with first-line + adjunct medications and workup. |\n\nThe eight categories: **Weight Management, Peptide Therapy, Hormone Optimization, Longevity & Metabolic, Sexual Health, Immune & Inflammation, Hair Restoration, Dermatology.**\n\nEvery tool accepts a medication as a **name, id, or brand/alias** (e.g. `\"Tirzepatide\"`, `\"tirzepatide\"`, `\"Mounjaro\"`, or `\"copper peptide\"` → GHK-Cu). Unrecognized queries return \"did you mean\" suggestions.\n\n### Compounds covered\n\nSemaglutide · Tirzepatide · Liraglutide · Naltrexone/Bupropion · BPC-157 · Sermorelin · CJC-1295/Ipamorelin · Ipamorelin · Tesamorelin · Thymosin Beta-4 (TB-500) · Testosterone (cypionate & cream) · Estradiol · Progesterone · DHEA · Anastrozole · Pregnenolone · hCG · NAD+ · Metformin · Rapamycin · Berberine · Resveratrol · NMN · PT-141 · Oxytocin · Tadalafil · Sildenafil · Thymosin Alpha-1 · Glutathione · Low-Dose Naltrexone · Finasteride · Oral Minoxidil · GHK-Cu · Tretinoin.\n\n---\n\n## Install & build\n\n```bash\ngit clone <repo> longevity-mcp-server\ncd longevity-mcp-server\nnpm install\n\nnpm run build             # compile TypeScript → dist/ and copy data\nnpm run smoke             # end-to-end test (optional)\n```\n\nThe clinical data ships as JSON in `src/data/` and is copied into `dist/data/` at build.\n\n---\n\n## Use with Claude Desktop\n\nAdd to `claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"oak-longevity\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/longevity-mcp-server/dist/index.js\"],\n      \"env\": { \"LONGEVITY_LICENSE_KEY\": \"OAK-XXXX-XXXX-XXXX\" }\n    }\n  }\n}\n```\n\nRestart Claude Desktop. You can then ask things like:\n\n- *\"List the peptide therapy options.\"*\n- *\"What's the dosing protocol for tirzepatide for weight loss?\"*\n- *\"Can I prescribe tadalafil to a 60-year-old man taking nitroglycerin?\"*\n- *\"Check interactions between rapamycin, simvastatin, and clarithromycin.\"*\n- *\"What baseline labs do I need before starting testosterone?\"*\n- *\"A patient reports fatigue, low libido, and wants to lose weight — what pathways fit?\"*\n\nSee [`examples/claude_desktop_config.json`](examples/claude_desktop_config.json) for an `npx` variant.\n\n## Use with Claude Code\n\n```bash\nclaude mcp add oak-longevity -- node /absolute/path/to/longevity-mcp-server/dist/index.js\n```\n\n## Inspect locally\n\n```bash\nnpm run inspect          # opens the MCP Inspector against the stdio server\n```\n\n---\n\n## Remote hosting (HTTP / SSE)\n\nThe same tools are served over **Streamable HTTP** for remote deployment (MCPize, a VPS, or serverless):\n\n```bash\nnpm run build\nPORT=3000 node dist/http.js\n# → POST http://localhost:3000/mcp     (GET /health for a liveness check)\n```\n\nThe HTTP transport is **stateless and multi-tenant**: the per-customer license key is read from a request header, so a single deployment can serve many customers.\n\n```\nX-Oak-License: OAK-XXXX-XXXX-XXXX        (preferred)\nAuthorization: Bearer OAK-XXXX-XXXX-XXXX (also accepted)\n```\n\n---\n\n## Monetization & licensing\n\nThe server has a built-in **free / premium** split designed to be wired to a billing provider (Stripe, MCPize) with minimal change.\n\n- **Free tier:** `get_medication_list`, `get_medication_details`, `get_fda_status` — the catalog and regulatory reference.\n- **Premium tier:** the clinical decision-support engine — dosing protocols, baseline labs, monitoring plans, contraindication screening, drug-interaction checks, and intake pathway suggestions.\n\nPremium tools remain *discoverable* (they appear in `tools/list` so clients can advertise the upgrade), but calling one without a valid entitlement returns an upgrade prompt instead of data.\n\n### Entitlement resolution\n\nConfigured via environment variables (stdio) or request headers (HTTP):\n\n| Variable | Purpose |\n|---|---|\n| `LONGEVITY_LICENSE_KEY` | The customer's license key. |\n| `LONGEVITY_TIER` | Force `premium` or `free` (self-hosted / enterprise override). |\n| `LONGEVITY_VALID_KEYS` | Comma-separated allowlist of keys treated as valid premium (manual provisioning / testing). |\n| `LONGEVITY_LICENSE_VERIFY_URL` | Optional HTTP endpoint for **remote** key verification. When set, keys are validated against this service instead of locally. |\n\nA locally-issued key matches the format `OAK-XXXX-XXXX-XXXX`. For production, point `LONGEVITY_LICENSE_VERIFY_URL` at your billing webhook; it should accept `{ \"key\": \"...\" }` and return `{ \"valid\": true, \"tier\": \"premium\", \"expiresAt\": \"...\" }`.\n\nThe verification layer lives entirely in [`src/licensing.ts`](src/licensing.ts) behind a `LicenseProvider` interface — swap the implementation without touching any tool.\n\n---\n\n## Project structure\n\n```\nlongevity-mcp-server/\n├── src/\n│   ├── index.ts          # stdio entry point (Claude Desktop / Code)\n│   ├── http.ts           # Streamable HTTP entry point (remote hosting)\n│   ├── server.ts         # builds the MCP server + tier gating\n│   ├── licensing.ts      # free/premium entitlement (pluggable)\n│   ├── data.ts           # data loading + medication resolver\n│   ├── types.ts          # clinical data types\n│   ├── tools/            # one file per MCP tool (9 tools)\n│   └── data/             # clinical data (JSON)\n│       ├── categories.json\n│       ├── medications.json\n│       ├── dosing.json\n│       ├── contraindications.json\n│       ├── interactions.json\n│       ├── labs.json\n│       ├── fda.json\n│       └── pathways.json\n├── scripts/\n│   ├── copy-assets.mjs   # copy JSON into dist/ at build\n│   └── smoke-test.mjs    # end-to-end MCP client/server test\n├── examples/\n│   └── claude_desktop_config.json\n├── package.json\n├── tsconfig.json\n├── LICENSE\n└── README.md\n```\n\n## Data model\n\nThe clinical data is hand-curated from standard pharmacology references and longevity-medicine practice (Endocrine Society / Menopause Society / ISSWSH guidance, FDA labeling and shortage/bulk-substance lists, and the peer-reviewed literature for off-label and investigational compounds). Each dataset is keyed by medication id:\n\n- **medications.json** — class, mechanism, formulations, candidate profile, schedule.\n- **dosing.json** — per-indication route / start / titration / maintenance / max / evidence grade.\n- **contraindications.json** — boxed warnings, absolute & relative contraindications (with machine-matchable condition keywords), cautions, pregnancy.\n- **interactions.json** — per-drug interaction rules (severity, effect, management).\n- **labs.json** — baseline panels and ongoing monitoring schedule.\n- **fda.json** — approval status, schedule, 503A/503B compounding considerations, approved uses, references.\n- **pathways.json** — 15 intake pathways mapping symptoms/goals → first-line + adjunct medications.\n\n> Because regulatory status (especially FDA drug-shortage listings and 503A bulk-substance eligibility for peptides) shifts frequently, treat `get_fda_status` output as a starting point and confirm against the current FDA database before compounding.\n\n---\n\n## License\n\n[MIT](LICENSE) © 2026 Keith Schmidt, MD — Oak Longevity Institute\n\nThe clinical reference content is provided for educational and decision-support\npurposes only and does not constitute medical advice. See the disclaimer in [LICENSE](LICENSE).\n",
  "bytes": 9630,
  "sha": "c433a76f8467062f16c04898ca5521f498cb9526e7d7b013bf82d8473c88e946",
  "repo_slug": "goingparabolic/oak-longevity-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_goingparabolic_oak_longevity_m_77a9721e/readme"
}