New:Microsoft Teams Notifications Are Now Available in Socket.Learn more
Get Started

mcp-clinical-reasoner

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mcp-clinical-reasoner

Rule-based drug interactions, dose check, and allergy MCP server (RxNav backend)

pipPyPI
Version
1.0.0
Weekly downloads
14
75%
Maintainers
1
Weekly downloads
 
Created

mcp-clinical-reasoner

Part of fhir-mcp-suite — v1.0.0

An MCP server providing four clinical pharmacology tools backed by the free NLM RxNav REST API and a built-in rule-based reference table. No API key required. No PHI processed.

License

Tools

ToolTransportDescription
lookup_drugRxNav APIResolve drug name or RxNorm CUI → canonical name, RxCUI, drug-class membership, dose reference
check_drug_interactionsRxNav APIDetect drug-drug interactions (DDIs) for 2–10 RxNorm CUIs, sorted by severity
check_doseRule-basedValidate a proposed single dose (mg) against a built-in table of ~20 common drugs
check_allergy_conflictsRule-basedCross-reactivity check against 12 allergen classes using built-in table

Architecture

Claude Desktop / LangGraph agent
          │  MCP (stdio or SSE)
          ▼
 mcp-clinical-reasoner  (:8002 in SSE mode)
    ├── lookup_drug ────────────────► rxnav.nlm.nih.gov/REST
    ├── check_drug_interactions ────► rxnav.nlm.nih.gov/REST
    ├── check_dose ─────────────────► built-in DOSE_TABLE (20 drugs)
    └── check_allergy_conflicts ────► built-in ALLERGEN_CLASSES (12 classes)

All tool calls traced via LangFuse (session-scoped, latency + response bytes).

Built-in Dose Table

Covers 20 common drugs: acetaminophen, ibuprofen, aspirin, naproxen, metformin, lisinopril, atorvastatin, metoprolol, amlodipine, omeprazole, amoxicillin, azithromycin, warfarin, furosemide, sertraline, gabapentin, clopidogrel, hydrochlorothiazide, prednisone, albuterol.

Brand aliases are resolved automatically (e.g. "Tylenol"acetaminophen, "Advil"ibuprofen).

Built-in Allergen Classes

12 classes: penicillin, cephalosporin, sulfonamide, nsaid, macrolide, fluoroquinolone, statin, ace_inhibitor, angiotensin_receptor_blocker, beta_blocker, thiazide_diuretic, tetracycline.

Quick start

# Install (uv workspace from repo root)
uv sync --all-packages

# Run (stdio, default)
uv run mcp-clinical-reasoner

# Run (SSE on port 8002)
MCP_TRANSPORT=sse uv run mcp-clinical-reasoner

Environment variables

VariableDefaultDescription
RXNAV_BASE_URLhttps://rxnav.nlm.nih.gov/RESTRxNav API base URL
RXNAV_TIMEOUT_S30.0HTTP timeout (seconds)
MCP_TRANSPORTstdiostdio or sse
MCP_HOST0.0.0.0SSE bind host
MCP_PORT8002SSE port
LANGFUSE_PUBLIC_KEY(optional)LangFuse tracing
LANGFUSE_SECRET_KEY(optional)LangFuse tracing
LANGFUSE_HOST(optional)LangFuse host
LOG_LEVELINFOLogging level

Claude Desktop configuration

{
  "mcpServers": {
    "clinical-reasoner": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/fhir-mcp-suite",
        "run", "--package", "mcp-clinical-reasoner",
        "mcp-clinical-reasoner"
      ]
    }
  }
}

Tests

# Unit tests (36 tests, no network required)
uv run pytest packages/mcp-clinical-reasoner/tests/ -v -m "not integration and not eval"

# Offline eval (dose + allergy + error validation)
uv run python evals/mcp-clinical-reasoner/run_eval.py --tags dose allergy error

# Full eval suite (requires rxnav.nlm.nih.gov)
uv run python evals/mcp-clinical-reasoner/run_eval.py

Eval results (offline, no network)

Tag setCasesPass rate
error6100%
dose + allergy12100%

Disclaimer

This server is for research and educational purposes only. It does not replace clinical judgement, pharmacist review, or professional medical advice. All dose limits and cross-reactivity rules are from general adult references and must be individualised for each patient.

License

Apache-2.0 — see LICENSE.

Keywords

allergy

FAQs

Related posts