Skip to content
Version 2026.20

AI clients (Iris MCP) ​

Raylux Iris lets an AI client read this gateway over the Model Context Protocol (MCP). Claude Desktop, Claude Code and any other MCP client can ask about tags, alarms, history, devices and projects in plain language. The client brings its own model: Nexus never talks to a model and ships none.

It is read-only. Nothing an AI client can do through Iris writes a tag, acknowledges an alarm or changes configuration, and read-only use needs no AI licence.

What is read leaves the gateway

Whatever an AI client reads is sent to the model that client uses, which may be a cloud service. Issue keys only to clients you trust with this plant's data. Iris is decision support, not a safety function.

Turning it on ​

The MCP server is off on every new install. Nothing is served until an administrator both turns it on and issues a key.

  1. Sign in to the Nexus web page as an administrator (the Iris administration capability, AiAdmin; the built-in Admin role has it).
  2. Open Security › Iris MCP.
  3. Under MCP server, click Turn on.

It takes effect immediately; no restart. The page shows the Endpoint clients connect to.

Issuing a key ​

Under New key:

  • Name: who holds it, for example Claude Desktop — control room. It appears in the audit log as key:<name>.
  • Role: the key acts with that role's capabilities, checked on every call. You cannot give a key more authority than your own.
  • Tools: leave it on every tool the role allows, or narrow it to a few. A key's tool list can narrow its role, never widen it.
  • Writes: stays off. This release has no write or approval tools.

Click Create key. The key is shown once: copy it before you close the notice. Nexus stores only a hash and cannot show it again, so a lost key is revoked and replaced. Disable stops a key for a while; Revoke removes it.

Which role a key needs:

The client should be able toCapability
Browse, search and read tags; list active alarms and the alarm journal; list projects, their resources, screens and named queriesRuntime access
Query historyQuery history, and the Historian module
List devices and read gateway diagnosticsDevice status
Read project scripts and SQLDesigner access
Read the Nexus logNexus configuration
Read the audit logNexus configuration and Audit log access

The built-in Viewer or Operator role covers most use. A tool the key cannot use is not merely refused: it is left out of what the client is told exists.

Connecting a client ​

The endpoint is https://<gateway>:8443/api/mcp (MCP Streamable HTTP). The key is sent as Authorization: Bearer rlx_….

Claude Code (and other clients that speak Streamable HTTP) take the URL and the header directly, for example in an .mcp.json:

json
{
  "mcpServers": {
    "raylux": {
      "type": "http",
      "url": "https://gateway:8443/api/mcp",
      "headers": { "Authorization": "Bearer rlx_…" }
    }
  }
}

Clients that only speak MCP over stdio connect through a bridge such as mcp-remote, given the same URL and header.

HTTPS and the gateway certificate ​

Keys are refused over plain HTTP (port 8080), before the key is even read: a key sniffed off a plant network is a standing credential. A gateway with tlsDisable or dev mode set has decided TLS is handled elsewhere, and accepts plain HTTP.

Unless you installed your own certificate (see Certificates and HTTPS), the gateway's certificate is self-signed, and a client on another machine must be told to trust it. For Node-based clients (Claude Code, mcp-remote), point NODE_EXTRA_CA_CERTS at the gateway's certs/nexus.crt.

Gateways installed before 2026.20: regenerate the certificate

Certificates generated before 2026.20 name no host (no subjectAltName), and MCP clients refuse them with ERR_TLS_CERT_ALTNAME_INVALID even when told to trust them. Stop Nexus, delete certs/nexus.crt and certs/nexus.key from its data directory, and start it again: it generates a certificate for localhost, 127.0.0.1 and the machine's name. Nexus logs the new certificate's SHA-256 fingerprint at startup; Studio asks once to trust it. A certificate you installed yourself is not affected.

Browser-based clients ​

Desktop and command-line clients send no Origin header and need nothing here. A client that runs in a web browser does, and is refused unless its origin (for example https://claude.ai) is listed under Allowed browser origins.

What a client can call ​

ToolReads
list_tags, search_tags, read_tagsThe tag tree, and live values with quality and timestamp. read_tags also gives a tag's engineering unit and range, and its alarm limits.
query_historyA tag's samples, or min/max/avg buckets over a window.
list_active_alarmsActive and unacknowledged alarms, each with the limit that tripped and the tag's current value.
query_alarm_journalAlarm history.
list_devices, get_gateway_diagnosticsDevice connections and gateway health.
read_logs, query_audit_logThe Nexus log and the audit log.
list_projects, list_project_resources, get_screen, get_project_resource, list_named_queriesHMI projects, screens, scripts and named queries (listed, not run).

Prompts a client can start from: diagnose_alarm, commissioning_sweep and explain_screen. Projects, screens and the tag tree are also offered as MCP resources.

Every result is capped in size and long lists come in pages, so a client browses a big plant rather than downloading it. Plant text such as alarm messages is returned as data, never as instructions.

Auditing ​

Every call is written to the audit log as AI_TOOL_CALL under the key's name, including a refused call and why. Creating, disabling, enabling and revoking keys (MCP_KEY_CREATE, MCP_KEY_DISABLE, MCP_KEY_ENABLE, MCP_KEY_REVOKE), changing the settings (MCP_SETTINGS_UPDATE), an unknown key (MCP_AUTH_FAILURE), a key sent over plain HTTP (MCP_CLEARTEXT_REFUSED) and a refused browser origin (MCP_ORIGIN_REFUSED) are recorded too.

Limits ​

  • AI calls run on Iris's own worker pool, never on the threads that scan devices, evaluate alarms or record history. When it is full, a call fails with BUSY and the client retries: AI slowing down never slows the plant down.
  • One key may have at most 8 calls in flight at once, so one busy client cannot crowd out the others.
  • Each call has a deadline, and each response a size cap.

Troubleshooting ​

The client reportsCause
ERR_TLS_CERT_ALTNAME_INVALIDA certificate from before 2026.20; regenerate it (above).
Certificate not trusted / self-signedPoint NODE_EXTRA_CA_CERTS at the gateway's certs/nexus.crt.
403, TLS requiredThe key was sent over http://…:8080; use https://…:8443.
401Unknown, revoked or disabled key.
503The MCP server is turned off (Security › Iris MCP › Turn on).
A tool call fails with BUSYIris's workers, or this key's 8 calls in flight, are full; retry.
A tool is missingThe key's role or tool list does not include it.