项目简介
该仓库是一个基于 Model Context Protocol (MCP) 实现的服务器,专门用于与 Azure Health Data Services FHIR (Fast Healthcare Interoperability Resources) 服务进行交互。它为大型语言模型(LLMs)提供了一个标准化的接口,以便通过 MCP 工具和资源访问和操作存储在 Azure FHIR 中的医疗健康数据。
主要功能点
- 医疗数据访问: 允许 LLM 通过 MCP 标准访问和检索各种 FHIR 资源,如 Patient (患者), Observation (观察), Medication (药物) 等。
- 数据搜索能力: 提供 'search_fhir' 工具,支持基于特定参数搜索 FHIR 资源,方便查找符合条件的医疗数据。
- Azure FHIR 集成: 负责处理与 Azure FHIR 服务的连接、认证(OAuth2)以及数据交互的细节。
- 标准化接口: 通过 MCP 协议(JSON-RPC)与 LLM 客户端通信,提供统一的数据和服务访问方式。
安装步骤
- 安装 Python 和 uv: 确保您的系统已安装 Python 3.13 或更高版本,并安装了 'uv' 包管理器(安装方法请参考其官方文档)。
- 克隆仓库: 使用 Git 命令将仓库克隆到本地。
git clone https://github.com/erikhoward/azure-fhir-mcp-server.git cd azure-fhir-mcp-server - 创建并激活虚拟环境:
- Linux/macOS:
python -m venv .venv source .venv/bin/activate - Windows:
python -m venv .venv .venv\Scripts\activate
- Linux/macOS:
- 安装项目依赖:
pip install -e ".[dev]" - 配置环境: 复制 '.env.example' 文件为 '.env',并根据您的 Azure FHIR 服务信息编辑 '.env' 文件,填写 'fhirUrl', 'clientId', 'clientSecret', 'tenantId' 等必要的认证和连接信息。
服务器配置(供MCP客户端参考)
MCP客户端(如Claude Desktop)需要配置如何启动并连接到此MCP服务器。典型的配置会包含服务器名称、启动服务器的命令及其参数,以及连接 Azure FHIR 服务所需的认证信息(通常通过环境变量传递给服务器)。
例如,一个MCP客户端的配置片段可能如下所示(请根据您的客户端文档进行实际配置):
- 服务器名称: 例如设置为 'fhir'。
- 启动命令 (command): 指定用于启动服务器的可执行文件或脚本,例如 'uvx' 或 'uv'。
- 启动参数 (args): 提供传递给启动命令的参数,例如 'azure-fhir-mcp-server' 或 '--directory /path/to/repo run azure_fhir_mcp_server'。
- 环境变量 (env): 设置服务器运行时需要读取的环境变量,包括 Azure FHIR 的 URL ('fhirUrl')、客户端ID ('clientId')、客户端密钥 ('clientSecret') 和租户ID ('tenantId')。
客户端配置示例(请勿直接复制到此处,仅为结构说明):
{ "mcpServers": { "fhir": { "command": "uvx", // 或 "uv" "args": [ "azure-fhir-mcp-server" ], // 或其他运行参数 "env": { "LOG_LEVEL": "INFO", "fhirUrl": "https://your-fhir-server.azurehealthcareapis.com/fhir", "clientId": "your-client-id", "clientSecret": "your-client-secret", "tenantId": "your-tenant-id" } } } }
配置完成后,请重启您的 MCP 客户端应用。
基本使用方法
配置并启动 MCP 服务器后,连接到该服务器的 LLM 客户端即可通过 MCP 协议与之交互:
- 访问资源: LLM 可以通过特定的 'fhir://' URI 来请求访问特定的 FHIR 资源。例如,请求 'fhir://Patient/123' 可以获取 ID 为 123 的患者信息,请求 'fhir://Observation/' 可以获取观察资源列表。
- 调用工具: LLM 可以调用 'search_fhir' 工具,并提供资源类型和搜索参数(如 '{ "name": "John", "birthdate": "1990-01-01" }')来执行更灵活的 FHIR 数据搜索。
MCP 服务器会处理这些请求,调用 Azure FHIR API 获取数据,并将结果通过 MCP 协议返回给 LLM 客户端。
信息
分类
AI与计算