FHIR MCP Server 实现了一个完整的模型上下文协议(MCP)服务器,旨在促进基于大语言模型(LLM)的代理与符合 FHIR 标准的后端之间的无缝交互。它提供了一个标准化接口,通过一套全面的工具实现对 FHIR 资源的完整 CRUD 操作,兼容 MCP 的客户端(如 Claude Desktop)可通过自然语言提示查询和操作临床数据。
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
{
"mcpServers": {
"docker-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--init",
"--mount", // 可选 - 用于重新加载的卷
"type=bind,source=/app,target=/root_project/app" , // 可选 - 用于重新加载的卷
"--mount",
"type=bind,source=/config/.env,target=/root_project/config/.env" ,
"mcp-server:latest"
]
}
}
}
确保将 替换为你实际的安装路径。
(Get-Command uv).Path
- MacOS/Linux:
which uv
然后,更新配置文件:
{
"mcpServers": {
"uv-mcp-server": {
"command": "uv",
"args": [
"run",
"--frozen",
"--directory",
"" ,
"start"
],
"env": {
"PATH": ""
}
}
}
}
确保将 替换为实际的 uv 路径(到 bin 文件夹)。
5. 重启 MCP 客户端
完成上述所有步骤后,重启 MCP 客户端以应用更改。在某些情况下,你可能需要使用任务管理器或系统的进程管理器终止所有相关进程。这可确保:
(返回顶部)
.env 文件提供广泛的配置选项。服务器采用模块化架构构建:
(返回顶部)
此演示展示了 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 服务器的功能,例如搜索能力和数据关系。虽然你可以使用 Synthea 生成合成数据,然后手动将生成的数据包导入服务器,但 fhir-mcp-server 简化了这一过程,允许你直接通过 Claude 生成和部署测试数据。
这消除了分别运行 synthea、下载数据包并手动导入 FHIR 服务器的典型工作流程。相反,你可以在 Claude 的界面内创建有针对性的测试场景、生成合适的合成数据并填充服务器。
注意: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 |
(返回顶部)
FHIR MCP 服务器提供了一套全面的工具,用于与 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 |
使用向量嵌入对索引文档进行语义搜索 |
| 工具 | 描述 |
|---|---|
get_loinc_codes |
检索医学观察和实验室测试的标准化 LOINC 代码 |
(返回顶部)
我们正在不断为 FHIR MCP 服务器添加新功能。以下是即将推出的功能:
如果你有建议,欢迎与我们联系或直接贡献代码!
(返回顶部)
本项目采用 MIT 许可证进行分发。详情请参阅 MIT 许可证。
由 Momentum 用心打造 • 借助人工智能变革医疗数据管理