Observed since 21 Oct, 11:07 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
MCP server for remote embedded hardware testing
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.
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]"
# 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
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+.
The server auto-detects WireGuard VPN configs. If you don't have one:
vpn_setup_instructions, create_vpn_config_templateSee docs/SETUP.md for detailed setup instructions or mcp.json.example for a template.
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
list_devices, test_device, ssh_to_devicevpn_status, connect_vpn, disconnect_vpnstart_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 monitoringtasmota_control, list_tasmota_devices, power_cycle_device - Power cycle devices via Tasmota switchescheck_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_identitykill_stale_processes - Kill duplicate processes that might interferecreate_ssh_tunnel, list_ssh_tunnels, close_ssh_tunnel, access_serial_port, list_serial_devices - SSH tunnels and serial port accessget_change_history, revert_changes - Track and revert changes for security/debuggingbatch_operation, regression_test, get_device_groupscreate_network_map - Visual map of network with device type, uptime, friendly names, power switchesverify_device_identity, verify_device_by_ip, update_device_ip - Verify device identity in DHCP environmentshelp - Get usage documentation and examplesdevice://inventory - Device inventorynetwork://status - Network/VPN statusconfig://lab_devices - Raw confighelp://usage - Help documentation and usage exampleshealth://status - Server health, metrics, and SSH pool status# 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.
GPL-3.0-or-later - Copyright (C) 2025 Dynamic Devices Ltd
See LICENSE for full license text.
Alex J Lennon ajlennon@dynamicdevices.co.uk
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.2.0 | 16 Nov 2025 | 7 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 21 Oct, 11:07 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:191f60b56405ee79cc73cd04b993ea50137f17773225cda4dbf41e4db4aacb8f