Skip to content

Lab Bench MCP Server + CLI 设计 #74

Description

@Sphinxes0o0

背景

嵌入式板子池管理。一块物理板跑多个 OS 实例(Android/Linux/Ubuntu VM),
不刷机情况下 N 人共用同一板——预约的是 OS 实例,不是整板。

架构

中心 MCP Server → SSH → bench_host (各台架)
                           ├── adb (Android)
                           ├── ssh (Linux/Ubuntu)
                           └── fastboot (刷机)

不做每台 bench 的 agent,一套中心 MCP Server SSH 过去执行所有命令。

两级预约锁

类型 粒度 互斥
OS 锁 (light) 单个 OS 实例 同实例互斥,不同实例并行
Board 锁 (heavy) 整块物理板 排斥该板上所有 OS reservation

CLI 先行,MCP 包 CLI

labbench os list --type android --free
labbench os reserve msm8953-01/android -d 120
labbench os shell msm8953-01/android "dmesg | grep wifi"
labbench os release msm8953-01/android

labbench board power-cycle msm8953-01   # 需 heavy lock
labbench board flash msm8953-01 /images/v2.1/

Board Inventory

~/.labbench/boards.yaml:

boards:
  - board_id: "msm8953-01"
    board_type: "msm8953"
    bench_host: "bench-01.lab.internal"
    pdu:
      host: "pdu.lab.internal"
      port: 3
    os_instances:
      - os_id: "android"
        os_type: "android"
        ip: "192.168.1.101"
        adb_serial: "ABCD1234"
      - os_id: "linux"
        os_type: "linux"
        ip: "192.168.1.102"
        ssh_port: 2222

MCP Tools

OS 级 10 个:list, status, reserve, release, shell, upload, download, reboot, log, ping
Board 级 6 个:list, status, reserve(heavy), release, flash, power_cycle

完整文档

~/workspace/mcp-specs/lab-bench-mcp/

  • design.md — 硬件接口层 + 预约状态机 + CLI 设计
  • tools.json — 16 个 MCP tool 的 JSON Schema

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions