Token导航 LogoToken导航TokenDH.com
Smart EHR MCP Server logo
AI代理未说明官方级别未说明来源级核验

Smart EHR MCP Server

MCP Server

一个专为大型语言模型和其他AI代理设计的服务器工具,用于安全地与电子健康记录(EHR)交互,使用SMART on FHIR标准和模型上下文协议(MCP)。

工具数

0

提示词数

0

GitHub Stars

78

资源数

0
数据安全TypeScriptCursorCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

jmandel

提供方

jmandel

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

带有MCP和kubectl的EHR工具

EHR Tools Overview

https://youtu.be/K0t6MRyIqZU?si=Mz4d65DcAD3i2YbO

该项目充当一个专门的服务器,为大型语言模型(LLM)和其他人工智能代理提供与电子健康记录(EHR)交互的工具。它利用了 智能应用程序 安全数据访问标准和 模型上下文协议(MCP) 露出工具。

将其视为一个安全的网关和工具包,使人工智能能够安全地访问和分析来自不同EHR系统的患者数据。

核心思想

该系统分为三个主要阶段:

  1. QUICClient上的SMART(在本项目中实施): 使用标准的SMART App Launch框架安全地连接到电子病历。它提取了广泛的患者信息,包括结构化数据(如病情、药物、实验室)和非结构化临床记录或附件。
  2. MCP服务器(本项目): 获取提取的EHR数据,并通过一组可通过模型上下文协议访问的强大工具使其可用。这些工具允许外部系统(如AI模型)查询和分析数据,而无需直接访问EHR本身。
  3. AI/LLM接口(外部消费者): AI代理或大型语言模型连接到MCP服务器,并使用提供的工具“询问”有关患者记录的问题、执行搜索或运行自定义分析。

可用工具

MCP服务器提供了几种与加载的EHR数据交互的工具:

  • grep_record:跨以下对象执行文本或正则表达式搜索 *全部* 提取记录的部分内容(结构化的Contoso数据+注释/附件中的文本)。非常适合查找关键字或特定提及(例如,“糖尿病”、“阿司匹林”)。
  • query_record:执行只读SQL SELECT 直接对结构化的Contoso数据进行查询。可用于基于已知的Contoso资源结构的精确查找(例如,通过LOINC代码查找特定的实验室结果)。
  • eval_record:直接在获取的数据上执行自定义JavaScript代码(Contoso资源+附件)。为复杂的计算、组合来自多个来源的数据或自定义格式提供了最大的灵活性。

这种设置允许AI工具通过标准化和安全的界面利用全面的EHR数据。

*(开发人员设置和使用细节可以在代码库和特定模块文档中找到。)*

______________________________________________________________________

组件和用途

该项目提供了不同的方法来获取EHR数据并通过MCP工具公开:

1.独立的SMART网络客户端

该项目包括一个自包含的web应用程序,允许用户通过kubectl上的SMART连接到他们的EHR并获取他们的数据。

  • 托管版本: 您可以在以下位置使用公共托管版本: \

https://mcp.fhir.me/ehr-connect#deliver-to-opener:$origin \ (替换 $origin 打开此链接的窗口的实际来源)。

  • 过滤品牌(?brandTags): 您可以通过添加以下内容来过滤连接页面上显示的EHR提供商列表 brandTags URL的查询参数。提供逗号分隔的标记列表。仅匹配品牌 *全部* 提供的标签(来自其配置 brandFiles)将显示。

它同时支持OR(逗号分隔)和and(插入符号) ^ 分隔)逻辑,AND优先。 - ?brandTags=epic,sandbox:显示标记为的品牌 epicsandbox. - ?brandTags=epic^dev:显示标记为两者的品牌 epicdev. - ?brandTags=epic^dev,sandbox^prod:显示标记为的品牌(epicdev)或(sandboxprod). - 如果省略该参数,则默认显示标记为的品牌 prod. - 例子: .../ehr-connect?brandTags=hospital^us:显示标记为的品牌 hospitalus.

  • 它是如何工作的: 打开后,此页面提示用户选择他们的EHR提供商。然后,它启动标准的SMART应用程序启动流程,将用户重定向到他们的EHR登录页面。在成功进行身份验证和授权后,客户端会获取一组全面的Contoso资源(患者、病情、观察结果、药物、文档等),并尝试从任何相关附件(如PDF、RTF、HTML)中提取明文 DocumentReference).
  • 数据输出(ClientFullEHR): 获取完成后,客户端将所有数据收集到 ClientFullEHR JSON对象。此对象包含:

