PRISM
An MCP server that provides clinical decision support for polysubstance risk and drug–substance interactions, grounding LLM responses in a 7-level evidence cascade with population priors and validated screening triggers.
README
PRISM — Polysubstance Risk & Interaction Surveillance for Mental-health prescribing
Phase 3 of the PRISM platform.
Clinical decision support checks drug–drug interactions. It largely ignores drug–substance and substance–substance risk — which is where overdose mortality actually comes from (opioid + benzodiazepine, opioid + alcohol).
PRISM is a reasoning layer that closes that gap and grounds an LLM in retrieved evidence rather than recall. It ships as an MCP server with 47 tools and a web platform, both driven by the same validated cascade.
Not a medical device. PRISM surfaces evidence with its provenance. It does not give clinical advice, and the validation harness asserts that it never crosses that line.
The 7-level evidence cascade
| Level | Source | Offline? |
|---|---|---|
| 1 | Curated interaction knowledge base | yes |
| 2 | OpenFDA drug labeling | live |
| 3 | CYP450 / transporter kinetics | yes |
| 4 | Pharmacodynamic stacking (e.g. CNS depression) | yes |
| 5 | Drug-class combinations | yes |
| 6 | FAERS disproportionality signals (Phase 2) | yes |
| 7 | External interaction sources | live |
Severity is the maximum across levels; confidence scales with the number of independent levels that fire (1 → low, 4+ → very_high). The model cannot invent an interaction — it can only report what a level returned, tagged with that level's source.
On top of the per-pair checks sits compound-risk synthesis: triple CNS-depressant stacks, naloxone candidacy, cocaethylene formation, Beers criteria, teratogenicity — plus automatic screening triggers (AUDIT, DAST-10, CUDIT-R, GAD-7, PHQ-9).
Proxy matching means street terms resolve to pharmacology: heroin → opioid class, street benzos → benzodiazepine class.
Population prior
Phase 1's NSDUH model is imported as a national baseline, so the system can answer "how risky is this patient's profile relative to the population?" rather than only "do these two drugs interact?" — 1,188 risk profiles, 60 annual trend rows, and the logistic coefficients for real-time scoring.
Validation
14 clinical scenarios run end-to-end through the live server and PostgreSQL:
- 2 cases flagged
life_threatening; 0 instances of overstepping into advice - Case 14 regression (benzodiazepine + opioid) returns
life_threateningacross levels 1, 4, 5, 6, 7 withfda_black_box=True— it returned nothing before the cascade was built, and it is the reason the cascade exists - Audit rows persist to
cascade_results,compound_risk_alerts, andscreening_queue
The public repo ships a synthetic 14-case set that reproduces identical severities for
all 14 cases. See scenarios/README.md.
Layout
src/
server.py FastMCP server, 47 registered tools
cascade.py the 7-level engine (DB-optional, unit-testable)
cascade_tools.py DB-backed cascade tools
extra_tools.py remaining registry tools
live_apis.py OpenFDA (L2) + RxNorm (L1) hooks
api/app.py FastAPI bridge for the web UI
db/
schema.sql 24 base tables
migrations_path3.sql +5 cascade tables (29 total)
seed.py curated KB (+ private case loader)
load_scenarios.py scenario loader (synthetic or private)
import_path3_data.py imports Phase 1 + Phase 2 exports
web/ Next.js 14 app (8 pages, Tailwind, Recharts)
scenarios/ synthetic validation cases
validate_scenarios.py
Setup
python -m venv venv && ./venv/bin/pip install -r requirements.txt
createdb prism_db
psql prism_db -f src/db/schema.sql
psql prism_db -f src/db/migrations_path3.sql
python -m src.db.seed --reference-only # curated KB, no patient data
python -m src.db.load_scenarios --replace # 14 synthetic cases
python src/db/import_path3_data.py # Phase 1 + Phase 2 exports
python validate_scenarios.py
import_path3_data.py reads the sibling NSDUH/ and FAERS/ checkouts by default;
override with NSDUH_RESULTS and FAERS_RESULTS environment variables.
Running the server
python -m src.server # stdio (Claude Desktop, Claude Code)
python -m src.server --http # HTTP on :8000
Register with an MCP host:
{ "mcpServers": {
"prism": {
"command": "/path/PRISM/venv/bin/python",
"args": ["-m", "src.server"],
"cwd": "/path/PRISM",
"env": { "DATABASE_URL": "postgresql://localhost/prism_db" }
}}}
License
MIT (code). Clinical scenario source material is not distributed. Not a medical device; not reviewed by any regulatory authority; must not be used to direct patient care.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。