IOBS MCP Server
by SHijinghao1
README.md
# IOBS MCP Server — 手术室 AI 设备控制平台
通过自然语言控制手术床和 C 臂。Claude Desktop 通过 MCP 协议调用设备控制工具,Mock 后端模拟硬件行为,前端 3D 实时可视化。
## 架构
```
┌─────────────────┐ MCP (stdio) ┌──────────────────┐
│ Claude Desktop │ ◄──────────────────► │ MCP Server │
│ (自然语言交互) │ │ 8 个工具 │
└─────────────────┘ └────────┬─────────┘
│ HTTP + WS
▼
┌─────────────────┐ Vite Proxy ┌──────────────────┐
│ iobs-unified-app│ ◄──────────────────► │ Mock Backend │
│ (React 3D 前端) │ │ (Express:18011) │
└─────────────────┘ └──────────────────┘
```
## 开始
```bash
npm install
npm run dev
```
## 连接到 iobs-unified-app 前端
把你前端的 `vite.config.ts` 里的代理目标指向 `localhost:18011`:
```ts
// vite.config.ts — 修改一行
'/iobs-api': {
target: 'http://localhost:18011', // 原本是 192.168.1.200:18011
changeOrigin: true,
},
```
然后启动前端 `npm run dev`,3D 场景会显示 Mock 后端提供的设备状态。
## 连接到 Claude Desktop
1. 编译项目:`npm run build`
2. 找到 Claude Desktop 配置文件:
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
3. 添加配置后重启 Claude Desktop:
```json
{
"mcpServers": {
"iobs-surgical": {
"command": "node",
"args": ["D:/compilation tool/Yiming/operating table/iobs-mcp-server/dist/index.js"]
}
}
}
```
## MCP 工具列表
| 工具 | 说明 |
|------|------|
| `get_device_state` | 获取手术床 10 关节 + C 臂 4 关节 + 模式 + 急停 |
| `list_joints` | 列所有可控关节、物理范围、可用体位预设 |
| `move_bed_joint` | 调整手术床指定关节(目标值或增量) |
| `move_carm_joint` | 调整 C 臂指定关节 |
| `apply_bed_preset` | 一键应用手术体位(平卧位/截石位/沙滩椅位等 7 种) |
| `set_carm_mode` | C 臂模式:1=同步 / -1=镜像 / 0=脱离 |
| `emergency_stop` | 🚨 紧急停止所有设备 |
| `reset_emergency` | 解除急停 |
## 演示场景
### 1. 查询设备状态
> "手术室现在什么状态?"
### 2. 调整手术床
> "把手术床升高到 800mm,背板抬起来 30 度"
### 3. 应用手术体位
> "病人要做腹腔镜,给我调成 Trendelenburg 位"
### 4. C 臂控制
> "C 臂旋转 45 度,高度降到 320"
### 5. 紧急停止
> "紧急停止!"
### 6. 完整手术准备
> "把床放平,C 臂切换到同步模式,调到沙滩椅位"
## API 端点
Mock 后端完整实现了 IOBS API 协议,兼容 `iobs-unified-app` 前端:
- `GET /iobs-api/health`
- `GET /iobs-api/get_pos?version=1.0`
- `GET /iobs-api/get_space?version=1.0`
- `GET /iobs-api/set_joint_move?version=1.0&device=...&joint=...&speed=...`
- `GET /iobs-api/get_status?version=1.0` — 手术体位预设
- `GET /iobs-api/get_c_arm_mode?version=1.0`
- `POST /iobs-api/set_stop?version=1.0`
- `WebSocket /ws` — 实时状态推送
## 技术栈
- **MCP SDK**: @modelcontextprotocol/sdk ^1.0
- **Mock Backend**: Express + ws + in-memory state
- **Runtime**: Node.js 18+ (ESM)
- **Dev**: tsx + TypeScript 5.9
## 项目结构
```
src/
├── index.ts # 入口
├── mock-server/
│ ├── index.ts # Express 启动
│ ├── device-state.ts # 设备状态存储 + 约束
│ └── routes.ts # REST + WebSocket 路由
└── mcp-server/
├── index.ts # MCP Server (stdio)
├── tools.ts # 8 个 Tool 定义
└── handlers.ts # Tool 执行逻辑
```
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessSyncing