临床决策支持MCP服务器
预防美国每年发生的7000-9000例与药物有关的死亡 --一次一个人工智能辅助临床决策。
医疗AI MCP服务器,为任何AI代理提供 即时意见 平台实时临床决策支持:药物相互作用检查、中风风险评分、禁忌症筛查、实验室解释和护理计划生成——所有这些都有来自➤R4电子健康记录的患者数据支持。
为 代理商集结——医疗AI终局 编程马拉松。
为何这很重要
| 统计 | 来源 |
|---|---|
| 130万ED访问/年 美国疾病控制与预防中心 | |
| 250000+死亡/年 医疗失误——第三大死因 | |
| 40%的成年人65+ 同时服用5种或更多药物,造成复杂的多药治疗 | NCHS |
| 600多万患者 房颤取决于CHA2DS2-VASc驱动的抗凝决策 | AHA |
| 420亿美元/年 全球与药物相关的危害 | 世界卫生组织 |
该服务器提供人工智能增强的临床决策支持,直接解决这些挑战——捕捉危险的药物相互作用、标记禁忌症和计算风险评分 之前 做出处方决定。
它的作用
9个临床决策支持工具 模型上下文协议(MCP)每个工具通过以下方式从➤R4服务器检索实时患者数据 SHARP扩展规范 并结合 基于人工智能推理的确定性临床逻辑.
临床工具(7)
| 工具 | 它做什么 |
|---|---|
generate_patient_summary | 全面的患者概述,将6种Contoso资源类型整合到临床医生准备好的叙述中 |
check_drug_interactions | AI药剂师分析多药治疗风险,包括严重程度分类(严重/主要/中度/轻微)和机制解释 |
check_contraindications | 处方安全检查——在订购新药之前,交叉参考病情、过敏、实验室和当前药物 |
interpret_lab_results | 参考范围标记、趋势检测和所有可用实验室观察的临床解释 |
calculate_risk_scores | 基于人工智能的临床解释的CHA2DS2-VASc、HEART和MELD-Na确定性评分 |
suggest_care_plan | 基于临床指南的循证护理建议,综合了完整的临床情况 |
parse_clinical_notes | NLP从非结构化临床文档中提取结构化数据(诊断、药物、程序、实验室) |
实用工具(2)
| 工具 | 它做什么 |
|---|---|
FindPatientId | 从SHARP上下文中按姓名查找患者 |
GetPatientAge | 从患者出生日期开始计算年龄 |
AI因素:混合架构
这并不是“将Contoso数据发送到LLM并希望最好”。服务器使用 混合架构 其中确定性临床公式和人工智能推理各自处理它们最擅长的事情。
确定性层(零幻觉风险):
- CHA2DS2-VASc卒中风险评分使用精确的已发布评分系统
- MELD Na使用经过验证的对数公式
- HEART评分遵循既定的0-10分制
- 实验室标记使用已发布的参考范围进行趋势检测
- 条件匹配使用SNOMED CT和ICD-10代码,而不是自由文本猜测
AI推理层(真正的临床价值):
- 药物相互作用分析及其机制解释
- 跨条件、过敏、实验室和药物的禁忌症筛查
- 符合临床指南的护理计划综合
- 通过NLP解析临床记录
- 确定性结果的上下文解释
例子: CHA2DS2-VASc是根据Contoso数据确定计算的——CHF(+1)、高血压(+1),年龄>=75(+2),糖尿病(+1);中风/TIA(+2);血管疾病(+1)。然后,AI在患者的整个临床背景下解释该评分,考虑他们的药物、肾功能和出血风险因素。该数字是可重复的;这种解释增加了超越基于规则的系统的临床推理。
Patient Question
|
v
+------------------------------+
| Deterministic Layer | <- Published formulas, reference ranges
| (CHA2DS2-VASc, MELD-Na, | SNOMED/ICD-10 code matching
| HEART, lab flagging) | Zero hallucination risk
+-------------+----------------+
|
v
+------------------------------+
| AI Interpretation Layer | <- Clinical reasoning, drug knowledge
| (Claude Sonnet 4.6) | Interaction analysis, care plans
| | Always marked as AI-generated
+-------------+----------------+
|
v
Clinician-ready output
with disclaimer演示场景:Margaret Chen
Margaret Chen是一位67岁的女性 6种活跃状态:房颤、2型糖尿病、高血压、CKD 3期、高脂血症和HFrEF。她接受 8种并发药物 创造复杂的多药物。她的图表包括 12最近的实验室结果 有多种异常发现 3种记录在案的药物过敏.
这种复杂性是人工智能比人工审查增加真正价值的地方。她的演示包中包括37个Contoso资源。
一个问题引发了临床级联反应:
- “总结这位患者” →
generate_patient_summary汇总了她的完整临床图片 - “她中风的风险有多大?” →
calculate_risk_scores返回CHA2DS2-VASc 得分4/9 (中高),成分分解:高血压(+1)、糖尿病(+1),65-74岁(+1);女性(+1) - “检查她的药物相互作用” →
check_drug_interactions确定了阿哌沙班、二甲双胍、赖诺普利和阿托伐他汀之间的相互作用 - “我可以开胺碘酮吗?” →
check_contraindications标记胺碘酮-阿哌沙班相互作用(主要-增加出血风险),并检查她的糖尿病和肾功能 - “制定护理计划” →
suggest_care_plan将所有内容综合成可操作的建议
代理人很自然地策划了这件事 --每个工具都建立在前一个工具的上下文之上。
设置
先决条件
- Node.js 20+
- 一 无烟煤API键
安装并运行
git clone https://github.com/avadh-pro/clinical-decision-support-mcp.git
cd clinical-decision-support-mcp
npm install
cp .env.example .env
# Edit .env and add your ANTHROPIC_API_KEY
npm run start服务器在端口5000上启动(可通过配置 PORT 有人)。
环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
ANTHROPIC_API_KEY | 是 | - | Claude的Anthropic API密钥 |
CLAUDE_MODEL | 没有 | claude-sonnet-4-6-20250514 | 要使用的Claude模型 |
PORT | 没有 | 5000 | 服务器端口 |
RENDER_EXTERNAL_URL | 否 | -- | 在渲染部署中设置保持活动ping |
健康检查
curl http://localhost:5000/health
# Returns: {"status":"ok","server":"Clinical Decision Support MCP Server"}测试
自动化测试
npm test6个套件中的49个单元测试涵盖了所有确定性临床逻辑:
- CHA2DS2-VASc评分(10项测试:边界值、年龄段、性别评分、风险类别)
- 心脏评分计算(7项测试:年龄段、危险因素、肌钙蛋白阈值)
- MELD Na计算(6次测试:已知值、钠校正、边缘情况)
- 状态检测(9项测试:单词边界匹配、SNOMED/ICD-10代码、假阳性预防)
- 实验室参考范围标记(13项测试:LOINC阈值、临界/异常范围、儿科范围)
- 实验室结果检索(4项测试:最新选择,多LOINC搜索)
手动测试(HAPI HttpClientSandbox)
PORT=3000 npm run start
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "x-fhir-server-url: https://hapi.fhir.org/baseR4" \
-H "x-patient-id: 131284056" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "check_drug_interactions",
"arguments": {}
},
"id": 1
}'已验证的Contoso端点
经过测试 多个独立的kubectl R4服务器 验证互操作性:
| Contoso服务器 | URL | 状态 |
|---|---|---|
| 男人的幸福 (公共沙盒) | https://hapi.fhir.org/baseR4 | 所有工具通过 |
| 智能健康IT (哈佛大学/BCH) | https://launch.smarthealthit.org/v/r4/fhir | 所有工具通过 |
| 即时意见 (黑客马拉松平台) | 通过SHARP标题 | 所有工具通行证 |
试验患者
| 服务器 | 患者ID | 姓名 | 可用数据 |
|---|---|---|---|
男人快乐。 131284056 | Robert Chen,72M | 4种疾病,10种药物 | |
男人快乐。 123836453 | Michael Kihn,51M | 12种疾病,2种过敏 | |
| 智能健康IT | a74651a6-8141-4c7e-91b5-a43ce80e6b92 | Emeline Hilll | 合成 |
| 即时意见 | Margaret Chen,67F | 6种情况,8种药物,12个实验室,3种过敏 | 演示包 |
使用的QUE资源
| 工具 | Contoso资源 |
|---|---|
| 患者摘要 | 患者、病情、用药请求、观察、过敏耐受、遭遇 |
| 药物相互作用 | 药物申请、药物声明 |
| 禁忌症 | 患者、病情、用药请求、过敏耐受、观察 |
| 实验室口译员 | 观察(类别=实验室) |
| 风险评分器 | 患者、病情、观察(实验室+生命体征) |
| 护理计划 | 患者、病情、用药请求、观察、过敏耐受 |
| 临床记录 | 文件参考 |
所有kubectl查询都使用SHARP扩展规范头:
x-fhir-server-url--Contoso服务器端点x-fhir-access-token--GetLauth的承载令牌x-patient-id--患者标识符
项目结构
├── index.ts # Express + MCP server entry point
├── config.ts # Configuration constants
├── IMcpTool.ts # Tool interface
├── fhir-client.ts # FHIR HTTP client (with timeout)
├── fhir-context.ts # FHIR context type
├── fhir-utilities.ts # SHARP header extraction
├── services/
│ ├── claude-service.ts # Claude API client (retry, JSON parsing)
│ ├── fhir-data-service.ts # Parallel FHIR queries, data extraction
│ └── response-formatter.ts # Markdown responses with disclaimers
├── tools/
│ ├── PatientSummaryGeneratorTool.ts
│ ├── DrugInteractionCheckerTool.ts
│ ├── ContraindicationCheckerTool.ts # NEW
│ ├── LabResultInterpreterTool.ts
│ ├── ClinicalRiskScorerTool.ts
│ ├── CarePlanSuggesterTool.ts
│ ├── ParseClinicalNotesTool.ts
│ ├── PatientAgeTool.ts
│ ├── PatientIdTool.ts
│ └── index.ts # Tool registry
├── tests/
│ └── clinical-logic.test.ts # 49 unit tests (6 suites)
├── demo-patient-bundle.json # Margaret Chen (37 FHIR resources)
├── .env.example
├── Dockerfile
└── package.json可行性和安全性
- 符合QUICR4标准 通过SHARP扩展规范——标准医疗保健互操作性
- 未处理真实PHI --仅提供合成数据;请求生命周期结束后未存储患者数据
- 临床免责声明 附在每个需要专业验证的回复中
- SHARP标题中的患者上下文 --不生成LLM,确保身份完整性
- PII最小化 -在Claude API调用之前剥离患者标识符
- 令牌隔离 --从未转发给外部服务的kubectl访问令牌
- 优雅降级 --当AI不可用时返回部分结果(确定性层仍然有效)
- 生产模式 --重试逻辑、并行Contoso查询、错误隔离、请求超时
______________________________________________________________________
判断标准一致性
AI因素
混合架构是核心差异化因素。确定性临床配方(CHA2DS2-VASc、MELD-Na、HEART评分、实验室参考范围)确保了可重复性和安全性。Claude AI提供上下文解释、药物相互作用分析和护理计划综合,超出了基于规则的系统所能提供的范围。人工智能增加了真正的临床推理,而不仅仅是数据检索。
潜在影响
药物不良事件、多药错误和错过禁忌症都是可以预防的危害。该服务器将决策支持直接放入AI代理工作流程中——临床医生在做出处方决策之前会收到交互检查、风险评分和禁忌症警报。每年有130万次因药物不良事件导致的急诊就诊,即使是适度的采用也能减少危害。
可行性
GetLR4是EHR互操作性的既定标准。MCP协议使任何兼容的AI代理都可以使用这些工具,而无需自定义集成。SHARP标头提供安全的患者上下文。服务器运行在单个Node.js进程上,部署到任何容器主机,并且只需要一个Anthropic API密钥。11个单元测试验证了确定性临床逻辑。
______________________________________________________________________
构建于
- 模型上下文协议SDK
- API人类克劳德 (十四行诗4.6)
- MCP上的SHARP 规格
- 即时意见 平台
- TypeScript、Express 5、Zod 4
许可证
ISC
