EHR Search MCP Server

使用说明

项目简介

EHR Search MCP Server 是一个专门为大型语言模型 (LLM) 和其他 AI 代理设计的 MCP 服务器,旨在安全且标准化地访问和分析电子健康记录 (EHR) 数据。它利用 SMART on FHIR 标准进行安全数据访问,并通过 Model Context Protocol (MCP) 暴露了一系列强大的数据分析工具,使得 AI 应用无需直接访问 EHR 系统即可安全地查询和分析患者数据。

主要功能点

  • 资源管理 (Resources): 虽然仓库本身不直接管理“资源”的概念,但它将从 EHR 系统检索的 FHIR 数据(例如患者信息、诊断、药物等)作为可操作的数据集提供给工具使用,可以理解为隐式地管理了 EHR 数据资源。
  • 工具注册和执行 (Tools): 实现了 'grep_record', 'query_record', 'eval_record', 'read_resource', 'read_attachment' 等工具,允许 LLM 客户端通过 MCP 协议调用这些工具来搜索、查询和分析 EHR 数据。
    • 'grep_record': 在整个 EHR 记录中执行文本或正则表达式搜索,适用于关键词查找。
    • 'query_record': 对结构化的 FHIR 数据执行 SQL 查询,用于精确的数据检索。
    • 'eval_record': 执行自定义 JavaScript 代码以进行复杂的数据分析和处理。
    • 'read_resource': 根据资源类型和 ID 读取特定的 FHIR 资源。
    • 'read_attachment': 读取 FHIR 资源附件的内容。
  • Prompt 模板 (Prompts): 仓库本身未显式定义 Prompt 模板功能。
  • 多种传输协议支持: 支持 Stdio (标准输入/输出) 和 SSE (Server-Sent Events) 两种传输协议,满足不同应用场景的需求。
  • OAuth 2.1 认证: 通过 OAuth 2.1 协议进行客户端身份验证,增强了服务器的安全性 (SSE 模式)。

安装步骤

  1. 安装 Bun: 确保已安装 Bun 运行时环境 (https://bun.sh/)。
  2. 克隆仓库: 'git clone https://github.com/jmandel/health-record-mcp.git'
  3. 进入仓库目录: 'cd health-record-mcp'
  4. 安装依赖: 'bun install'
  5. 构建 ehretriever 客户端: 运行 'bun run build:ehretriever' 构建用于数据获取的 Web 客户端 (仅在 '--create-db' 模式下需要)。

服务器配置

1. 本地 MCP 服务器 (Stdio 模式)

适用于本地开发和测试,通过标准输入/输出与 MCP 客户端通信。

MCP 客户端配置示例 (JSON):

{
  "mcpServers": {
    "local-ehr": {
      "name": "Local EHR Search",
      "command": "bun",
      "args": [
          "/path/to/health-record-mcp/src/cli.ts", // 请替换为 cli.ts 文件的绝对路径
          "--db",
          "/path/to/ehr-data/my_record.sqlite"    // 请替换为数据库文件的绝对路径
        ]
    }
  }
}

参数说明:

  • 'command': 设置为 'bun' (或 Bun 运行时的绝对路径)。
  • 'args': 参数数组,包含:
    • '/path/to/health-record-mcp/src/cli.ts': 'cli.ts' 脚本的绝对路径。
    • '--db': 指定数据库文件路径的标志。
    • '/path/to/ehr-data/my_record.sqlite': SQLite 数据库文件的绝对路径,用于存储 EHR 数据。 请确保使用绝对路径,并根据实际情况修改数据库文件路径。

2. 完整 MCP 服务器 (SSE 模式)

适用于需要网络连接的场景,通过 Server-Sent Events 协议与 MCP 客户端通信。

MCP 客户端配置: SSE 模式的服务器主要通过 OAuth 2.1 进行认证,客户端配置会更复杂,并且需要客户端支持 OAuth 2.1 客户端凭据流程。当前仓库的 SSE 模式仍处于实验阶段,标准 MCP 客户端可能尚不支持此认证方式。

服务器启动: SSE 模式服务器可以通过运行 'bun run src/sse.ts' 启动。

基本使用方法

  1. 获取 EHR 数据 (Stdio 模式 或 SSE 模式):

    • Stdio 模式:
      a. 运行命令 'bun run src/cli.ts --create-db --db ./data/my_record.sqlite' (示例) 以启动临时 Web 服务器并打开浏览器。 b. 在浏览器中完成 SMART on FHIR 流程以连接到 EHR 系统并获取数据。数据将保存到指定的 SQLite 数据库文件中。 c. 数据库文件创建完成后,配置 MCP 客户端连接到本地 Stdio 服务器 (参考上面的 "服务器配置 - 1. 本地 MCP 服务器 (Stdio 模式)")。
    • SSE 模式: SSE 模式服务器 ('bun run src/sse.ts') 启动后,客户端需要实现 OAuth 2.1 客户端流程以连接和认证 (当前客户端支持有限)。
  2. 使用 MCP 客户端连接服务器: 根据选择的服务器模式 (Stdio 或 SSE),配置 MCP 客户端连接到 EHR Search MCP Server。

  3. 调用工具: 通过 MCP 客户端,可以调用 'grep_record', 'query_record', 'eval_record', 'read_resource', 'read_attachment' 等工具,向服务器发送符合 MCP 协议的请求,以实现 EHR 数据的搜索、查询和分析。工具的具体使用方法和参数可以参考仓库 'src/tools.ts' 文件中定义的 Schema。

注意: SSE 模式的 OAuth 2.1 客户端支持目前可能有限,Stdio 模式更适合本地测试和开发。 使用绝对路径配置服务器启动命令和数据库文件路径,以确保 MCP 客户端能正确连接到服务器。

服务器信息