rei-lads-mcp
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:
Выполнение с одобрением — каждый инструмент, изменяющий состояние, проверяет имя своей операции на соответствие объявленному на сервере перечислению (методы конечного автомата LADS, шаблоны программ). Произвольные строки отклоняются на границе MCP, до любого сетевого вызова.
Подтверждённое происхождение — каждый вызов, изменяющий состояние, создаёт запись 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 # WindowsRelated MCP server: opcua-mcp
Быстрый старт
Запустите эталонный сервер 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 для инструментов, управляемых через PyVISAfc0web/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.
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