项目简介
本项目是一个基于Model Context Protocol (MCP) 实现的服务器,旨在为大语言模型(LLM)提供与VistA医疗系统相关的上下文信息。它通过集成模拟的VistA环境和fmQL(Fileman Query Language)服务,将VistA中的患者和药物数据作为可供AI调用的“工具”暴露出来,增强LLM对医疗领域特定信息的访问和理解能力。
主要功能点
- VistA数据访问: 允许AI通过预定义的工具访问VistA数据库中的患者和药物信息。
- 工具注册与执行: 实现MCP协议中的工具(Tool)功能,AI客户端可以发现并调用服务器提供的查询工具。
- 提供AI上下文: 作为LLM的外部知识源,为AI提供结构化的VistA相关数据,使其能够回答或处理相关查询。
- 集成 Ollama: 项目设计为与自托管的Ollama LLM容器配合工作,但MCP服务器本身可与任何兼容的MCP客户端对接。
安装步骤
- 安装依赖: 确保您的系统已安装 Docker 和 docker-compose。
- 克隆项目: 打开终端,执行命令克隆代码仓库:
git clone https://github.com/RamSailopal/VistAAI.git - 进入目录: 切换到项目目录:
cd VistAAI - 启动服务: 使用docker-compose启动所有必要的容器,包括MCP服务器、Ollama、VistA/fmQL服务:
docker-compose up -d - 监控初始化: 等待容器完全初始化。您可以通过查看日志来监控过程:
观察日志输出直到不再有新的活动信息,表示服务已准备就绪。按下 'Ctrl+C' 退出日志查看。docker-compose logs -f - MCP服务器运行: MCP服务器现在已作为Docker容器在后台运行,并监听连接。
服务器配置 (供MCP客户端参考)
MCP服务器是为MCP客户端(通常集成在LLM运行环境或应用中)提供服务的。MCP客户端需要知道如何启动或连接到这个服务器。根据此仓库的结构,MCP客户端配置通常需要以下信息,用于在需要时启动服务器进程并与之通信(注意:这部分信息是给客户端开发者参考的,用户无需手动执行):
{ "server_name": "VistA AI Context Server", "command": "./mcp-server.sh", "args": [], "description": "Provides VistA patient and drug data via MCP tools." }
- 'server_name': MCP服务器的标识名称。
- 'command': 启动MCP服务器进程所需的命令行指令。在此项目中,是通过执行根目录下的 './mcp-server.sh' 脚本来启动MCP服务器。
- 'args': 启动命令所需的额外参数列表。此项目启动脚本不需要额外的参数。
- 'description': 服务器功能的简要描述。
MCP客户端会使用这些信息在后台启动服务器进程,并通过标准输入/输出(Stdio)或其他配置的传输协议(如WebSocket,尽管本项目默认可能使用Stdio via FastMCP/mcphost)进行基于JSON-RPC的通信。
基本使用方法
一旦按照“安装步骤”成功启动了所有Docker容器,特别是MCP服务器容器,该服务器就会在后台运行并等待连接。您不需要直接与 './mcp-server.sh' 脚本交互(除非您想手动测试启动)。
要使用这个MCP服务器提供的功能,您需要一个兼容MCP协议的客户端。这个客户端通常是一个与LLM交互的应用或框架(例如,一个支持外部工具调用的AI聊天界面)。您需要在客户端的配置中指定连接到此VistA AI Context Server,使用上面“服务器配置”中提供的信息('command' 和 'args')。
配置完成后,当LLM需要访问VistA相关的患者或药物信息时,MCP客户端会负责:
- 根据需要启动(如果尚未运行)MCP服务器进程。
- 向MCP服务器发送JSON-RPC请求,例如查询服务器的能力(发现可用的工具)。
- 根据LLM的需求,构建并发送调用特定工具的JSON-RPC请求(例如,调用 'vista_pat_details_name' 工具并传入患者姓名作为参数)。
- 接收MCP服务器返回的包含工具执行结果的JSON-RPC响应。
- 将工具结果反馈给LLM,使AI能够利用这些信息生成更准确、更丰富的回复。
用户通过与客户端应用交互,间接利用了此MCP服务器提供的VistA数据上下文。
信息
分类
AI与计算