rei-lads-mcp
rei-lads-mcp
⚠️ v0.1.0-preview — versión para comentarios tempranos. NO para uso en producción. La API no es estable antes de v1.0.0. Pueden aparecer cambios incompatibles en cualquier versión 0.x. La autenticación con certificado X.509 no es compatible en la línea 0.1.x (solo nombre de usuario/contraseña). Consulta ROADMAP.md para los elementos de la Fase 5.
Un servidor MCP que expone instrumentos OPC UA LADS (Laboratory Agnostic Device Standard) a agentes LLM con dos disciplinas propias de Rei integradas:
Ejecución con compuerta de aprobación — cada herramienta que cambia estado valida su nombre de operación contra un enum declarado por el servidor (métodos de máquina de estados de LADS, plantillas de programa). Las cadenas arbitrarias se rechazan en el límite de MCP, antes de que se realice ninguna llamada de red.
Procedencia atestiguada — cada llamada que cambia estado emite un registro SHA-256 (iniciador, nodo, operación, parámetros, muestras, marca de tiempo) que se persiste en un JSONL local de solo adición y es recuperable por prefijo.
Modelado según las implementaciones de referencia de LADS en opcua-lads y fundamentado en el diseño de compuerta de aprobación + witnessed by de Rei / D-FUMT.
Instalación
Requiere 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
Inicio rápido
Arranca un servidor de referencia de LADS (por ejemplo, lads-viscometer de
opcua-lads/lads-server-collection),
luego ejecuta:
python server.pyEsto inicia un servidor MCP stdio. Apunta cualquier cliente MCP a él.
Comprobación de cordura mediante programación (no se requiere cliente 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:4840Herramientas (15)
Conexión
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?)
Descubrimiento (solo lectura)
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)
Cambio de estado (emiten registros de atestiguamiento)
lads_call_state_machine_method(alias, device_index, unit_index, method_name)— valida method_name contra el inventario declarado por el servidorlads_start_program(alias, device_index, unit_index, template_name, properties?, samples?, supervisory_job_id?, supervisory_task_id?)— valida template_name contra las plantillas de ProgramManager
Recuperación de registros de atestiguamiento
lads_list_witness_recent(limit?)lads_show_witness(sha256_prefix)— mínimo 4 caracteres
Demo de la compuerta de aprobación
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"]}El rechazo ocurre en el límite de la herramienta MCP — no se realiza ninguna llamada OPC UA para un nombre de operación que el servidor LADS no declaró. El mismo patrón se aplica a lads_start_program(template_name=...).
Procedencia atestiguada
Cada llamada de herramienta que cambia estado emite un registro como:
{
"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"
}Se persiste en ~/.rei-lads/witness/YYYY-MM.jsonl (anulable mediante la variable de entorno REI_LADS_WITNESS_DIR). Recuperable mediante las dos herramientas lads_*_witness_* por prefijo SHA-256.
Trabajo relacionado
opcua-lads/lads-server-collection— servidores OPC UA de referencia de LADS (Viscometer / pH-Meter / Balance / Freezer / FT-NIR)opcua-lads/lads-client-py— el cliente Python que envuelve este puenteTECTOS-JP/lab-visa-mcp— MCP hermano para instrumentos controlados por PyVISAfc0web/rei-lang— el proyecto de lenguaje Rei cuya disciplina implementa este puenteRei-Certified program (borrador) — la superficie de cumplimiento para la que este puente es candidato a piloto G1
Estado de la versión preliminar
Spike de las fases 1-4 completado — 15 herramientas, L2 y L3, ambas en verde, contra un simulador de viscosímetro LADS en vivo
Correcciones de la Fase 4 que ya están en el código: silenciamiento del banner al importar, sondeo de
Connection.initialized, desempaquetado deQualifiedNameLa Fase 5 aún no está implementada — consulta ROADMAP.md
Estabilidad de la API: no antes de v1.0.0 — espera cambios incompatibles en 0.x
El historial completo del spike se conserva en SPIKE-HISTORY.md para que quede constancia.
Licencia
MIT — consulta LICENSE. Convención del ecosistema LADS.
Contribuciones
Consulta CONTRIBUTING.md. Los contribuyentes externos deberán firmar un CLA una vez que se finalice el CLA del proyecto 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