🚀 FHIR MCP Server
FHIR MCP Server 實現了一個完整的模型上下文協議(MCP)服務器,旨在促進基於大語言模型(LLM)的代理與符合 FHIR 標準的後端之間的無縫交互。它提供了一個標準化接口,通過一套全面的工具實現對 FHIR 資源的完整 CRUD 操作,兼容 MCP 的客戶端(如 Claude Desktop)可通過自然語言提示查詢和操作臨床數據。
🚀 快速開始
前提條件
- Docker(推薦)或 uv:用於依賴管理。
👉 uv 安裝指南
- FHIR 服務器賬戶:具備訪問 FHIR API 的權限(例如 Medplum)。
- Pinecone API 密鑰(文檔搜索必需):支持對處理後的文檔進行基於向量的搜索。若無此密鑰,語義檢索功能將無法使用。
👉 創建 Pinecone 賬戶
- LOINC 賬戶(可選):可從官方 API 獲取最新的 LOINC 代碼。若無此賬戶,系統將依賴靜態或語言模型推斷的代碼,這些代碼可能過時或不準確。
👉 創建 LOINC 賬戶
安裝與設置
- 克隆倉庫:
git clone https://github.com/the-momentum/fhir-mcp-server
cd fhir-mcp-server
- 設置環境變量:
cp config/.env.example config/.env
編輯 config/.env
文件,填入你的憑證和配置。詳情見環境變量。
3. 安裝依賴
make build
make uv
- 更新 MCP 客戶端配置
{
"mcpServers": {
"docker-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--init",
"--mount",
"type=bind,source=<your-project-path>/app,target=/root_project/app",
"--mount",
"type=bind,source=<your-project-path>/config/.env,target=/root_project/config/.env",
"mcp-server:latest"
]
}
}
}
確保將 <your-project-path>
替換為你實際的安裝路徑。
(Get-Command uv).Path
- MacOS/Linux:
which uv
然後,更新配置文件:
{
"mcpServers": {
"uv-mcp-server": {
"command": "uv",
"args": [
"run",
"--frozen",
"--directory",
"<your-project-path>",
"start"
],
"env": {
"PATH": "<uv-bin-folder-path>"
}
}
}
}
確保將 <uv-bin-folder-path>
替換為實際的 uv 路徑(到 bin 文件夾)。
5. 重啟 MCP 客戶端
完成上述所有步驟後,重啟 MCP 客戶端以應用更改。在某些情況下,你可能需要使用任務管理器或系統的進程管理器終止所有相關進程。這可確保:
- 正確加載更新後的配置。
- 正確應用環境變量。
- FHIR MCP 客戶端以正確的設置初始化。
(返回頂部)
✨ 主要特性
- 🚀 FastMCP 框架:基於 FastMCP 構建,具備高性能 MCP 服務器能力。
- 🏥 FHIR 資源管理:對所有主要 FHIR 資源進行完整的 CRUD 操作。
- 📄 智能文檔處理:由人工智能驅動,支持 TXT、CSV、JSON 和 PDF 等多種格式的文檔攝取和分塊。
- 🔍 語義搜索:使用向量嵌入(通過 Pinecone)進行高級文檔搜索。
- 🧠 支持 RAG:具備檢索增強生成(RAG)管道,支持上下文感知的文檔查詢。
- 🔐 安全認證:通過 OAuth2 令牌管理實現 FHIR API 集成。
- 📊 LOINC 集成:支持標準化醫學術語查找和驗證。
- 🐳 支持容器化:支持 Docker,便於部署和擴展。
- 🔧 可配置:基於
.env
文件提供廣泛的配置選項。
🏗️ 架構
服務器採用模塊化架構構建:
- MCP 工具:為選定的 FHIR 資源類型提供專用工具,其他資源由通用工具處理。
- Fhir 服務器客戶端:處理 FHIR API 通信和認證(OAuth2 等,更多認證方式計劃中)。
- RAG 服務:基於嵌入的文檔處理和語義檢索。
- 向量存儲:集成 Pinecone 實現基於相似度的搜索。
- LOINC 客戶端:與 LOINC API 集成,實現術語解析和驗證。
(返回頂部)
💡 演示
此演示展示了 Claude 如何使用 fhir-mcp-server
與 FHIR 服務器(此處為 Medplum)通信以回答問題。你將看到:
- 使用
request_patient_resource
工具檢索患者基本信息。
- 使用
request_condition_resource
工具回答先前診斷的疾病是否會導致患者當前抱怨的症狀。
- 使用
request_medication_resource
、request_encounter_resource
和 request_generic_resource
工具回答患者是否已接受高血壓治療。
你可以觀察到 Claude 如何根據用戶查詢自動選擇合適的工具來回答問題。
演示視頻鏈接
實驗室歷史分析
在此你可以觀察到,Claude 首先使用工具搜索血脂檢查特定代碼的 LOINC 代碼,但在 FHIR 服務器中未找到相關觀察結果後,它會對構成該檢查的單個生物標誌物進行重複搜索。
實驗室歷史分析演示視頻鏈接
FHIR 合成數據生成器
使用 FHIR 進行開發的人員通常需要生成特定的測試數據來驗證 FHIR 服務器的功能,例如搜索能力和數據關係。雖然你可以使用 Synthea 生成合成數據,然後手動將生成的數據包導入服務器,但 fhir-mcp-server
簡化了這一過程,允許你直接通過 Claude 生成和部署測試數據。
這消除了分別運行 synthea、下載數據包並手動導入 FHIR 服務器的典型工作流程。相反,你可以在 Claude 的界面內創建有針對性的測試場景、生成合適的合成數據並填充服務器。
FHIR 合成數據生成器演示視頻鏈接
注意:fhir-mcp-server
並非為此用例設計,因此在演示中你會看到它並非完美運行。不過,你可以觀察到大型語言模型如何通過試錯來糾正錯誤選擇。
🔧 配置
環境變量
變量 |
描述 |
示例值 |
FHIR_SERVER_HOST |
FHIR API 主機 URL |
https://api.medplum.com |
FHIR_BASE_URL |
FHIR 基礎路徑 |
/fhir/R4 |
FHIR_SERVER_CLIENT_ID |
FHIR 的 OAuth2 客戶端 ID |
019720e7... |
FHIR_SERVER_CLIENT_SECRET |
FHIR 的 OAuth2 客戶端密鑰 |
9e2ee73... |
LOINC_ENDPOINT |
LOINC API 搜索端點 |
https://loinc.regenstrief.org/searchapi/loincs |
LOINC_USERNAME |
LOINC 賬戶用戶名 |
loinc-user |
LOINC_PASSWORD |
LOINC 賬戶密碼 |
my-loinc-password |
PINECONE_API_KEY |
Pinecone API 密鑰 |
pcsk_... |
EMBEDDING_MODEL |
Hugging Face 嵌入模型名稱 |
NeuML/pubmedbert-base-embeddings |
(返回頂部)
🛠️ MCP 工具
FHIR MCP 服務器提供了一套全面的工具,用於與 FHIR 資源進行交互和文檔管理:
FHIR 資源工具
工具 |
資源類型 |
描述 |
request_patient_resource |
患者 |
管理患者的人口統計和行政信息 |
request_observation_resource |
觀察 |
處理臨床測量和評估 |
request_condition_resource |
病情 |
管理患者的問題和診斷 |
request_medication_resource |
藥物 |
處理藥物信息和訂單 |
request_immunization_resource |
免疫接種 |
管理疫苗接種記錄 |
request_encounter_resource |
就診 |
處理患者就診和交互 |
request_allergy_intolerance_resource |
過敏不耐受 |
管理患者的過敏信息 |
request_family_member_history_resource |
家族成員病史 |
處理家族健康史 |
request_generic_resource |
任何 FHIR 資源 |
對特定工具未涵蓋的任何 FHIR 資源進行操作 |
文檔管理工具
工具 |
描述 |
request_document_reference_resource |
管理 FHIR 文檔引用資源 |
add_document_to_pinecone |
將文檔導入向量數據庫以進行語義搜索 |
search_pinecone |
使用向量嵌入對索引文檔進行語義搜索 |
LOINC 術語工具
工具 |
描述 |
get_loinc_codes |
檢索醫學觀察和實驗室測試的標準化 LOINC 代碼 |
工具特性
- 全面的資源管理:所有 FHIR 資源工具支持創建、讀取、更新和刪除操作。
- 數據驗證:工具強制執行 FHIR 資源驗證,防止數據損壞。
- 錯誤處理:提供全面的錯誤響應,包含詳細的失敗信息。
- 安全保障:所有操作均支持 OAuth2 認證和適當的訪問控制。
- 語義搜索:使用向量嵌入實現人工智能驅動的文檔搜索。
- 多格式支持:文檔攝取支持 TXT、PDF、CSV 和 JSON 格式。
(返回頂部)
🗺️ 路線圖
我們正在不斷為 FHIR MCP 服務器添加新功能。以下是即將推出的功能:
- [ ] 擴展認證選項:除了已支持的 OAuth2 之外,計劃添加對其他連接 FHIR 服務器的認證方法的支持。
- [ ] 擴展 RAG 文件格式支持:擴展文檔攝取功能,支持更多格式。
- [ ] 支持表格感知的文檔分塊:改進文檔分塊流程,檢測文檔中的表格並將其作為獨立的原子塊處理。
- [ ] 支持掃描文檔的 OCR:實現光學字符識別(OCR)功能,以便在分塊和索引之前從掃描的 PDF 和圖像文件中提取文本。
如果你有建議,歡迎與我們聯繫或直接貢獻代碼!
👥 貢獻者
(返回頂部)
📄 許可證
本項目採用 MIT 許可證進行分發。詳情請參閱 MIT 許可證。