Skip to main content
Glama
fc0web

med-lit-mcp

by fc0web
README.md
# med-lit-mcp

医療者の「調べもの」の時間を削るための MCP サーバです。PubMed・臨床試験・医薬品情報・診療ガイドライン・診療報酬マスターを、Claude から直接引けるようにします。

米国の調査では、医師は診療1時間あたり 1.5〜2時間 を事務と記録に費やしています。その一部が文献・添付文書・制度の確認です。このサーバはそこを狙っています。

---

## このサーバがしないこと

**本ソフトウェアは医療機器プログラム(SaMD)ではありません。** 薬機法上の該当性は「寄与度(医学的判断への影響の大きさ)」と「リスク(誤作動時の危害)」で判断されます。本サーバは一次情報の所在を示すだけで医学的な判断を行わないため、非該当の範囲に留まります。

設計上、次のことは**しません**。

- 診断名の提示・鑑別診断の列挙
- 治療方針・薬剤選択・投与量の推奨
- 検査値や画像からの所見判定
- 抄録や添付文書の要約・言い換え(原文のまま返します)

返すのは **出典と原文だけ** です。判断は医療者が行ってください。

この方針はコードで担保しています。`src/med_lit_mcp/guard.py` に禁止表現のパターンを置き、サーバが自ら生成する文(ツール説明・注記・エラーメッセージ)に判断を示唆する表現が混入していないことをテストで検査しています。

## 扱うデータ

**患者の個人情報は一切扱いません。** 外部へ送信するのは検索キーワードだけです。通信先は次の4ホストに限定され、それ以外への通信は例外を投げます(`http.py` の `ALLOWED_HOSTS`)。

| ホスト | 用途 |
|---|---|
| `eutils.ncbi.nlm.nih.gov` | PubMed(NCBI E-utilities) |
| `clinicaltrials.gov` | ClinicalTrials.gov API v2 |
| `rest.kegg.jp` | KEGG DRUG(医薬品情報) |
| `shinryohoshu.mhlw.go.jp` | 診療報酬情報提供サービス(マスター) |

取得結果はローカルの SQLite にキャッシュされます(既定 `~/.cache/med-lit-mcp/`)。診療報酬マスターを取り込めば、その検索はネットワークなしで動きます。

## インストール

```bash
uvx --from git+https://github.com/fc0web/med-lit-mcp med-lit-mcp
```

または clone して:

```bash
git clone https://github.com/fc0web/med-lit-mcp
cd med-lit-mcp
uv sync
uv run med-lit-mcp
```

### Claude Desktop / Claude Code への登録

`claude_desktop_config.json`(Claude Desktop)または `.mcp.json`(Claude Code)に追記します。

```json
{
  "mcpServers": {
    "med-lit": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/fc0web/med-lit-mcp", "med-lit-mcp"],
      "env": {
        "NCBI_EMAIL": "you@example.com"
      }
    }
  }
}
```

Claude Code なら1行で登録できます。

```bash
claude mcp add med-lit -- uvx --from git+https://github.com/fc0web/med-lit-mcp med-lit-mcp
```

## ツール

| ツール | 内容 |
|---|---|
| `search_pubmed` | 文献検索。著者・雑誌・年・研究デザイン(RCT / メタ解析 / システマティックレビュー等)で絞り込み |
| `fetch_pubmed_abstract` | PMID から抄録の全文を取得。構造化抄録はセクションごとに保持 |
| `search_clinical_trials` | ClinicalTrials.gov 検索。疾患・介入・実施状況・相・国で絞り込み |
| `find_guideline` | 診療ガイドライン探索。PubMed の `guideline[pt]` 絞り込み+Minds 検索URL |
| `search_drug` | 一般名・商品名から医薬品検索(KEGG DRUG、日本薬局方収載品を含む) |
| `fetch_drug_entry` | 医薬品の詳細(分類・標的・代謝・相互作用) |
| `import_shinryo_master` | 診療報酬マスターの取り込み(初回のみ) |
| `search_shinryo_hoshu` | 点数・薬価の検索(オフライン動作) |
| `shinryo_master_status` | 取り込み済みマスターと収載日の確認 |

### 使用例

