远程硬件测试服务器

MCP服务器提供远程嵌入式硬件测试能力,使工程师能够轻松发现、连接和测试实验室设备,支持SSH访问、命令执行、应用部署等功能。

  • by DynamicDevices
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 DynamicDevices/ai-lab-testing

使用说明

实验室测试MCP服务器

MCP服务器向AI助手展示远程嵌入式硬件测试功能。

版本: 0.4.1

任务

使工程师能够轻松访问远程嵌入式硬件开发。

该项目旨在使远程硬件测试和开发尽可能无缝。远程工作的工程师应该能够:

  • 发现并连接 轻松使用实验室设备
  • 设置安全访问 (SSH密钥,无密码sudo),摩擦最小
  • 运行命令和测试 在无需复杂设置的远程板上
  • 构建和部署 远程设备的应用程序
  • 安全清理 完成时

MCP服务器提供智能工具,指导工程师完成最佳实践,建议下一步行动,并自动处理常见工作流程。当问题出现时,这些工具会提供可操作的建议和明确的下一步行动。

关键设计原则:

  • 易用性:工具应该直观,需要最少的配置
  • 有用的指导:错误消息包括建议和后续步骤
  • 最佳实践:工具引导用户实现安全、可维护的工作流程
  • 远程优先:针对通过VPN远程工作的工程师进行了优化

⚠️ 阿尔法质量警告:此程序包当前位于 阿尔法 发展状况。它是 未准备好用于专业或生产用途.API可能会更改,功能可能不完整,并且可能存在错误。使用风险自负。看 发布.md 了解更多详情。

安装

要求:

  • Python 3.10+ (MCP SDK需要Python 3.10+)
  • WireGuard工具 (有关VPN功能)-请参阅 VPN设置指南
  • fioctl命令行界面工具 (可选,了解Foundries VPN功能)-请参阅 Foundries VPN设置

来自PyPI(推荐)

# Install from PyPI
python3.10 -m pip install ai-lab-testing

# Or with development dependencies
python3.10 -m pip install "ai-lab-testing[dev]"

来源

# Clone the repository
git clone https://github.com/DynamicDevices/ai-lab-testing.git
cd ai-lab-testing

# Install in development mode
python3.10 -m pip install -e ".[dev]"

# Verify installation
python3.10 lab_testing/test_server.py

配置

MCP服务器配置

添加到光标MCP配置(~/.cursor/mcp.json):

{
  "mcpServers": {
    "ai-lab-testing": {
      "command": "python3.10",
      "args": ["/path/to/ai-lab-testing/lab_testing/server.py"],
      "env": {
        "LAB_TESTING_ROOT": "/path/to/ai-lab-testing",
        "VPN_CONFIG_PATH": "/path/to/wg0.conf"
      }
    }
  }
}

重要提示: 使用 python3.10 (或 python3.11+)因为MCP SDK需要Python 3.10+。

目标网络配置

配置实验室测试操作的目标网络:

选项1:环境变量 (in ~/.cursor/mcp.json):

{
  "mcpServers": {
    "ai-lab-testing": {
      "command": "python3.10",
      "args": ["/path/to/ai-lab-testing/lab_testing/server.py"],
      "env": {
        "LAB_TESTING_ROOT": "/path/to/ai-lab-testing",
        "TARGET_NETWORK": "192.168.2.0/24"
      }
    }
  }
}

选项2:配置文件 (in lab_devices.json):

{
  "lab_infrastructure": {
    "network_access": {
      "target_network": "192.168.2.0/24",
      "lab_networks": ["192.168.2.0/24"]
    }
  }
}

默认: 192.168.2.0/24 如果未配置。

工具超时

一些工具,如 create_network_map 全网络扫描可能需要30秒以上。如果工具调用超时:

  • 使用 quick_mode: true 跳过网络扫描(在5秒内完成)
  • 网络扫描已优化,具有更快的超时和更高的并行性

VPN设置

服务器自动检测WireGuard VPN配置。如果你没有:

  • 看 docs/VPN_SETUP.md 安装指南
  • 使用MCP工具: vpn_setup_instructions, create_vpn_config_template

