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: 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 для инструментов, управляемых через 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 installed
Maintenance
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
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.
Connect agents to 6DuckLearn memory, approvals, and runtime control.
Human-in-the-loop approval for agent actions, with verifiable action-bound 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
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to interact with laboratory devices via a SiLA server, allowing querying device info, listing commands, executing commands, and monitoring status.
- AlicenseBqualityAmaintenanceExposes 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.233Apache 2.0
- 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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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