Skip to main content
Glama
fc0web

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: SiLA MCP Server

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.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

0Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to interact with laboratory devices via a SiLA server, allowing querying device info, listing commands, executing commands, and monitoring status.
  • A
    license
    B
    quality
    A
    maintenance
    Exposes a deterministic IoT edge runtime — Modbus/CAN/J1939 acquisition, local rules, alarms, and history — to AI assistants as typed, governed MCP tools. Reads are safe by default; device control stays deny-by-default, explicitly confirmed, and audited.
    23
    3
    Apache 2.0
  • 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

View all related MCP servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/fc0web/rei-lads-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server