项目简介
'MCP FHIR Patient Index' 是一个专注于患者数据管理的后端应用。它实现了患者主索引(Master Patient Index, MPI)的核心功能,允许存储和管理患者的详细信息。该项目不仅提供了符合FHIR R4(Fast Healthcare Interoperability Resources)标准的API接口,还深度集成了Model Context Protocol (MCP) 服务器,旨在为大型语言模型(LLM)客户端提供标准化的上下文信息访问和功能调用能力。
主要功能点
- 内置MCP服务器: 以标准化的JSON-RPC协议,通过HTTP或Stdio向LLM客户端提供患者数据和功能。
- FHIR API支持: 提供符合FHIR R4规范的API,允许外部系统对患者资源进行创建、读取、更新和删除(CRUD)操作。
- 患者记录管理: 管理患者的基本人口统计信息、联系方式、地址、以及重要的身份识别号码等。
- 患者关联: 支持建立患者记录间的关联关系,如“拥有相同身份”。
- 数据快照: 能够为患者记录及其关联数据创建快照,便于版本管理和审计。
- 用户界面 (UI): 提供一个基础的Web界面,便于人工管理患者信息。
安装步骤
该项目推荐使用Docker进行快速部署和运行。
- 确保Docker已运行: 在您的系统上安装并启动Docker Desktop或Docker Engine。
- 创建Rails主密钥 (如果首次运行): 在项目根目录下执行 'bin/rails credentials:edit'。您无需进行任何编辑,直接退出编辑器即可自动创建 'config/master.key' 文件。这个密钥对于应用程序的运行至关重要。
- 构建Docker镜像:
在项目根目录下执行以下命令构建Docker镜像:
docker build -t mcp_fhir_patient_index . - 运行Docker容器:
执行以下命令启动Docker容器。请注意,这里的端口映射假定您希望通过宿主机的'3000'端口访问MCP服务,并且需要将'<config/master.key中的值>'替换为上一步骤中生成的实际密钥。
docker run -d -p 3000:3000 -e RAILS_MASTER_KEY=<config/master.key中的值> --name mcp_fhir_patient_index_runtime mcp_fhir_patient_index- '-d': 后台运行容器。
- '-p 3000:3000': 将容器内部的 '3000' 端口映射到宿主机的 '3000' 端口。
- '-e RAILS_MASTER_KEY=<值>': 设置Rails主密钥环境变量。
- '--name mcp_fhir_patient_index_runtime': 为容器指定一个名称。
- 'mcp_fhir_patient_index': 使用您之前构建的镜像名称。
服务器配置 (MCP客户端使用)
MCP服务器在Docker容器内部的 '3000' 端口上运行,并在 'http://localhost:3000/mcp/v20250618' 路径提供Streamable HTTP传输协议服务。MCP客户端可以按照以下配置连接到此服务器:
{ "serverName": "mcp_fhir_patient_index", "command": "docker", "args": [ "run", "--rm", "--network", "host", "-p", "3000:3000", "-e", "RAILS_MASTER_KEY=<请替换为实际的Rails主密钥>", "mcp_fhir_patient_index" ], "transport": "streamable_http", "baseUrl": "http://localhost:3000/mcp/v20250618" }
参数说明:
- 'serverName': 服务器的标识名称,此处为 'mcp_fhir_patient_index'。
- 'command': 启动MCP服务器所使用的命令,这里是 'docker'。如果MCP客户端需要自行启动服务器进程,它会执行此命令。
- 'args': 传递给 'command' 的参数列表。这些参数用于启动 'mcp_fhir_patient_index' Docker容器,并确保它能在宿主机的网络中通过'3000'端口访问。
- '--rm': 容器停止后自动删除。
- '--network host': 允许容器共享宿主机的网络命名空间,方便通过 'localhost' 访问。
- '-p 3000:3000': 将容器内部的 '3000' 端口映射到宿主机的 '3000' 端口。
- '-e RAILS_MASTER_KEY=<请替换为实际的Rails主密钥>': 设置Rails应用程序所需的主密钥。
- 'mcp_fhir_patient_index': 要启动的Docker镜像的名称。
- 'transport': 客户端与服务器通信所使用的传输协议。此处配置为 'streamable_http'。
- 'baseUrl': 当使用 'streamable_http' 传输协议时,MCP服务器的HTTP接口地址。
基本使用方法
- 启动服务器: 按照“安装步骤”中的说明运行Docker容器,确保MCP服务器正在监听 'http://localhost:3000/mcp/v20250618'。
- 连接MCP客户端: 使用上述“服务器配置”信息,在您的MCP客户端应用中建立与服务器的连接。
- 获取服务器能力: 连接后,LLM客户端可以发送标准的MCP 'initialize' 请求,以获取服务器支持的协议版本和声明的能力(如可用的资源)。例如,一个 'initialize' 请求可能看起来像:
{ "jsonrpc": "2.0", "id": "init-1", "method": "initialize", "params": { "protocolVersion": "2025-06-18", "capabilities": {}, "clientInfo": { "name": "MyLLMClient", "version": "1.0" } } } - 访问MCP资源:
- 获取服务器信息: 发送 'resources/read' 请求,URI为 'master-patient-index://info',以获取关于MCP服务器的简介。
- 获取所有患者摘要: 发送 'resources/read' 请求,URI为 'master-patient-index://all',以获取所有患者记录的纯文本摘要列表。
- 读取特定患者记录: 发送 'resources/read' 请求,URI为 'master-patient-index://patientrecord/{患者UUID}',其中 '{患者UUID}' 是患者的唯一标识符,以获取该患者的详细纯文本信息。
(请注意:目前该MCP服务器主要提供了资源访问能力,尚未实现可供LLM调用的工具和Prompt模板。)
信息
分类
商业系统