Skip to main content

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

Tool Transport Description
lookup_drug RxNav API Resolve drug name or RxNorm CUI → canonical name, RxCUI, drug-class membership, dose reference
check_drug_interactions RxNav API Detect drug-drug interactions (DDIs) for 2–10 RxNorm CUIs, sorted by severity
check_dose Rule-based Validate a proposed single dose (mg) against a built-in table of ~20 common drugs
check_allergy_conflicts Rule-based Cross-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

Variable Default Description
RXNAV_BASE_URL https://rxnav.nlm.nih.gov/REST RxNav API base URL
RXNAV_TIMEOUT_S 30.0 HTTP timeout (seconds)
MCP_TRANSPORT stdio stdio or sse
MCP_HOST 0.0.0.0 SSE bind host
MCP_PORT 8002 SSE port
LANGFUSE_PUBLIC_KEY (optional) LangFuse tracing
LANGFUSE_SECRET_KEY (optional) LangFuse tracing
LANGFUSE_HOST (optional) LangFuse host
LOG_LEVEL INFO Logging 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 set Cases Pass rate
error 6 100%
dose + allergy 12 100%

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.

Metadata

Release files for mcp-clinical-reasoner 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcp-clinical-reasoner 1.0.0
File Size Uploaded Provenance Actions
mcp_clinical_reasoner-1.0.0.tar.gz 18.1 kB With provenance Details for mcp_clinical_reasoner-1.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for mcp-clinical-reasoner 1.0.0
File Interpreter ABI Platform Actions
mcp_clinical_reasoner-1.0.0-py3-none-any.whl Python 3 none any Details for mcp_clinical_reasoner-1.0.0-py3-none-any.whl

Total release size: 39.1 kB

Release files / mcp_clinical_reasoner-1.0.0.tar.gz

Download URL mcp_clinical_reasoner-1.0.0.tar.gz
Size 18.1 kB
Tags Source
SHA-256 checksum
How to use checksums
fcafdecb22b0afdd9c5fc40f68359b832085610559cec86905e9d5daadbe9b23
BLAKE2b-256 checksum
How to use checksums
9cda7aa001cf710e1c638b30a0c6903a279fd7c34e444c0ffb4eaaed6339c4b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 20, 2026.

Transparency log

Release files / mcp_clinical_reasoner-1.0.0-py3-none-any.whl

Download URL mcp_clinical_reasoner-1.0.0-py3-none-any.whl
Size 21.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ffafa5a1678f2ab1395e67ae6e51ed619dc45cf79d42149a378780ce0eadc1fe
BLAKE2b-256 checksum
How to use checksums
5811cdb79ff2016dbb1c42badc57a3d08f42ff9fde1b6afe5e652dcfe5c99a16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 20, 2026.

Transparency log

Security for mcp-clinical-reasoner 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for mcp_clinical_reasoner-1.0.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page