患者数据管理系统
一个全栈应用程序,具有MCP(模型上下文协议)服务器后端和用于管理和查询患者数据的React前端。采用人工智能驱动的聊天机器人,使用Groq LLM通过MCP工具智能查询患者数据。
项目结构
MCP-Medical-Agent/
├── backend/ # Backend services
│ ├── server.js # MCP server (stdio transport)
│ ├── mcp-bridge.js # MCP Bridge Server (HTTP to MCP stdio)
│ ├── api-server.js # Alternative API server (direct data access)
│ ├── data.json # Patient data
│ ├── cli-test.js # CLI testing tool
│ ├── CHECK_ENV.js # Environment variable checker
│ ├── SETUP_ENV.md # Environment setup guide
│ ├── test-server.js # Test server
│ └── package.json
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ │ ├── Chatbot.jsx
│ │ │ ├── PatientList.jsx
│ │ │ ├── PatientById.jsx
│ │ │ ├── PatientSearch.jsx
│ │ │ ├── PatientsByBloodType.jsx
│ │ │ ├── PatientsByAllergy.jsx
│ │ │ └── PatientCard.jsx
│ │ ├── services/ # API service
│ │ │ └── api.js
│ │ ├── App.jsx
│ │ └── App.css
│ └── package.json
├── package.json # Root package.json with convenience scripts
├── README.md # This file
└── TROUBLESHOOTING.md # Troubleshooting guide特性
后端
- MCP服务器 (
server.js):将患者数据作为MCP工具和资源公开(stdio传输) - MCP网桥服务器 (
mcp-bridge.js):通过stdio将请求转发到MCP服务器的HTTP网桥(JSON-RPC) - AI聊天集成:Groq LLM,带有自动调用MCP工具的函数调用
- 环境检查器 (
CHECK_ENV.js):用于验证.env配置的实用程序 - 5患者查询工具:
1. get_all_patients -获取所有患者记录(无争议) 1. get_patient_by_id -通过ID获取特定患者(例如P001) 1. search_patients -按姓名、电子邮件或ID搜索患者 1. get_patients_by_blood_type -按血型筛选患者 1. get_patients_by_allergy -寻找有特定过敏反应的患者
前端
- 现代React用户界面 带有标签式界面(6个标签:AI聊天、所有患者、按ID、搜索、血型、过敏)
- 人工智能聊天机器人 Groq LLM可根据用户查询智能调用MCP工具
- 实时患者数据查询 具有加载状态和错误处理
- 美观、反应灵敏的设计 使用现代CSS
- 患者卡 带有详细信息显示
- 多个查询接口 适用于不同的用例
安装
1.环境设置
创建一个 .env 文件在 backend/ 使用Groq API密钥的目录:
cd backend
echo "GROQ_API_KEY=your_groq_api_key_here" > .env重要:替换 your_groq_api_key_here 使用您的实际Groq API密钥。格式应为:
GROQ_API_KEY=gsk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(周围没有空格 = 标志)
您可以从以下位置获取Groq API密钥:https://console.groq.com/
验证您的环境设置:
cd backend
npm run check-env这将验证您的 .env 文件配置正确。
有关详细的设置说明,请参阅 backend/SETUP_ENV.md.
2.安装依赖项
选项1:一次安装所有依赖项
npm run install:all选项2:单独安装
- 安装根依赖项:
npm install- 安装后端依赖项:
cd backend
npm install
cd ..- 安装前端依赖项:
cd frontend
npm install
cd ..运行应用程序
开发模式(后端和前端)
同时运行API服务器和React前端:
npm run dev这将开始:
- 后端API: http://localhost:3001
- 前端: http://localhost:5173(如果5173繁忙,则使用另一个端口)
单独跑步
后端MCP网桥服务器:
npm run backend:bridge
# or
cd backend
npm run bridge反应前端:
npm run frontend
# or
cd frontend
npm run devMCP服务器(用于MCP客户端,stdio传输):
npm run backend:mcp
# or
cd backend
npm start检查环境配置:
cd backend
npm run check-envAPI终点(MCP桥)
MCP网桥服务器提供内部调用MCP工具的HTTP端点:
GET /api/health-健康检查GET /api/patients-调用MCP工具:get_all_patientsGET /api/patients/:id-调用MCP工具:get_patient_by_idGET /api/patients/search/:query?field=firstName-调用MCP工具:search_patientsGET /api/patients/blood-type/:bloodType-调用MCP工具:get_patients_by_blood_typeGET /api/patients/allergy/:allergy-调用MCP工具:get_patients_by_allergyPOST /api/chat-与Groq LLM聊天,该LLM可以自动调用MCP工具
备注:所有HTTP请求都使用JSON-RPC协议通过stdio转发到MCP服务器。MCP服务器处理工具调用并返回结果。
聊天端点:The /api/chat 端点使用Groq的LLM(llama-3.1-8b-instant)和函数调用。当您询问有关患者的问题时,LLM会自动调用相应的MCP工具来检索信息。LLM理解自然语言查询,并将其映射到正确的MCP工具。
聊天查询示例:
- “向我展示所有患者”
- “哪些患者有A+血型?”
- “查找对青霉素过敏的患者”
- “获取患者P001”
- “搜索名为约翰的患者”
使用MCP服务器
MCP服务器(backend/server.js)使用stdio传输,旨在与Claude Desktop等MCP客户端配合使用。
MCP客户端配置
添加到您的MCP配置文件中(例如,用于Claude Desktop):
窗户:
{
"mcpServers": {
"patient-data": {
"command": "node",
"args": ["C:\\path\\to\\MCP-Medical-Agent\\backend\\server.js"]
}
}
}macOS/Linux:
{
"mcpServers": {
"patient-data": {
"command": "node",
"args": ["/path/to/MCP-Medical-Agent/backend/server.js"]
}
}
}备注:将路径替换为您的实际绝对路径 server.js 文件。
CLI测试
您可以使用CLI脚本测试这些工具:
cd backend
node cli-test.js get_all_patients
node cli-test.js get_patient_by_id P001
node cli-test.js search_patients John
node cli-test.js get_patients_by_blood_type A+
node cli-test.js get_patients_by_allergy Penicillin数据结构
患者数据存储在 backend/data.json 具有以下结构:
id:患者ID(例如P001)firstName,lastName:患者姓名dateOfBirth出生日期:gender:性别bloodType:血型(A+、O-等)email,phone:联系方式address:地址对象(街道、城市、州、邮政编码)emergencyContact:紧急联系信息medicalHistory:一系列医疗状况allergies:一系列过敏反应lastVisit:上次访问日期
使用的技术
后端
- Node.js (ES模块)
- Express.js -HTTP服务器框架
- @模型上下文协议/sdk (v0.5.0)-MCP协议实现
- groq sdk (v0.3.0)-Groq LLM API客户端
- Dotenv。 (v16.3.1)-环境变量管理
- 跨域资源共享 -跨源资源共享
前端
- 反应19 -UI框架
- 快7 -构建工具和开发服务器
- 现代CSS -柔性箱/网格的响应式设计
- ESLint -代码linting
开发工具
- 同时 -同时运行多个npm脚本
发展
添加新功能
- 后端MCP工具:
- 在中添加工具定义 backend/server.js (ListToolsRequestSchema处理程序) - 在中添加工具实现 backend/server.js (CallToolRequestSchema处理程序) - 将工具添加到Groq函数定义中 backend/mcp-bridge.js (mcpTools数组) - 在中添加API终结点 backend/mcp-bridge.js (可选,用于直接HTTP访问)
- 前端组件:
- 在中创建新组件 frontend/src/components/ - 在中添加新选项卡 frontend/src/App.jsx - 更新中的API服务 frontend/src/services/api.js 如有需要
项目脚本
根级别:
npm run install:all-安装所有依赖项(根、后端、前端)npm run dev-同时运行后端网桥和前端npm run backend:bridge-运行MCP桥接服务器(HTTP API)npm run backend:mcp-仅运行MCP服务器(stdio传输)npm run frontend-仅运行React前端
后端脚本:
npm start-运行MCP服务器(stdio)npm run bridge-运行MCP网桥服务器(HTTP)npm run check-env-验证.env配置npm run test-server-运行测试服务器
前端脚本:
npm run dev-启动Vite开发服务器npm run build-为生产而建npm run preview-预览生产构建npm run lint-运行ESLint
故障排除
如果您遇到问题,请检查 TROUBLESHOOTING.md 常见问题和解决方案的文件。
常见问题:
- 后端服务器未运行
- 缺失或不正确
.env文件 - 端口冲突(后端3001,前端5173)
- 缺少依赖项
使用 npm run check-env 在后端目录中验证您的环境设置。
其他资源
- 环境设置:参见
backend/SETUP_ENV.md有关详细的.env配置 - 故障排除:参见
TROUBLESHOOTING.md常见问题和解决方案 - MCP协议:了解更多信息,请访问https://modelcontextprotocol.io/
- 格罗克API:在获取API密钥https://console.groq.com/
许可证
国际协调委员会
