mcpField
M
mcp-clinical-reasoner

mcp-clinical-reasoner

Local
github.com/pcmedsingeHealth0Updated 19w ago

About mcp-clinical-reasoner

mcp-clinical-reasoner is an MCP server for clinical pharmacology checks, intended for research and educational use. It combines RxNav lookups with built-in dose and allergy reference tables, and does not process PHI.

Key features

  1. 01Resolve drug names and RxNorm CUIs
  2. 02Check interactions across 2–10 drugs
  3. 03Validate doses for 20 common drugs
  4. 04Check cross-reactivity across 12 allergen classes
  5. 05Trace tool calls with LangFuse

Use cases

  1. 01Reviewing possible drug-drug interactions
  2. 02Checking a proposed dose against reference ranges
  3. 03Screening medication choices for allergy conflicts

MCP support

It exposes four clinical pharmacology tools to MCP clients over stdio or SSE. Two use the NLM RxNav REST API, while dose and allergy checks use built-in rule tables.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"pcmedsinge-mcp-clinical-reasoner": {
"command": "uvx",
"args": [
"mcp-clinical-reasoner"
]
}
}
}
Run commanduvx mcp-clinical-reasoner

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypimcp-clinical-reasoner1.0.0

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

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.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.