Skip to main content
Glama
rei-lads-mcp

rei-lads-mcp

by fc0web

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:

  1. 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.

  2. 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   # Windows

Related 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.py

Dies 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:4840

Werkzeuge (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 Inventarliste

  • lads_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

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-Entpacken

  • Phase 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.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects 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
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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.
    5
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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.
    1
    Apache 2.0
  • A
    license
    A
    quality
    B
    maintenance
    Enables 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.
    22
    97 PyPI
    Apache 2.0