mcp-clinical-reasoner について
mcp-clinical-reasonerは、研究・教育用途の臨床薬理チェック向けMCPサーバーです。RxNavの検索と組み込みの用量・アレルギー参照表を組み合わせ、PHIは処理しません。
主な機能
- 01薬剤名とRxNorm CUIの解決
- 022~10剤の相互作用チェック
- 03一般的な20薬剤の用量確認
- 0412アレルゲンクラスの交差反応チェック
- 05LangFuseによるツール呼び出しの記録
活用シーン
- 01薬剤間相互作用の確認
- 02基準範囲に照らした用量案の確認
- 03薬剤選択におけるアレルギー懸念のスクリーニング
MCP 対応
stdioまたはSSEで、4つの臨床薬理ツールをMCPクライアントに公開します。2つのツールはNLM RxNav REST APIを使い、用量とアレルギーの確認には組み込みのルール表を使います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-clinical-reasoner
fhir-mcp-suite の一部 — v1.0.0
無料の NLM RxNav REST API と組み込みのルールベース参照テーブルを利用する、 4 つの臨床薬理学ツールを提供する MCP サーバーです。API キーは不要です。PHI は処理されません。
ツール
| ツール | トランスポート | 説明 |
|---|---|---|
lookup_drug | RxNav API | 薬剤名または RxNorm CUI を解決 → 正式名称、RxCUI、薬剤クラスへの該当情報、用量参照 |
check_drug_interactions | RxNav API | 2~10 個の RxNorm CUI を対象に薬物間相互作用(DDI)を検出し、重症度順に並べ替えます |
check_dose | ルールベース | 約 20 種類の一般的な薬剤を記載した組み込みテーブルに基づき、提案された単回用量(mg)を検証します |
check_allergy_conflicts | ルールベース | 組み込みテーブルを使用し、12 種類のアレルゲンクラスとの交差反応性を確認します |
アーキテクチャ
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)
すべてのツール呼び出しは LangFuse でトレースされます(セッション単位で記録。レイテンシとレスポンスのバイト数を含みます)。
組み込み用量テーブル
一般的な 20 種類の薬剤を網羅しています:acetaminophen、ibuprofen、aspirin、naproxen、 lisinopril、atorvastatin、metoprolol、amlodipine、omeprazole、amoxicillin、 azithromycin、warfarin、furosemide、sertraline、gabapentin、clopidogrel、 hydrochlorothiazide、prednisone、albuterol、metformin。
ブランド名の別名は自動的に解決されます(例:"Tylenol" → acetaminophen、
"Advil" → ibuprofen)。
組み込みアレルゲンクラス
12 種類のクラス:penicillin、cephalosporin、sulfonamide、nsaid、macrolide、 fluoroquinolone、statin、ace_inhibitor、angiotensin_receptor_blocker、 beta_blocker、thiazide_diuretic、tetracycline。
クイックスタート
# 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
環境変数
| 変数 | デフォルト | 説明 |
|---|---|---|
RXNAV_BASE_URL | https://rxnav.nlm.nih.gov/REST | RxNav API のベース URL |
RXNAV_TIMEOUT_S | 30.0 | HTTP タイムアウト(秒) |
MCP_TRANSPORT | stdio | stdio または sse |
MCP_HOST | 0.0.0.0 | SSE のバインドホスト |
MCP_PORT | 8002 | SSE ポート |
LANGFUSE_PUBLIC_KEY | (任意) | LangFuse トレース |
LANGFUSE_SECRET_KEY | (任意) | LangFuse トレース |
LANGFUSE_HOST | (任意) | LangFuse ホスト |
LOG_LEVEL | INFO | ログレベル |
Claude Desktop の設定
{
"mcpServers": {
"clinical-reasoner": {
"command": "uv",
"args": [
"--directory", "/path/to/fhir-mcp-suite",
"run", "--package", "mcp-clinical-reasoner",
"mcp-clinical-reasoner"
]
}
}
}
テスト
# 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
評価結果(オフライン、ネットワーク接続なし)
| タグセット | ケース | 合格率 |
|---|---|---|
| error | 6 | 100% |
| dose + allergy | 12 | 100% |
免責事項
このサーバーは研究および教育目的のみで使用するものです。臨床的判断、薬剤師による確認、 または専門的な医療上の助言に代わるものではありません。 用量制限と交差反応性のルールは、一般的な成人向けの参照情報に基づいており、 患者ごとに個別化する必要があります。
ライセンス
Apache-2.0 — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。