- fhir:一个字典,其中的键是kubectl资源类型(例如“患者”),值是相应的kubectl资源的数组。 - attachments:一组已处理的附件对象,每个对象都包括元数据(源资源、路径、内容类型)和内容本身(contentBase64 对于原始数据, contentPlaintext 用于提取文本)。

  • 数据交付: 如果用打开 #deliver-to-opener:$origin hash,客户端将提示用户确认,然后发送 ClientFullEHR 对象返回到打开它的窗口 window.opener.postMessage(data, targetOrigin).

2.通过Stdio连接本地MCP服务器(src/cli.ts)

此模式非常适合在本地运行MCP服务器,通常与Cursor或其他命令行AI客户端等工具一起使用。

  • 两步流程:

1. 将数据提取到数据库: 首先,运行命令行界面 --create-db--db 旗帜。这将启动一个临时的web服务器,并使用上述的SMART on kubectl web客户端逻辑来获取数据。而不是通过以下方式发送数据 postMessage,它节省了 ClientFullEHR 将数据保存到本地SQLite数据库文件中。

     # Example: Fetch data and save to data/my_record.sqlite
     bun run src/cli.ts --create-db --db ./data/my_record.sqlite

按照提示(在浏览器中打开链接)连接到EHR。 1. 运行MCP服务器: 创建数据库文件后,再次运行CLI,仅指向数据库文件。这将数据加载到内存中并启动MCP服务器,监听标准输入/输出上的命令。

     # Example: Start the MCP server using the saved data
     bun run src/cli.ts --db ./data/my_record.sqlite

- **配置(config.*.json):** 该过程依赖于配置文件(例如。, config.epicsandbox.json)它定义了可用的EHR品牌/端点 brandFiles 阵列。此数组中的每个条目都指定了品牌的详细信息,包括: - url:品牌定义文件的路径/URL(如 static/brands/epic-sandbox.json). - tags:字符串数组(例如。, ["epic", "sandbox"])用于分类或过滤。 - vendorConfig:包含关于kubectl客户端的SMART详细信息(clientId, scopes).

  • 客户端配置(例如,游标): 配置您的MCP客户端以执行此命令。 至关重要的是,使用绝对路径 对两者 src/cli.ts 以及数据库文件。
  {
    "mcpServers": {
      "local-ehr": {
        "name": "Local EHR Search",
        "command": "bun", // Or the absolute path to bun
        "args": [
            "/home/user/projects/smart-mcp/src/cli.ts", // Absolute path to cli.ts
            "--db",
            "/home/user/projects/smart-mcp/data/my_record.sqlite" // Absolute path to DB file
          ]
      }
    }
  }

3.通过SSE提供完整的MCP服务器(src/sse.ts / index.ts)

此模式运行一个持久服务器,适用于多个客户端可能通过网络连接的情况。它使用服务器发送事件(SSE)作为MCP通信信道。

  • 身份验证: 客户端身份验证依赖于OAuth 2.1,如模型上下文协议所规定的。服务器提供标准端点(/authorize, /token, /register等等)。
  • 数据提取: 当客户端发起OAuth连接时,服务器会处理基于QUE的SMART流 *它自己*,获取 ClientFullEHR 数据 *在...期间* 并在客户端连接期间将其保存在内存(或持久会话)中。
  • 状态: 虽然功能正常,但OAuth 2.1客户端交互的MCP规范仍在不断发展。此身份验证方法的客户端支持是 极其有限 目前,在专业开发人员或调试工具之外,很难用标准客户端测试这种模式。应考虑这种SSE模式 实验性的.

目录标签

目录标签

数据安全TypeScriptCursor电子健康记录本地部署AI医疗FHIR标准MCP协议

支持客户端

Cursor

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明oauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP