Skip to main content
Glama
fc0web

rei-lads-mcp

by fc0web

rei-lads-mcp

⚠️ v0.1.0-preview — ранний выпуск для обратной связи. НЕ для продакшена. API не стабилен до v1.0.0. Критические изменения могут появиться в любой версии 0.x. Аутентификация по X.509-сертификатам не поддерживается в линейке 0.1.x (только имя пользователя/пароль). См. ROADMAP.md для пунктов фазы 5.

MCP-сервер, который предоставляет OPC UA LADS (Laboratory Agnostic Device Standard) инструменты LLM-агентам с двумя встроенными дисциплинами Rei:

  1. Выполнение с одобрением — каждый инструмент, изменяющий состояние, проверяет имя своей операции на соответствие объявленному на сервере перечислению (методы конечного автомата LADS, шаблоны программ). Произвольные строки отклоняются на границе MCP, до любого сетевого вызова.

  2. Подтверждённое происхождение — каждый вызов, изменяющий состояние, создаёт запись SHA-256 (инициатор, узел, операция, параметры, образцы, временная метка), которая сохраняется в локальный append-only JSONL и доступна по префиксу.

Смоделировано на основе эталонных реализаций LADS из opcua-lads и основано на дизайне Rei / D-FUMT с гейтом одобрения и witnessed by.

Установка

Требуется 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

Быстрый старт

Запустите эталонный сервер LADS (например, lads-viscometer из opcua-lads/lads-server-collection), затем выполните:

python server.py

Это запускает MCP-сервер через stdio. Подключите к нему любой MCP-клиент.

Программная проверка работоспособности (без MCP-клиента):

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

Инструменты (15)

Подключение

  • 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?)

Обнаружение (только чтение)

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

Изменение состояния (создают записи-свидетели)

  • lads_call_state_machine_method(alias, device_index, unit_index, method_name) — проверяет method_name на соответствие объявленному на сервере перечню

  • lads_start_program(alias, device_index, unit_index, template_name, properties?, samples?, supervisory_job_id?, supervisory_task_id?) — проверяет template_name на соответствие шаблонам ProgramManager

Получение записей-свидетелей

  • lads_list_witness_recent(limit?)

  • lads_show_witness(sha256_prefix) — минимум 4 символа

Демонстрация гейта одобрения

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"]}

Отклонение происходит на границе инструмента MCP — ни один вызов OPC UA не выполняется для имени операции, которое не объявил сервер LADS. Тот же принцип для lads_start_program(template_name=...).

Подтверждённое происхождение

Каждый вызов инструмента, изменяющего состояние, создаёт запись вида:

{
  "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"
}

Сохраняется в ~/.rei-lads/witness/YYYY-MM.jsonl (переопределение через REI_LADS_WITNESS_DIR). Доступно через два инструмента lads_*_witness_* по префиксу SHA-256.

Связанные проекты

  • opcua-lads/lads-server-collection — эталонные OPC UA-серверы LADS (Viscometer / pH-Meter / Balance / Freezer / FT-NIR)

  • opcua-lads/lads-client-py — Python-клиент, который оборачивает этот мост

  • TECTOS-JP/lab-visa-mcp — родственный MCP для инструментов, управляемых через PyVISA

  • fc0web/rei-lang — проект языка Rei, дисциплину которого реализует этот мост

  • Программа Rei-Certified (черновик) — поверхность соответствия, для которой этот мост является кандидатом в пилот G1

Статус предварительной версии

  • Фазы 1-4 завершены — 15 инструментов, L2 и L3 зелёные на живом симуляторе вискозиметра LADS

  • Исправления фазы 4, уже в коде: отключение баннера при импорте, опрос Connection.initialized, разворачивание QualifiedName

  • Фаза 5 ещё не реализована — см. ROADMAP.md

  • Стабильность API: не раньше v1.0.0 — ожидайте критические изменения в 0.x

Полная история спайка сохранена в SPIKE-HISTORY.md для протокола.

Лицензия

MIT — см. LICENSE. Конвенция экосистемы LADS.

Участие

См. CONTRIBUTING.md. Внешним участникам потребуется подписанное CLA после финализации CLA проекта Rei.

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