项目简介
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客户端通信。
安装步骤
- 克隆仓库:
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 - 运行设置脚本: 该脚本将创建Python虚拟环境、安装依赖,并为模拟服务器生成必要的RSA密钥。
此步骤可能需要几分钟。如果遇到Windows特定的问题,可以先运行 'python run.py check-windows' 获取诊断信息。python run.py setup
服务器配置(供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认证令牌。
基本使用方法
-
启动模拟服务器和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'。
-
连接MCP客户端: 将上述生成的MCP服务器配置添加到您的MCP客户端(如Claude Desktop或自定义LLM应用)中。根据客户端的说明进行连接。
-
LLM交互: 一旦连接成功,您的LLM应用即可通过调用服务器暴露的工具来访问患者数据。例如,您可以尝试:
- "获取患者ANDERSON,JAMES ROBERT的最新生命体征。"
- "列出患者MARTINEZ,MARIA ELENA的活动药物。"
- "汇总患者THOMPSON,MICHAEL DAVID在过去90天内的就诊记录。" 服务器将根据LLM的请求执行相应的工具,从VistA API模拟器获取数据,并返回结构化的响应供LLM进一步处理。
信息
分类
商业系统