```
「オルフォルグリプロンの第3相試験を、2025年以降のRCTに絞って探して」
  → search_pubmed(term="orforglipron", year_from=2025, study_types=["rct"])

「初診料の点数を調べて」
  → import_shinryo_master(kind="shinryo")   # 初回のみ
  → search_shinryo_hoshu(term="初診料")
```

## 設定(環境変数)

| 変数 | 既定 | 説明 |
|---|---|---|
| `NCBI_API_KEY` | なし | 設定すると NCBI のレート上限が 3→10 req/sec に上がります |
| `NCBI_EMAIL` | なし | NCBI が明示を推奨している連絡先。設定を推奨します |
| `MED_LIT_CACHE` | `1` | `0` でキャッシュ無効 |
| `MED_LIT_TIMEOUT` | `30` | HTTP タイムアウト(秒) |
| `XDG_CACHE_HOME` | `~/.cache` | キャッシュの置き場所 |

APIキーは無くても動きます。レート制限は超過時に例外ではなく待機とリトライで処理します。

### 社内プロキシ・独自CAを使っている場合

MCP クライアントはサーバをサブプロセスとして起動する際、最小限の環境変数しか引き継ぎません。企業ネットワークで独自の認証局を使っている場合、TLS 検証に失敗することがあります。設定の `env` に明示してください。

```json
"env": {
  "SSL_CERT_FILE": "/path/to/ca-bundle.crt",
  "REQUESTS_CA_BUNDLE": "/path/to/ca-bundle.crt",
  "HTTPS_PROXY": "http://proxy.example.jp:8080"
}
```

## できないこと(正直に)

- **Mindsガイドラインライブラリの本文検索**。Minds は検索結果をブラウザ側で描画しており、公開APIもありません。ヘッドレスブラウザで取りに行くことは技術的には可能ですが、仕様変更に弱く利用条件も明確でないため v0.1 では行わず、検索URLの提示に留めています。
- **PMDA 添付文書の本文取得**。同じく公開APIがないため、KEGG を一次ソースとし、PMDA の検索URLを併記しています。添付文書の記載が正であり、実務では必ず PMDA で原文を確認してください。
- **歯科・調剤マスター**。v0.1 は医科診療行為・医薬品・特定器材の3種のみです。

## 開発

```bash
uv sync
uv run pytest              # 外部APIを叩かないテスト
uv run pytest -m live      # 実APIへの疎通テスト
uv run ruff check .
```

## 出典

- [NCBI E-utilities](https://www.ncbi.nlm.nih.gov/books/NBK25501/)
- [ClinicalTrials.gov API v2](https://clinicaltrials.gov/data-api/api)
- [KEGG REST API](https://www.kegg.jp/kegg/rest/keggapi.html)
- [診療報酬情報提供サービス](https://shinryohoshu.mhlw.go.jp/shinryohoshu/downloadMenu/)
- [Mindsガイドラインライブラリ](https://minds.jcqhc.or.jp/)
- [PMDA 医薬品検索](https://www.pmda.go.jp/PmdaSearch/iyakuSearch/)

## ライセンス

MIT。

## 免責

本ソフトウェアは医療機器プログラムではありません。診断・治療の判断に用いるものではなく、出力の最終的な確認責任は利用者にあります。制度・点数・薬価・ガイドラインは改定されるため、実務では必ず一次情報で確認してください。

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct resource and action: drug entries, PubMed searches, abstract retrieval, clinical trial search, guideline discovery, drug search, and shinryo master operations are all clearly separated. Even the two drug-related tools (search_drug and fetch_drug_entry) have a clear search-then-fetch workflow, avoiding overlap.

Naming Consistency4/5

The naming follows a mostly consistent pattern with verb prefixes (search_, fetch_, import_, find_), though shinryo_master_status deviates by being a noun phrase instead of an action. Minor inconsistency with 'find_guideline' versus 'search_' but overall the pattern is predictable and readable.

Tool Count5/5

With 9 tools, the server is well-scoped for its purpose of medical literature and drug/reimbursement information retrieval. Each tool covers a distinct domain or step in a workflow, and the count feels neither bloated nor insufficient for the stated functionality.

Completeness4/5

The surface covers the main workflows: drug search/detail, PubMed search/abstract, clinical trial lookup, guideline discovery, and shinryo master management. Minor gaps exist, such as lacking full-text article retrieval beyond abstracts or direct PMDA label fetching, but these are acknowledged as external limitations and agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues