Skip to main content

Lab Testing MCP Server

Tests Python 3.10+ License: GPL v3 Code style: black

MCP server exposing remote embedded hardware testing capabilities to AI assistants.

Version: 0.2.0

⚠️ ALPHA QUALITY WARNING: This package is currently in alpha development status. It is not ready for professional or production use. The API may change, features may be incomplete, and there may be bugs. Use at your own risk. See PUBLISHING.md for more details.

Installation

Requirements: Python 3.10+ (MCP SDK requires Python 3.10+)

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

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

From Source

# 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

Configuration

Add to Cursor MCP config (~/.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"
      }
    }
  }
}

Important: Use python3.10 (or python3.11+) since MCP SDK requires Python 3.10+.

VPN Setup

The server auto-detects WireGuard VPN configs. If you don't have one:

  • See docs/VPN_SETUP.md for setup guide
  • Use MCP tools: vpn_setup_instructions, create_vpn_config_template

See docs/SETUP.md for detailed setup instructions or mcp.json.example for a template.

Architecture

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

Data flow: AI → MCP Server → Tools → Lab Framework → Hardware

Tools

  • Device: list_devices, test_device, ssh_to_device
  • VPN: vpn_status, connect_vpn, disconnect_vpn
  • Power: start_power_monitoring (DMM or Tasmota), get_power_logs, analyze_power_logs, monitor_low_power, compare_power_profiles - Power monitoring via DMM (SCPI) or Tasmota energy monitoring
  • Tasmota: tasmota_control, list_tasmota_devices, power_cycle_device - Power cycle devices via Tasmota switches
  • OTA/Containers: 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
  • Process Management: kill_stale_processes - Kill duplicate processes that might interfere
  • Remote Access: create_ssh_tunnel, list_ssh_tunnels, close_ssh_tunnel, access_serial_port, list_serial_devices - SSH tunnels and serial port access
  • Change Tracking: get_change_history, revert_changes - Track and revert changes for security/debugging
  • Batch/Regression: batch_operation, regression_test, get_device_groups
  • Network Mapping: create_network_map - Visual map of network with device type, uptime, friendly names, power switches
  • Device Verification: verify_device_identity, verify_device_by_ip, update_device_ip - Verify device identity in DHCP environments
  • Help: help - Get usage documentation and examples

Resources

  • device://inventory - Device inventory
  • network://status - Network/VPN status
  • config://lab_devices - Raw config
  • help://usage - Help documentation and usage examples
  • health://status - Server health, metrics, and SSH pool status

Development

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

Adding tools: Create function in lab_testing/tools/, register in lab_testing/server/tool_definitions.py and lab_testing/server/tool_handlers.py.

Versioning: Semantic versioning (MAJOR.MINOR.PATCH). Update version.py, see CHANGELOG.md.

Documentation

License

GPL-3.0-or-later - Copyright (C) 2025 Dynamic Devices Ltd

See LICENSE for full license text.

Maintainer

Alex J Lennon ajlennon@dynamicdevices.co.uk

Metadata

Release files for ai-lab-testing 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ai-lab-testing 0.2.0
File Size Uploaded Provenance
ai_lab_testing-0.2.0.tar.gz 67.6 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for ai-lab-testing 0.2.0
File Interpreter ABI Platform
ai_lab_testing-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 143.9 kB

Release files / ai_lab_testing-0.2.0.tar.gz

Download URL ai_lab_testing-0.2.0.tar.gz
Size 67.6 kB
Tags Source
SHA-256 checksum
How to use checksums
24c657676e896d49da5b21a5355b35a3d99239760d2ccb9f12b7a24629864baf
BLAKE2b-256 checksum
How to use checksums
8547e203a3661fa054ad58d983ecc7c52fb6d563dfbd1cddbc75bcd97b16a96d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 16, 2025.

Transparency log

Release files / ai_lab_testing-0.2.0-py3-none-any.whl

Download URL ai_lab_testing-0.2.0-py3-none-any.whl
Size 76.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
666876ba17cce38ac0d5531057e5326f367bf48ff5f543233205844cc32d0c02
BLAKE2b-256 checksum
How to use checksums
8a9f2e5b1b17f674364c964834c4b78dca9de78762e3bce80bb37f8e5ab67c12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 16, 2025.

Transparency log

Security for ai-lab-testing 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for ai_lab_testing-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 16, 2025.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page