openEHR MCP 服务器 (PHP) 使用说明
项目简介
'openehr-mcp-server' 是一个基于 PHP 8.4 的 Model Context Protocol (MCP) 服务器实现。它旨在将大型语言模型 (LLM) 客户端(如 Claude Desktop, LibreChat.ai)与 openEHR REST API 连接起来。通过标准的 MCP 协议,LLM 可以访问 openEHR 平台上的医疗资源,调用各种工具执行操作,并利用预定义的 Prompt 模板进行引导式交互,从而实现对电子健康记录 (EHR) 的智能管理和查询。
主要功能点
- openEHR 资源访问: 允许 AI 助手列出、获取、上传 openEHR 模板,管理 EHR (创建、获取、查看状态),处理 COMPOSITION (创建、获取、更新、删除、查看历史),并执行 AQL 查询。
- CKM (Clinical Knowledge Manager) 集成: 提供工具以列出和获取 CKM 中的原型定义,帮助 AI 理解临床知识结构。
- openEHR 类型规范探索: 允许探索和获取 openEHR 参考模型 (RM)、应用模型 (AM) 等组件的 BMM (Basic Meta-Model) JSON 类型定义。
- 可调用工具集: 提供了丰富的工具,覆盖了 openEHR 数据的 CRUD 操作、查询以及模板和原型管理。
- 引导式 Prompt 模板: 包含多个预定义的 Prompt 模板,用于引导 AI 助手完成常见的医疗工作流程,例如生命体征捕获、患者评估、用药回顾、AQL 查询执行和 EHR/COMPOSITION 管理等。
- 多传输协议支持: 支持 Stdio 和 Streamable HTTP 两种传输协议,方便与不同类型的 MCP 客户端集成。
- Docker 支持: 提供 Docker 镜像,简化部署和开发环境配置。
安装步骤
以下是使用 Docker 快速启动 'openehr-mcp-server' 的步骤:
-
克隆仓库: 打开终端或命令行工具,执行以下命令克隆项目仓库:
git clone https://github.com/code24-nl/openehr-mcp-server.git cd openehr-mcp-server -
配置环境变量: 复制 '.env.example' 文件到 '.env',并根据您的实际 openEHR 服务器地址('OPENEHR_API_BASE_URL')和 CKM 服务器地址('CKM_API_BASE_URL')进行修改。
cp .env.example .env # 使用文本编辑器打开 .env 文件,根据需要修改其中的配置项。 # 例如: # OPENEHR_API_BASE_URL=http://localhost:8080/ehrbase/rest/openehr # CKM_API_BASE_URL=https://ckm.openehr.org/ckm/rest -
使用 Docker 运行服务器: 在项目根目录下执行以下命令,启动 MCP 服务器的 Docker 容器:
docker compose up -d mcp服务器将以 Streamable HTTP 模式在 'http://localhost:8242/mcp_openehr' 监听。
-
可选: 启动 EHRbase (测试用): 如果您需要一个 openEHR 后端进行测试,可以启动项目内置的 EHRbase Docker 栈:
docker compose --profile ehrbase up -dEHRbase 将在 'http://localhost:8080' 运行。
服务器配置 (MCP 客户端用)
MCP 客户端需要配置服务器的连接信息。以下是两种常见 MCP 客户端的配置示例。请将以下信息添加到您的 MCP 客户端配置中,而不是在终端中执行。
Claude Desktop (Stdio 模式,通过 Docker 运行)
将以下 JSON 片段添加到 Claude Desktop 的 'mcpServers' 配置中:
{ "mcpServers": { "openehr": { "command": "docker", "args": [ "run", "-i", "--rm", "--network=host", "-e", "OPENEHR_API_BASE_URL=http://localhost:8080/ehrbase/rest/openehr", // 您的 openEHR 服务器地址,请根据 .env 文件中的配置调整 "-e", "CKM_API_BASE_URL=https://ckm.openehr.org/ckm/rest", // 您的 CKM 服务器地址,请根据 .env 文件中的配置调整 "code24-nl/openehr-mcp-server:latest", // MCP 服务器的 Docker 镜像名称 "php", "server.php", "--transport=stdio" // 在 Docker 容器中以 Stdio 模式启动 MCP 服务器 ] } } }
- 'command': 启动 MCP 服务器的外部命令,这里是 'docker'。
- 'args': 传递给 'command' 的参数列表。
- '-i', '--rm', '--network=host': Docker 运行参数。
- '-e OPENEHR_API_BASE_URL', '-e CKM_API_BASE_URL': 设置 MCP 服务器内部使用的环境变量,使其连接到正确的 openEHR 和 CKM 后端。
- 'code24-nl/openehr-mcp-server:latest': 指定要运行的 MCP 服务器 Docker 镜像。
- 'php server.php --transport=stdio': 在容器内执行的命令,启动 PHP MCP 服务器并指定使用 'stdio' 传输协议。
LibreChat.ai (Streamable HTTP 模式)
-
确保 MCP 服务器已运行: 首先,按照“安装步骤”中的说明,确保您的 'openehr-mcp-server' 已通过 'docker compose up -d mcp' 启动并正在运行。服务器将监听 'http://localhost:8242/mcp_openehr'。
-
配置 LibreChat: 将以下 YAML 片段添加到 LibreChat 服务器的配置文件(例如 'librechat.yaml' 或 'packages/server/librechat.yaml')中:
mcpServers: openehr-mcp-server: type: streamable-http url: http://host.docker.internal:8242/mcp_openehr # MCP 服务器的访问 URL
- 'type': 指明 MCP 服务器使用的传输协议类型,这里是 'streamable-http'。
- 'url': MCP 服务器的完整访问地址。'http://host.docker.internal:8242/mcp_openehr' 允许运行在 Docker 容器中的 LibreChat 访问宿主机上的 MCP 服务器。如果 LibreChat 不在 Docker 中运行,可以直接使用 'http://localhost:8242/mcp_openehr'。
基本使用方法
成功配置并连接 MCP 客户端后,您可以开始与 openEHR 系统进行智能交互。以下是一些您可以尝试的基本操作示例:
-
请求 openEHR 模板: 您可以让 AI 助手列出 openEHR 服务器上所有可用的模板: “List all available openEHR templates.”
-
创建 EHR: 指示 AI 助手为某个主题创建新的电子健康记录: “Create an EHR for subject ID 'patient123'.”
-
捕获生命体征: 使用 'vital_sign_capture' Prompt 引导 AI 捕获患者的生命体征数据并保存为 COMPOSITION: “Capture vital signs for patient ID 'abc-123'.”
-
执行 AQL 查询: 让 AI 助手执行特定的 AQL (Archetype Query Language) 查询,以检索患者数据: “Execute an AQL query to find all blood pressure observations for EHR ID 'ehr-xyz'.”
-
探索 CKM 原型: 让 AI 助手搜索并获取临床知识管理系统 (CKM) 中的原型定义: “List archetypes related to 'blood pressure' from CKM.”
信息
分类
网页与API