# mcp/drugbank.py """ Lightweight DrugBank Open-Data helper. Download the TSV once and keep in /data or load at runtime. """ import csv from pathlib import Path from typing import Dict, Optional _DATA = Path(__file__).parent / "data" / "drugbank_open_structured_drug_links.tsv" def _load_index() -> Dict[str, Dict]: index = {} if not _DATA.exists(): raise FileNotFoundError("DrugBank TSV not found – download open data first.") with _DATA.open() as f: reader = csv.DictReader(f, delimiter="\t") for row in reader: name = row["Name"].lower() index[name] = row return index _DRUG_INDEX = _load_index() def lookup_drug(name: str) -> Optional[Dict]: """Return DrugBank row dict or None.""" return _DRUG_INDEX.get(name.lower())