基于Spring的MCP服务器的患者护理系统
使用Spring Boot构建的全面医疗管理系统,通过REST API和原生Spring MCP服务器公开患者数据、进度记录和护理计划。
项目结构
patient-care-system/
├── src/main/java/com/healthcare/patientcare/
│ ├── PatientCareApplication.java
│ ├── entity/
│ │ ├── Patient.java
│ │ ├── ProgressNote.java
│ │ └── CarePlan.java
│ ├── repository/
│ │ ├── PatientRepository.java
│ │ ├── ProgressNoteRepository.java
│ │ └── CarePlanRepository.java
│ ├── service/
│ │ └── PatientService.java
│ ├── controller/
│ │ └── PatientController.java
│ ├── mcp/
│ │ ├── model/
│ │ │ ├── MCPRequest.java
│ │ │ ├── MCPResponse.java
│ │ │ ├── MCPError.java
│ │ │ ├── MCPTool.java
│ │ │ ├── MCPToolCallRequest.java
│ │ │ ├── MCPContent.java
│ │ │ └── MCPToolResponse.java
│ │ ├── service/
│ │ │ └── MCPService.java
│ │ ├── controller/
│ │ │ └── MCPController.java
│ │ └── MCPServerWrapper.java (standalone bridge)
│ └── config/
│ ├── DataInitializer.java
│ └── JacksonConfig.java
├── src/main/resources/
│ └── application.properties
├── mcp-server.sh (Linux/Mac)
├── mcp-server.bat (Windows)
└── pom.xml建筑
该系统使用 Spring原生MCP服务器 哪里:
- Spring Boot在以下位置公开了一个HTTP端点
/mcp处理JSON-RPC 2.0请求 - 轻量级包装器(shell脚本或Java)将stdio桥接到HTTP端点
- Claude Desktop与包装器通信,包装器转发给Spring Boot
特性
REST API
- 按姓名获取患者:
GET /api/patients/by-name/{name} - 按ID获取患者:
GET /api/patients/{id} - 获取所有患者:
GET /api/patients - 获取进度记录:
GET /api/patients/{id}/progress-notes - 获取护理计划:
GET /api/patients/{id}/care-plan - 更新护理计划:
POST /api/patients/{id}/care-plan
MCP端点
HTTP端点: POST /mcp
通过以下方法接受JSON-RPC 2.0请求:
initialize-初始化MCP服务器tools/list-列出可用工具tools/call-执行工具
MCP工具(6个可用)
- get_patient_by_name -按姓名检索患者详细信息
- get_patient_by_id -按ID检索患者详细信息
- 接收所有患者 -列出所有患者
- get_progress_notes -为患者获取进度记录
- get_care_plan -为患者制定护理计划
- update_care_plan -更新或创建护理计划
安装说明
先决条件
- Java 17或更高版本
- Maven 3.6+
- curl(用于shell脚本桥)
步骤1:构建并运行Spring Boot应用程序
# Navigate to project root
cd patient-care-system
# Build the project
mvn clean install
# Run the application
mvn spring-boot:run应用程序将于启动 http://localhost:8080
您应该看到:
Patient Care System is running on http://localhost:8080
H2 Console available at http://localhost:8080/h2-console步骤2:验证应用程序
# Check health
curl http://localhost:8080/
# Test REST API
curl http://localhost:8080/api/patients
# Test MCP endpoint
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/list",
"id": 1
}'步骤3:配置MCP服务器网桥
选择以下选项之一:
选项A:Shell脚本桥(Linux/Mac)-推荐
# Make the script executable
chmod +x mcp-server.sh
# Test it
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | ./mcp-server.sh选项B:批处理脚本桥(Windows)
# Test it
echo {"jsonrpc":"2.0","method":"tools/list","id":1} | mcp-server.bat选项C:Java包装桥(所有平台)
# Compile
javac src/main/java/com/healthcare/patientcare/mcp/MCPServerWrapper.java
# Run
java -cp src/main/java com.healthcare.patientcare.mcp.MCPServerWrapper
# Test it
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | java -cp src/main/java com.healthcare.patientcare.mcp.MCPServerWrapper步骤4:配置Claude桌面
编辑您的Claude Desktop配置文件:
苹果电脑: ~/Library/Application Support/Claude/claude_desktop_config.json\ 视窗: %APPDATA%\Claude\claude_desktop_config.json
添加以下配置(根据您的网桥选择进行选择):
对于Shell脚本(Linux/Mac):
{
"mcpServers": {
"patient-care": {
"command": "/absolute/path/to/patient-care-system/mcp-server.sh"
}
}
}对于批处理脚本(Windows):
{
"mcpServers": {
"patient-care": {
"command": "C:\\absolute\\path\\to\\patient-care-system\\mcp-server.bat"
}
}
}对于Java包装器:
{
"mcpServers": {
"patient-care": {
"command": "java",
"args": [
"-cp",
"/absolute/path/to/patient-care-system/src/main/java",
"com.healthcare.patientcare.mcp.MCPServerWrapper"
]
}
}
}重要:用实际的绝对路径替换路径!
步骤5:重新启动克劳德桌面
更新配置后,重新启动Claude Desktop。MCP服务器将可供使用。
样品数据
应用程序在启动时自动加载示例数据:
病人1:约翰·史密斯
- ID: 1
- 患者编号:专利001
- 条件:高血压
- 病程记录:2个注释
- 护理计划:活动
病人2:玛丽·约翰逊
- ID: 2
- 患者编号:专利002
- 条件:2型糖尿病
- 病程记录:1注
- 护理计划:活动
在Claude中使用MCP工具
配置后,您可以要求Claude:
"Get patient details for John Smith"
"Show me the progress notes for patient ID 1"
"What is the care plan for Mary Johnson?"
"Update the care plan for patient 1 with new goals: Control blood pressure below 120/80"手动测试MCP服务器
您可以直接测试MCP端点:
# List tools
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/list",
"id": 1
}'
# Get patient by name
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_patient_by_name",
"arguments": {
"name": "John Smith"
}
},
"id": 2
}'
# Get progress notes
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_progress_notes",
"arguments": {
"patient_id": 1
}
},
"id": 3
}'
# Update care plan
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "update_care_plan",
"arguments": {
"patient_id": 1,
"goals": "Achieve blood pressure below 120/80",
"interventions": "Daily exercise, low sodium diet",
"medications": "Lisinopril 10mg daily",
"status": "Active"
}
},
"id": 4
}'REST API示例
获取所有患者
curl http://localhost:8080/api/patients按姓名获取患者
curl http://localhost:8080/api/patients/by-name/John%20Smith获取进度记录
curl http://localhost:8080/api/patients/1/progress-notes获取护理计划
curl http://localhost:8080/api/patients/1/care-plan更新护理计划
curl -X POST http://localhost:8080/api/patients/1/care-plan \
-H "Content-Type: application/json" \
-d '{
"goals": "New health goals",
"interventions": "Updated interventions",
"medications": "Updated medications",
"startDate": "2025-01-01",
"reviewDate": "2025-06-01",
"status": "Active"
}'H2数据库控制台
访问H2控制台: http://localhost:8080/h2-console
连接详细信息:
- JDBC网址:
jdbc:h2:mem:patientdb - 用户名:
sa - 密码:(留空)
故障排除
弹簧靴问题
- 端口已在使用中:在中更改端口
application.properties - 数据库连接:验证H2控制台设置
- Maven构建失败:运行
mvn clean install -U
MCP服务器问题
- 连接被拒绝:确保Spring Boot在端口8080上运行
- MCP未在Claude中显示:
- 检查配置路径是否为绝对路径 - 验证桥接脚本是否可执行 - 使用回声命令手动测试电桥
- 工具未出现:
- 检查Spring Boot日志是否有错误 - 验证 /mcp 端点可访问 - 使用上述curl命令进行测试
桥接脚本问题
- Shell脚本未执行:运行
chmod +x mcp-server.sh - 找不到Java包装器:确保类已编译且路径正确
- stdin/stdout问题:检查网桥是否正确转发请求
架构优势
将Spring用于MCP服务器可以提供:
- 统一代码库:服务于REST和MCP的单个应用程序
- 依赖注入:利用Spring的IoC容器
- 数据库集成:直接访问JPA存储库
- 易于测试:使用Spring Boot测试框架
- 生产就绪:使用Spring强大的生产功能
- 无Node.js依赖:纯Java解决方案
使用的技术
- 弹簧靴3.2.0 -应用框架
- Spring数据JPA -数据访问层
- H2数据库 -内存数据库
- 杰克逊 -JSON处理
- 龙目 -减少样板代码
- JSON-RPC 2.0 -MCP协议实现
许可证
这是一个用于教育目的的示例项目。
