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' 的步骤:

  1. 克隆仓库: 打开终端或命令行工具,执行以下命令克隆项目仓库:

    git clone https://github.com/code24-nl/openehr-mcp-server.git
    cd openehr-mcp-server
  2. 配置环境变量: 复制 '.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
  3. 使用 Docker 运行服务器: 在项目根目录下执行以下命令,启动 MCP 服务器的 Docker 容器:

    docker compose up -d mcp

    服务器将以 Streamable HTTP 模式在 'http://localhost:8242/mcp_openehr' 监听。

  4. 可选: 启动 EHRbase (测试用): 如果您需要一个 openEHR 后端进行测试,可以启动项目内置的 EHRbase Docker 栈:

    docker compose --profile ehrbase up -d

    EHRbase 将在 '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 模式)

  1. 确保 MCP 服务器已运行: 首先,按照“安装步骤”中的说明,确保您的 'openehr-mcp-server' 已通过 'docker compose up -d mcp' 启动并正在运行。服务器将监听 'http://localhost:8242/mcp_openehr'。

  2. 配置 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 系统进行智能交互。以下是一些您可以尝试的基本操作示例:

  1. 请求 openEHR 模板: 您可以让 AI 助手列出 openEHR 服务器上所有可用的模板: “List all available openEHR templates.”

  2. 创建 EHR: 指示 AI 助手为某个主题创建新的电子健康记录: “Create an EHR for subject ID 'patient123'.”

  3. 捕获生命体征: 使用 'vital_sign_capture' Prompt 引导 AI 捕获患者的生命体征数据并保存为 COMPOSITION: “Capture vital signs for patient ID 'abc-123'.”

  4. 执行 AQL 查询: 让 AI 助手执行特定的 AQL (Archetype Query Language) 查询,以检索患者数据: “Execute an AQL query to find all blood pressure observations for EHR ID 'ehr-xyz'.”

  5. 探索 CKM 原型: 让 AI 助手搜索并获取临床知识管理系统 (CKM) 中的原型定义: “List archetypes related to 'blood pressure' from CKM.”

信息

分类

网页与API