项目简介

Vista API MCP 服务器旨在作为大型语言模型 (LLM) 和美国退伍军人事务部 (VA) VistA 电子健康记录 (EHR) 系统之间的安全桥梁。它将复杂的VistA数据转换为标准化格式,并提供一套工具(通过MCP协议暴露),使LLM能够安全地检索、汇总患者医疗记录和临床文档,从而辅助医护人员完成各种AI应用任务。

主要功能点

  • 安全数据访问: 提供LLM安全访问VistA EHR系统的能力,无需LLM直接理解复杂的医疗数据格式和API。
  • 数据标准化: 将VistA的传统数据格式转换为LLM易于处理的标准化格式,简化医疗AI应用的开发。
  • 上下文提供: 向LLM客户端提供包括患者人口统计信息、生命体征、实验室结果、药物、医嘱、诊断、健康因素、就诊记录、文档等丰富的患者上下文信息。
  • 工具集成: 暴露一系列可由LLM调用的工具,实现对VistA数据的查询、过滤和汇总等操作。
  • 会话管理与日志: 支持会话管理和HIPAA(医疗信息可移植性与责任法案)兼容的日志记录,确保数据安全和可追溯性。
  • 多种传输协议: 支持Stdio和Streamable HTTP等传输协议与LLM客户端通信。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/department-of-veterans-affairs/octo-vista-api-x-mcp-server-example.git
    cd octo-vista-api-x-mcp-server-example
  2. 运行设置脚本: 该脚本将创建Python虚拟环境、安装依赖,并为模拟服务器生成必要的RSA密钥。
    python run.py setup
    此步骤可能需要几分钟。如果遇到Windows特定的问题,可以先运行 'python run.py check-windows' 获取诊断信息。

服务器配置(供MCP客户端使用)

MCP服务器可以通过Stdio或HTTP协议与客户端通信。以下是两种常用配置示例:

  • Stdio模式 (推荐用于本地开发或与Claude Desktop等集成): MCP客户端的配置文件(例如JSON格式)中,可添加如下服务器配置:

    {
      "name": "vista-api-mcp-server",
      "description": "VistA API MCP服务器,提供患者医疗记录访问",
      "command": "python",
      "args": ["server.py"],
      "env": {
        "VISTA_API_BASE_URL": "http://localhost:8888",
        "VISTA_AUTH_URL": "http://localhost:8888",
        "VISTA_API_KEY": "test-wildcard-key-456",
        "DEFAULT_STATION": "500",
        "DEFAULT_DUZ": "10000000219",
        "ENABLE_CONSOLE_LOGGING": "true",
        "LOG_LEVEL": "DEBUG"
      }
    }

    配置注释:

    • 'name': MCP服务器的唯一名称。
    • 'description': 服务器的简要描述。
    • 'command': 启动Python解释器的命令。
    • 'args': 传递给Python解释器的参数,这里是启动 'server.py'。
    • 'env': 环境变量,用于配置VistA API模拟器('http://localhost:8888')和默认的退伍军人事务部(VA)站点及用户DUZ。'ENABLE_CONSOLE_LOGGING' 和 'LOG_LEVEL' 用于调试输出。
  • HTTP模式 (推荐用于生产环境部署或基于HTTP的客户端): MCP客户端的配置文件(例如JSON格式)中,可添加如下服务器配置:

    {
      "name": "vista-api-mcp-server-http",
      "description": "VistA API MCP服务器 (HTTP模式),提供患者医疗记录访问",
      "transport": "http",
      "url": "http://localhost:8000/mcp",
      "headers": {
        "X-Vista-Station": "500",
        "X-Vista-Duz": "10000000219",
        "Authorization": "Bearer YOUR_JWT_TOKEN"
      }
    }

    配置注释:

    • 'name': MCP服务器的唯一名称。
    • 'description': 服务器的简要描述。
    • 'transport': 指定为 'http' 传输协议。
    • 'url': MCP服务器的HTTP端点。
    • 'headers': HTTP请求头,可以用于传递VistA站点、用户DUZ等上下文信息,以及LLM客户端的JWT认证令牌。

基本使用方法

  1. 启动模拟服务器和MCP服务器: 运行以下命令启动VistA API模拟服务器(包含Redis缓存)和MCP服务器。这是本地开发和测试的标准方式。

    python run.py dev-with-mock

    该命令会同时启动:

    • VistA API模拟服务器 (监听于 'http://localhost:8888')
    • MCP服务器的HTTP传输 (监听于 'http://localhost:8000/mcp')
    • MCP服务器的Stdio传输 (用于MCP客户端,如Claude Desktop) 如果仅需HTTP传输,可以使用 'python run.py http-with-mock'。
  2. 连接MCP客户端: 将上述生成的MCP服务器配置添加到您的MCP客户端(如Claude Desktop或自定义LLM应用)中。根据客户端的说明进行连接。

  3. LLM交互: 一旦连接成功,您的LLM应用即可通过调用服务器暴露的工具来访问患者数据。例如,您可以尝试:

    • "获取患者ANDERSON,JAMES ROBERT的最新生命体征。"
    • "列出患者MARTINEZ,MARIA ELENA的活动药物。"
    • "汇总患者THOMPSON,MICHAEL DAVID在过去90天内的就诊记录。" 服务器将根据LLM的请求执行相应的工具,从VistA API模拟器获取数据,并返回结构化的响应供LLM进一步处理。

信息

分类

商业系统