看 docs/SETUP.md 了解详细的设置说明或 mcp.json.example 对于模板。

建筑

graph TB
    subgraph "AI Assistant"
        AI[Claude/Cursor]
    end
    subgraph "MCP Server"
        MCP[server.py]
        TOOLS[Tools]
        RES[Resources]
    end
    subgraph "Lab Framework"
        CFG[Config]
        DEV[Device Manager]
        VPN[VPN Manager]
        PWR[Power Monitor]
    end
    subgraph "Hardware"
        BOARD[iMX Boards]
        DMM[DMM]
        TASMOTA[Tasmota]
    end
    AI -->|MCP| MCP
    MCP --> TOOLS
    TOOLS --> DEV
    TOOLS --> VPN
    TOOLS --> PWR
    DEV --> BOARD
    PWR --> DMM

数据流:AI→ MCP服务器→ 工具→ 实验室框架→ 硬件

工具

  • 设备: list_devices (带过滤、排序、限制、汇总统计数据、电源状态)-使用电源开关列显示设备清单:Tasmota设备显示自己的电源状态(🟢 ON/🔴 OFF),其他设备显示哪个电源开关控制它们。支持按类型、状态、SSH状态、电源状态和搜索进行过滤。支持按IP、friendly_name、status或last_seen排序。支持限制结果。使用force_refresh绕过缓存。 test_device, ssh_to_device, verify_device_identity, verify_device_by_ip, update_device_ip, update_device_friendly_name
  • 虚拟专用网络: vpn_status, connect_vpn, disconnect_vpn
  • 力量: start_power_monitoring (DMM或Tasmota), get_power_logs, analyze_power_logs, monitor_low_power, compare_power_profiles -通过DMM(SCPI)或Tasmota能量监测进行功率监测
  • 塔莫塔: tasmota_control, list_tasmota_devices, power_cycle_device -通过Tasmota开关关闭设备电源。Tasmota设备显示电源状态(🟢 ON/🔴 电源开关列中的OFF)和设备列表类型列中的功耗(瓦特)
  • 测试设备: list_test_equipment, query_test_equipment -通过SCPI协议自动检测和查询测试设备(DMM、示波器)
  • OTA/集装箱: check_ota_status, trigger_ota_update, list_containers, deploy_container, get_system_status, get_firmware_version, get_foundries_registration_status, get_secure_boot_status, get_device_identity
  • 进程管理: kill_stale_processes -杀死可能会干扰的重复进程
  • 远程访问: create_ssh_tunnel, list_ssh_tunnels, close_ssh_tunnel, access_serial_port, list_serial_devices -SSH隧道和串行端口访问
  • 更改跟踪: get_change_history, revert_changes -跟踪和还原安全/调试更改
  • 批处理/回归: batch_operation, regression_test, get_device_groups
  • 网络映射: create_network_map -网络可视化地图,包括设备类型、正常运行时间、友好名称、电源开关
  • 设备验证: verify_device_identity, verify_device_by_ip, update_device_ip -在DHCP环境中验证设备身份。设备列表显示SSH状态、上次看到的时间戳和电源开关信息(Tasmota设备显示自己的状态,其他设备显示控制开关)
  • 帮助: help -获取使用文档和示例

资源

  • device://inventory -设备清单
  • network://status -网络/VPN状态
  • config://lab_devices -原始配置
  • help://usage -帮助文档和使用示例
  • health://status -服务器运行状况、指标和SSH池状态

发展

# Use Python 3.10+ for development
python3.10 -m pip install -e ".[dev]"
pre-commit install
black . && ruff check . --fix

添加工具:在中创建函数 lab_testing/tools/,注册 lab_testing/server/tool_definitions.py 和 lab_testing/server/tool_handlers.py.

版本控制:语义版本控制(主、次、补丁)。更新 version.py,请参阅 更改日志.md.

文档

许可证

GPL-3.0或更高版本-版权所有(C)2025 Dynamic Devices Ltd

看 许可证 获取完整的许可证文本。

维护者

亚历克斯·J·列侬 ajlennon@dynamicdevices.co.uk