概述
安裝
內容詳情
替代品
什麼是LangCare MCP FHIR Server?
LangCare MCP FHIR Server是一個連接AI助手(如Claude、ChatGPT)與醫療記錄系統的智能橋樑。它遵循FHIR R4國際醫療數據標準,讓AI能夠安全地搜索、讀取、創建和更新患者病歷、檢查結果、用藥記錄等醫療數據。如何使用LangCare MCP FHIR Server?
只需簡單配置,即可讓您的AI助手獲得醫療數據訪問能力:1) 安裝服務器;2) 配置醫療系統連接;3) 在AI平臺中啟用;4) AI即可使用4個核心工具處理醫療數據。適用場景
適用於醫療AI助手開發、臨床決策支持、病歷自動整理、患者數據查詢、用藥管理、實驗室結果解讀等醫療信息化場景。主要功能
如何使用
使用案例
常見問題
相關資源
安裝
{
"mcpServers": {
"langcare-mcp-fhir": {
"command": "langcare-mcp-fhir",
"args": ["-config", "/path/to/your/config.yaml"]
}
}
}
{
"mcpServers": {
"langcare-fhir": {
"url": "https://langcare-mcp-dev.fly.dev/mcp",
"headers": {
"Authorization": "Bearer your-token"
}
}
}
}🚀 LangCare MCP FHIR Server
LangCare MCP FHIR Server 是一款企業級的 MCP 服務器,專為基於 FHIR 的電子病歷系統(EMRs)設計,可在自主 AI 平臺中實現強大部署。它完全採用 Go 語言編寫,具備企業級安全特性和通用的 FHIR 操作,支持任何 FHIR R4 資源類型。此外,該服務器還附帶一個包含 40 多種臨床技能的庫,涵蓋藥物管理、實驗室檢查解讀、臨床決策支持、文檔記錄、人群健康管理等多個方面。同時,它還新增了對 MCP Apps 的支持,提供交互式臨床用戶界面;推出了 Healthcare Voice Agent,實現即時語音 AI 服務;以及提供了 LangCare CLI,方便不原生支持 MCP 的 AI 代理框架使用。
🚀 快速開始
安裝
可以通過 npm 進行安裝:
npm install -g @langcare/langcare-mcp-fhir
也可以直接使用,無需安裝:
npx @langcare/langcare-mcp-fhir -config /path/to/config.yaml
快速配置
LangCare MCP FHIR 可將 Claude 連接到基於 FHIR 的 EMR 系統。你需要一個指向後端的 YAML 配置文件。
- 獲取配置模板:根據你的後端選擇相應的配置模板:
- EPIC:config.epic.example.yaml
- Cerner:config.cerner.example.yaml
- GCP Healthcare API:config.gcp.example.yaml
- 任何 FHIR R4 服務器:config.base.example.yaml
- 配置 Claude Desktop:在你的 Claude Desktop 配置文件(
~/.config/Claude/claude_desktop_config.json)中添加以下內容:
{
"mcpServers": {
"langcare-mcp-fhir": {
"command": "langcare-mcp-fhir",
"args": ["-config", "/path/to/your/config.yaml"]
}
}
}
在 macOS 上,配置文件通常位於:
~/Library/Application\ Support/Claude/claude_desktop_config.json
- 重啟 Claude Desktop:關閉並重新打開 Claude Desktop,此時 FHIR 工具將可用。
若需要詳細的設置幫助,請參閱 本地測試指南。
✨ 主要特性
- 企業級安全:實現了兩層安全模型,支持多種認證方法,確保 HIPAA 合規的醫療數據訪問。
- 通用 FHIR 操作:提供 4 種通用的 FHIR 操作,支持任何 FHIR R4 資源類型。
- 臨床技能庫:包含 40 多種與代理無關的臨床工作流指南,可幫助 AI 代理執行復雜的醫療任務。
- MCP Apps:內置交互式 UI 視圖,提供豐富的可視化和交互控制,無需 LLM 參與數據檢索。
- Healthcare Voice Agent:即時語音 AI 服務,讓患者可以通過語音查詢健康記錄。
- LangCare CLI:命令行界面,方便不原生支持 MCP 的 AI 代理框架使用。
📦 安裝指南
從源代碼構建
make build
本地運行(stdio 模式)
make run
# 或者
./bin/langcare-mcp-fhir -config configs/config.local.yaml
以 HTTP 模式運行(可流式 HTTP)
make run-http
# 或者
./bin/langcare-mcp-fhir -http -port 8080 -config configs/config.yaml
啟動服務器後,可通過 /mcp 進行可流式 HTTP 傳輸,通過 /health 進行健康檢查。
運行測試
make test
代碼檢查
make lint
部署到 Fly.io(遠程可流式 HTTP)
將其部署為遠程 MCP 服務器,支持可流式 HTTP 傳輸,任何兼容 MCP 的 AI 代理都可以從任何地方訪問。
# 安裝 Fly CLI
brew install flyctl
fly auth login
# 創建應用
fly apps create --name langcare-mcp-dev
# 在 fly/fly.dev.toml [env] 塊中為你的提供商(EPIC 或 GCP)設置 CONFIG_FILE
# 然後設置密鑰(以 EPIC 為例):
fly secrets set \
EPIC_BASE_URL="https://fhir.epic.com/interconnect-fhir-oauth/api/FHIR/R4" \
EPIC_CLIENT_ID="your-client-id" \
EPIC_TOKEN_URL="https://fhir.epic.com/interconnect-fhir-oauth/oauth2/token" \
EPIC_PRIVATE_KEY_B64="$(base64 < keys/epic/private-key.pem)" \
MCP_AUTH_TOKENS="your-token" \
--app langcare-mcp-dev
# 部署
fly deploy -c fly/fly.dev.toml --app langcare-mcp-dev
# 驗證
curl https://langcare-mcp-dev.fly.dev/health
將任何 MCP 客戶端連接到:
URL: https://langcare-mcp-dev.fly.dev/mcp
Auth: Authorization: Bearer your-token
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"langcare-fhir": {
"url": "https://langcare-mcp-dev.fly.dev/mcp",
"headers": {
"Authorization": "Bearer your-token"
}
}
}
}
支持 EPIC 和 GCP Healthcare API 提供商。有關提供商設置、密鑰和完整部署指南,請參閱 fly/README.md。
本地使用 EPIC 進行測試
有關設置 EPIC 憑證和本地測試的詳細步驟說明,請參閱 📖 本地測試指南。該指南涵蓋了生成 RSA 密鑰和 JWKS、配置 EPIC 憑證、本地運行服務器、使用 Claude Desktop 進行測試以及解決常見問題等內容。
快速憑證測試:
# 在運行服務器之前測試你的 EPIC 憑證
go run test/test_epic_token.go "your-client-id" "/path/to/private-key.pem"
💻 使用示例
基礎用法
1. fhir_read
讀取指定類型和 ID 的 FHIR 資源:
{
"resourceType": "Patient",
"id": "example-123"
}
2. fhir_search
使用查詢參數搜索 FHIR 資源:
{
"resourceType": "Patient",
"queryParams": "name=John&birthdate=gt1990-01-01"
}
3. fhir_create
創建新的 FHIR 資源:
{
"resourceType": "Observation",
"resource": {
"resourceType": "Observation",
"status": "final",
"code": { ... },
"subject": { "reference": "Patient/123" }
}
}
4. fhir_update
更新現有的 FHIR 資源:
{
"resourceType": "Patient",
"id": "example-123",
"resource": {
"resourceType": "Patient",
"id": "example-123",
"name": [{ "family": "Smith" }]
}
}
📚 詳細文檔
入門指南
- 📖 本地開發與測試指南 - 本地設置和測試的完整指南
- 🚀 安裝與配置 - 上述快速設置指南
代理集成
- 🤖 代理提示指南 - AI 代理使用 LangCare MCP FHIR 的完整指南(工具示例、工作流、最佳實踐)
安全與認證
- 🛡️ 安全文檔 - 完整的安全架構和 HIPAA 合規性說明
- 🔐 EPIC 設置指南 - JWT 認證、密鑰生成和 JWKS 註冊
- 📋 EPIC 範圍參考 - FHIR 資源的完整 OAuth2 範圍指南
- 🔑 認證方法 - 支持的認證方法
部署
- Fly.io 部署指南 - 遠程可流式 HTTP 部署、提供商配置、密鑰、Docker
開發與測試
- 🧪 測試方法 - Claude Desktop、MCP 檢查器、手動測試和自動化測試
- 📦 項目結構 - 目錄佈局和架構
- 🔧 構建命令 - 開發工作流程
🔧 技術細節
架構
該 MCP 服務器充當 AI 代理和 FHIR R4 服務器之間的智能代理。它通過模型上下文協議(MCP)公開 4 種通用的 FHIR 操作,為任何 FHIR 資源類型實現基於 AI 的工作流。
- MCP SDK:官方
github.com/modelcontextprotocol/go-sdk(由 Anthropic/Google 維護) - FHIR 客戶端:通用 HTTP 客戶端,可與任何 FHIR R4 服務器配合使用
- 傳輸方式:stdio 和可流式 HTTP
- 後端:代理到現有的 FHIR 服務器(無數據庫)
- 語言:100% 使用 Go 語言,以實現高性能和可靠性
安全架構
LangCare MCP FHIR 實現了兩層安全模型,用於 HIPAA 合規的醫療數據訪問:
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Claude │ Auth1 │ MCP Server │ Auth2 │ FHIR API │
│ Client │────────▶│ (Go) │────────▶│ (EMR) │
└─────────────┘ └──────────────┘ └─────────────┘
Auth1: MCP 客戶端認證(Bearer Token/API Key)
Auth2: FHIR 後端認證(Bearer/OAuth2/SMART on FHIR)
安全特性
- ✅ TLS 1.3 加密用於 HTTP 傳輸
- ✅ 日誌中的 PHI 清理(默認啟用)
- ✅ HIPAA 合規的審計日誌記錄
- ✅ 無持久 PHI 存儲(無狀態代理)
- ✅ 通過環境變量管理密鑰(從不存儲在配置文件中)
- ✅ OAuth 2.0 支持自動令牌刷新
- ✅ mTLS 支持服務到服務的通信
- ✅ 每個客戶端的速率限制
支持的認證方法
- Bearer Token - 簡單的 API 密鑰認證
- OAuth2 - 完整的 OAuth2 流程,支持令牌刷新
- SMART on FHIR - EPIC、Cerner 和其他 EMR 標準
- Basic Auth - 用戶名/密碼認證
- Custom - 可擴展以支持其他認證方法
如需完整的安全文檔,請參閱 安全指南,其中包括 HIPAA 合規性清單、EPIC/Cerner/GCP 的 OAuth 配置、Kubernetes 安全清單、憑證管理程序和審計日誌記錄實現等內容。
MCP Apps(交互式 UI)
LangCare MCP FHIR 內置了 MCP Apps,這些交互式、豐富的 UI 視圖可以直接在支持 MCP 的主機(如 Claude Desktop)中運行。與傳統的基於聊天的工具輸出不同,MCP Apps 使用相同的底層 FHIR 工具,同時渲染基於 React 的完整界面,包含圖表、表格和交互式控件。
工作原理
每個應用程序都是一個單文件 HTML 包(React + TypeScript,使用 Vite 編譯),在編譯時通過 go:embed 嵌入到 Go 二進制文件中。在運行時,MCP 服務器將每個應用程序註冊為 MCP 資源(text/html;profile=mcp-app)和專用的 MCP 工具,通過 _meta.ui.resourceUri 進行鏈接。當 MCP 主機調用該工具時,它會獲取資源並渲染 UI。應用程序通過 app.callServerTool() 回調到服務器的通用 FHIR 工具(fhir_search、fhir_read 等),無需 LLM 往返進行數據獲取。
與普通工具輸出相比的優勢
- 豐富的可視化 - SVG 圖表、顏色編碼的卡片、可展開的詳細面板
- 交互式控件 - 搜索字段、日期範圍選擇器、點擊展開行
- 確定性數據獲取 - 應用程序直接調用 FHIR 工具,數據檢索無需 LLM 參與
- 零外部依賴 - 所有內容內聯到單個 HTML 文件中,嵌入到二進制文件中
- 離線工作 - 無需 CDN、外部腳本,除了 FHIR API 調用外無需網絡請求
內置應用程序
| 應用程序 | 工具 | 描述 |
|---|---|---|
| FHIR 資源瀏覽器 | fhir_explorer |
交互式 FHIR 資源瀏覽器。通過 JSON 詳細視圖搜索、讀取、創建和更新任何 FHIR R4 資源類型。 |
| 患者病歷審查 | patient_chart_review |
臨床儀表盤,顯示患者的人口統計信息、當前病情、藥物、生命體徵、實驗室檢查結果和生命體徵趨勢圖表(血壓 + 體重隨時間變化)。 |
這兩個應用程序都是展示 MCP Apps 模式的參考實現。有關架構細節和如何構建新應用程序,請參閱 apps/README.md。
代理使用
AI 代理使用 LangCare MCP FHIR Server 通過 4 種 FHIR 工具幫助醫療專業人員訪問和管理患者健康記錄。服務器處理 EMR 認證,使代理能夠專注於臨床工作流,同時保持嚴格的隱私和準確性標準。
代理功能
- 搜索、讀取、創建、更新 - 任何 FHIR R4 資源(患者、觀察結果、藥物等)
- 患者隱私 - 使用部分標識符,在更新前確認身份
- 臨床準確性 - 驗證數據,使用標準代碼(LOINC、SNOMED、RxNorm)
- 專業溝通 - 以結構化的方式響應,包含上下文、發現和下一步步驟
常見工作流
- 患者查找:按姓名/出生日期搜索 → 驗證身份 → 讀取完整詳細信息
- 臨床審查:檢索實驗室檢查結果、生命體徵、藥物 → 顯示參考範圍
- 文檔記錄:提取結構化數據 → 映射到 FHIR 資源 → 確認 → 創建
- 更新操作:驗證現有資源 → 修改 → 確認更改 → 更新
系統支持
- 支持任何 FHIR R4 資源類型(包括 DocumentReference、Binary、Media 等 60 多種類型)
- 自動認證和 EPIC、Cerner、GCP Healthcare API 的令牌刷新
- HIPAA 合規的 PHI 處理,帶有審計日誌記錄
- 全面的 OAuth2 範圍,用於臨床數據訪問
完整指南:代理提示指南 - 系統提示、工具示例、工作流和錯誤處理
臨床技能庫(可選)
提供 40 多種與代理無關的臨床工作流指南,教導 AI 代理如何使用 MCP 服務器的 4 種 FHIR 工具(fhir_search、fhir_read、fhir_create、fhir_update)執行復雜的醫療任務。
- 可選 - MCP 服務器無需這些指南即可工作
- 可移植 - 可與 Claude、ChatGPT、Gemini 或任何 AI 代理配合使用
- 基於證據 - 基於 USPSTF、ADA、ACC/AHA、CDC、ACOG、KDIGO 等協會的指南構建
- 可直接複製粘貼 - 將技能的
SKILL.md添加到你的代理的系統提示或自定義指令中
技能類別(40 種技能)
| 類別 | 技能數量 | 示例 |
|---|---|---|
| 患者數據與摘要 | 5 | 人口統計信息、臨床摘要(CCD 風格)、問題列表審核、過敏審查、保險覆蓋範圍 |
| 藥物管理 | 5 | 藥物核對、藥物相互作用(CYP450)、依從性(MPR/PDC)、Beers 標準、阿片類藥物風險(ORT/MME) |
| 實驗室與診斷 | 5 | 實驗室檢查解讀、臨界值(CAP/CLIA)、術前實驗室檢查、糖尿病檢查(ADA)、腎功能(KDIGO) |
| 臨床決策支持 | 5 | 敗血症(qSOFA/SOFA)、心血管風險(ASCVD/HEART)、靜脈血栓栓塞(Wells/Caprini)、跌倒風險(Morse)、肺炎(CURB-65) |
| 護理協調 | 5 | 出院計劃(LACE)、轉診、護理差距(USPSTF)、護理過渡(I-PASS)、隨訪任務 |
| 文檔記錄 | 5 | SOAP 筆記、病史與體格檢查、進展筆記、出院小結、手術筆記 |
| 人群健康 | 5 | 面板概述、質量指標(HEDIS)、慢性病登記、免疫接種狀態(CDC)、預防保健合規性 |
| 專科 | 5 | 產前護理(ACOG)、兒科生長(WHO/CDC)、心理健康(PHQ-9/GAD-7)、腫瘤學(TNM/RECIST)、慢性疼痛 |
完整目錄及鏈接:skills/README.md
使用技能的方法
- 瀏覽 skills/core/ 目錄並選擇一個技能
- 複製 技能的
SKILL.md內容到你的 AI 代理的系統提示或自定義指令中 - 參考文件 每個技能的
references/子目錄包含詳細的臨床知識(評分標準、代碼表、閾值),可根據需要包含以提高臨床準確性
# 示例:將藥物核對技能添加到你的代理
skills/core/medication-management/medication-reconciliation/
├── SKILL.md # 複製此文件到代理指令中
└── references/
├── reconciliation-process.md # 聯合委員會標準
└── high-risk-medications.md # ISMP 高警示藥物列表
集成指南
Claude | ChatGPT | Gemini
歡迎社區貢獻 - 有關指南,請參閱 CONTRIBUTING.md。
項目結構
langcare-mcp-fhir/
├── cmd/
│ └── server/
│ └── main.go # 入口點
├── internal/
│ ├── apps/ # MCP Apps(嵌入式 UI)
│ │ ├── embed.go # go:embed 指令,用於 HTML 包
│ │ ├── registry.go # 應用程序元數據、工具名稱、資源 URI
│ │ └── dist/ # 構建後的 HTML 包(由構建過程複製)
│ │ ├── fhir-explorer.html # FHIR 資源瀏覽器單文件包
│ │ └── patient-chart-review.html # 患者病歷審查單文件包
│ ├── audit/
│ │ └── logger.go # HIPAA 審計日誌記錄
│ ├── config/
│ │ └── config.go # YAML 配置加載
│ ├── fhir/
│ │ ├── client.go # FHIR HTTP 客戶端接口
│ │ ├── types.go # FHIR 客戶端類型
│ │ └── providers/ # 後端實現
│ │ ├── base.go # 基礎 HTTP 提供商
│ │ ├── epic.go # EPIC OAuth2 提供商
│ │ ├── cerner.go # Cerner OAuth2 提供商
│ │ └── gcp.go # GCP Healthcare API 提供商
│ ├── mcp/
│ │ └── server.go # MCP 服務器 + 應用程序註冊
│ ├── middleware/
│ │ ├── auth.go # MCP 認證
│ │ └── rate_limit.go # 速率限制
│ ├── tools/ # MCP 工具實現
│ │ ├── registry.go # 工具註冊表
│ │ ├── fhir_read.go # 讀取 FHIR 資源
│ │ ├── fhir_search.go # 搜索 FHIR 資源
│ │ ├── fhir_create.go # 創建 FHIR 資源
│ │ └── fhir_update.go # 更新 FHIR 資源
│ └── transport/
│ ├── stdio.go # stdio 傳輸(Claude Desktop)
│ └── http.go # 可流式 HTTP 傳輸(生產環境)
├── apps/ # MCP App 源代碼(React + TypeScript)
│ ├── README.md # 應用程序開發指南
│ ├── package.json # 共享依賴項(React 19、MCP Apps SDK)
│ ├── vite.config.ts # Vite 構建配置(單文件輸出)
│ ├── tsconfig.json # TypeScript 配置
│ ├── fhir-explorer/ # FHIR 資源瀏覽器應用程序
│ │ ├── index.html
│ │ └── src/
│ │ ├── app.tsx
│ │ └── global.css
│ └── patient-chart-review/ # 患者病歷審查應用程序
│ ├── index.html
│ └── src/
│ ├── app.tsx
│ └── global.css
├── scripts/
│ ├── build-apps.sh # 構建所有應用程序 → internal/apps/dist/
│ └── create_jwks.sh # 從公鑰生成 JWKS(EPIC)
├── pkg/
│ └── types/
│ └── errors.go # 自定義錯誤類型
├── configs/
│ ├── config.epic.example.yaml # EPIC 示例配置
│ ├── config.cerner.example.yaml # Cerner 示例配置
│ ├── config.gcp.example.yaml # GCP 示例配置
│ └── config.base.example.yaml # 任何 FHIR R4 服務器的示例配置
├── docs/
│ ├── AGENT_PROMPT.md # AI 代理系統提示
│ ├── EPIC-APP-SECURITY.md # EPIC 認證設置
│ ├── EPIC-SCOPES.md # OAuth2 範圍參考
│ ├── LOCAL-TESTING.md # 本地開發指南
│ └── SECURITY.md # 生產環境安全指南
├── test/
│ ├── README.md # 測試文檔
│ └── test_epic_token.go # EPIC OAuth2 令牌測試器
├── fly/
│ ├── Dockerfile # Fly.io 的多階段 Go 構建
│ ├── docker-entrypoint.sh # 密鑰實例化 + 服務器啟動
│ ├── fly.dev.toml # Fly.io 開發部署配置
│ ├── config.fly.epic.yaml # Fly.io EPIC 提供商配置
│ ├── config.fly.gcp.yaml # Fly.io GCP 提供商配置
│ └── README.md # Fly.io 部署指南
├── bin/ # 構建輸出(git 忽略)
│ └── langcare-mcp-fhir # 編譯後的二進制文件
├── go.mod # Go 模塊定義
├── go.sum # Go 模塊校驗和
├── Makefile # 構建命令
└── README.md # 此文件
注意:以下文件被 git 忽略,不會提交:
keys/- 私鑰和憑證config.local.*.yaml- 本地配置文件bin/- 編譯後的二進制文件.env- 環境變量apps/node_modules/,apps/dist/,apps/dist-tmp/- 應用程序構建工件
Healthcare Voice Agent
即時語音 AI 服務,讓患者可以詢問他們的健康記錄,並直接從他們的 EMR 中獲取語音回答。
技術棧
- PipeCat(開源,Daily.co)用於語音管道,包括語音識別(STT)、LLM 編排和語音合成(TTS),延遲低於 3 秒。
- Claude 用於臨床推理和工具調用。
- LangCare MCP FHIR Server(開源,Go)作為無狀態代理,連接到任何 FHIR R4 EMR,如 Epic、Cerner、GCP Healthcare API。
工作原理
MCP 是整個系統的粘合劑。PipeCat 的原生 MCP 客戶端在啟動時會自動發現 FHIR 工具。當患者詢問“我正在服用哪些藥物?”時,Claude 會調用 fhir_search,PipeCat 將其路由到 MCP 服務器,數據返回後,Claude 以自然語音進行回覆,無需手動設置工具架構。
三層 HIPAA 認證
在會話開始前驗證調用者身份,使用 bearer token 進行 MCP 認證,使用 OAuth2/SMART on FHIR 進行 EMR 認證,且不存儲任何 PHI 數據。
可替換性
可以將 Claude 替換為 Gemini,將 DeepGram 替換為 Google STT,將 Daily 替換為 WebSocket,而 MCP FHIR 層和臨床提示保持不變。
完整文檔和設置指南:pipecat-agent/README.md
LangCare CLI
命令行界面,將 4 種 FHIR MCP 工具(fhir_search、fhir_read、fhir_create、fhir_update)封裝為 CLI 子命令,通過 HTTP 進行調用。它專為不原生支持 MCP 的 AI 代理框架設計,如 LangChain、smolagents、CrewAI、AutoGen 以及任何可以調用子進程的框架。CLI 會在內部處理 MCP 會話握手,因此代理可以在 stdout 上獲得乾淨的 JSON 數據,無需瞭解協議細節。
安裝
pip install "langcare-cli @ git+https://github.com/langcare/langcare-mcp-fhir.git#subdirectory=cli"
使用
langcare fhir search Patient --query "name=John"
langcare fhir read Patient 123
langcare fhir create Observation --data @obs.json
langcare fhir update Patient 123 --data @patient.json
技能庫 中的 40 多種臨床技能可以直接使用,因為技能引用的是抽象的工具名稱,而不是傳輸方式。在你的代理框架中註冊 CLI 作為子進程工具,技能可以無需修改即可運行。
完整文檔和設置指南:cli/README.md
📄 許可證
請參閱 LICENSE 文件。
由 LangCare 團隊和貢獻者用心打造
通過更好的 AI 基礎設施改善醫療保健
替代品













