rei-lads-mcp
rei-lads-mcp
⚠️ v0.1.0-preview — Release für frühes Feedback. NICHT für den Produktionseinsatz. Die API ist vor v1.0.0 nicht stabil. In jeder 0.x-Version können bahnbrechende Änderungen auftreten. Die X.509-Zertifikatsauthentifizierung wird in der 0.1.x-Linie nicht unterstützt (nur Benutzername/Passwort). Siehe ROADMAP.md für Phase-5-Punkte.
Ein MCP-Server, der OPC UA LADS-Instrumente (Laboratory Agnostic Device Standard) für LLM-Agenten bereitstellt, mit zwei Rei-spezifischen Disziplinen:
Freigabe-gesteuerte Ausführung – jedes zustandsändernde Werkzeug validiert seinen Operationsnamen gegen eine serverdeklarierte Enumeration (LADS-State-Machine- Methoden, Programmvorlagen). Beliebige Zeichenfolgen werden an der MCP-Grenze abgelehnt, bevor ein Netzwerkaufruf ausgelöst wird.
Bezeugte Herkunft – jeder zustandsändernde Aufruf erzeugt einen SHA-256- Datensatz (Initiator, Knoten, Operation, Parameter, Proben, Zeitstempel), der in einer lokalen append-only JSONL-Datei gespeichert und per Präfix abrufbar ist.
Modelliert nach den LADS-Referenzimplementierungen unter
opcua-lads und basierend auf dem
Rei / D-FUMT Freigabe-Gate +
witnessed by-Design.
Installation
Erfordert Python 3.12+.
python -m venv .venv
./.venv/bin/pip install -r requirements.txt # Linux/macOS
./.venv/Scripts/pip install -r requirements.txt # WindowsRelated MCP server: opcua-mcp
Schnellstart
Starten Sie einen LADS-Referenzserver (zum Beispiel lads-viscometer aus
opcua-lads/lads-server-collection),
und führen Sie dann aus:
python server.pyDies startet einen Stdio-MCP-Server. Richten Sie einen beliebigen MCP-Client darauf aus.
Programmatische Überprüfung (kein MCP-Client erforderlich):
python test_tools_list.py # 15 tools registered, schemas generated
python test_live_phase4.py # end-to-end against a running LADS server on
# opc.tcp://localhost:4840Werkzeuge (15)
Verbindung
lads_connect(alias, server_url, user?, password?, wait_timeout_s?, cert_path?, key_path?)lads_register_alias(alias, server_url, description?, user?, password?)lads_list_aliases()lads_connect_by_alias(alias, wait_timeout_s?)
Entdeckung (nur lesend)
lads_list_devices(alias)lads_get_functional_units(alias, device_index)lads_get_sensor_value(alias, device_index, unit_index, function_index)lads_get_state(alias, device_index, unit_index)lads_get_state_machine_methods(alias, device_index, unit_index)lads_list_program_templates(alias, device_index, unit_index)lads_list_results(alias, device_index, unit_index)
Zustandsändernd (erzeugt Zeugendatensätze)
lads_call_state_machine_method(alias, device_index, unit_index, method_name)– validiert method_name gegen die serverdeklarierte Inventarlistelads_start_program(alias, device_index, unit_index, template_name, properties?, samples?, supervisory_job_id?, supervisory_task_id?)– validiert template_name gegen ProgramManager-Vorlagen
Zeugenabruf
lads_list_witness_recent(limit?)lads_show_witness(sha256_prefix)– mindestens 4 Zeichen
Freigabe-Gate-Demo
lads_call_state_machine_method(alias, 0, 0, "Start")
# -> {invocation: "queued (async)", witness_hash: "..."}
lads_call_state_machine_method(alias, 0, 0, "ArbitraryExec")
# -> {error: "method 'ArbitraryExec' not declared by this state machine",
# valid_methods: ["Start", "StartProgram", "Stop"]}Die Ablehnung erfolgt an der Grenze des MCP-Werkzeugs – kein OPC-UA-Aufruf wird für einen
Operationsnamen ausgelöst, der nicht vom LADS-Server deklariert wurde. Gleiches Muster
für lads_start_program(template_name=...).
Bezeugte Herkunft
Jeder zustandsändernde Werkzeugaufruf erzeugt einen Datensatz wie:
{
"initiator": "mcp-caller",
"node_alias": "viscometer",
"server_url": "opc.tcp://localhost:4840",
"device_browse_name": "myViscometer",
"unit_browse_name": "ViscometerUnit",
"operation": "StartProgram",
"template_name": "Analytical Method A (30rpm)",
"params": {"Speed": "30", "Duration": "60"},
"sample_context": [{"ContainerId": "vial-01", "SampleId": "sample-a",
"Position": "A1", "CustomData": "phase4-test"}],
"timestamp_utc": "2026-08-26T00:23:54.333266+00:00",
"phase": "accepted",
"sha256_hex": "174b5e1498a5d0cca55ce9291adf95f612161ed590b839258e700e994cba25ae"
}Gespeichert in ~/.rei-lads/witness/YYYY-MM.jsonl (Umgebungsüberschreibung
REI_LADS_WITNESS_DIR). Abrufbar über die beiden lads_*_witness_*-
Werkzeuge per SHA-256-Präfix.
Verwandte Arbeiten
opcua-lads/lads-server-collection– LADS-Referenz-OPC-UA-Server (Viscometer / pH-Meter / Balance / Freezer / FT-NIR)opcua-lads/lads-client-py– der Python-Client, den diese Brücke umschließtTECTOS-JP/lab-visa-mcp– verwandter MCP für PyVISA-gesteuerte Instrumentefc0web/rei-lang– das Rei-Sprachprojekt, dessen Disziplin diese Brücke umsetztRei-Zertifiziertes Programm (Entwurf) – die Konformitätsoberfläche, für die diese Brücke ein Kandidat für ein G1-Pilotprojekt ist
Vorschau-Status
Phase 1-4-Spike abgeschlossen – 15 Werkzeuge, L2 und L3 beide grün gegen eine live LADS-Viskosimeter-Simulation
Phase-4-Fixes, die bereits im Code sind: Banner-Unterdrückung beim Import,
Connection.initialized-Polling,QualifiedName-EntpackenPhase 5 ist noch nicht implementiert – siehe ROADMAP.md
API-Stabilität: nicht vor v1.0.0 – erwarten Sie bahnbrechende Änderungen in 0.x
Die vollständige Spike-Historie ist in SPIKE-HISTORY.md für die Aufzeichnung erhalten.
Lizenz
MIT – siehe LICENSE. LADS-Ökosystem-Konvention.
Mitwirken
Siehe CONTRIBUTING.md. Externe Mitwirkende müssen eine unterzeichnete CLA vorlegen, sobald die Rei-Projekt-CLA finalisiert ist.
This server cannot be deployed
Maintenance
Related MCP Connectors
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Runtime permission, approval, and audit layer for AI agent tool execution.
Context and control for any AI. Agent identity, scoped access, and proof across tools.
Supervised API-write gateway for AI agents with policy, human approval and execution receipts.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceConnects AI agents to OPC UA-enabled industrial systems for real-time monitoring and control of operational data. It enables users to read, write, and browse industrial device nodes through natural language interactions.MIT
- AlicenseNot gradedqualityBmaintenanceEnables LLMs to read, write, browse, search, and subscribe to live data on OPC-UA industrial automation servers, with caching, discovery index, and support for stdio or HTTP transports.5MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to discover, browse, read, search, and safely write OPC UA industrial device data within controlled edge networks, with guarded two-phase writes and evidence-based root-cause diagnostics.1Apache 2.0
- AlicenseAqualityBmaintenanceEnables LLM agents to safely inspect, plan, preview, and execute motions on ROS 2 manipulators, with server-enforced safety envelopes covering joint limits, workspace constraints, force/torque thresholds, rate limits, e-stop, human approval, and audit logging.2297 PyPIApache 2.0