NestDaddy

otgate — OT policy gateway

io.github.alikup-ai/otgate-opcua · v0.1.1

Gates an LLM agent's writes to an OPC UA server on ranges, rate of change and live interlocks.

Connect Runs on your machine

Terminal
claude mcp add otgate-opcua -e OTGATE_BACKEND=<OTGATE_BACKEND> -e OTGATE_POLICY=<OTGATE_POLICY> -e OTGATE_AUDIT=<OTGATE_AUDIT> -e OTGATE_SHADOW=<OTGATE_SHADOW> -e OTGATE_RATE_HISTORY=<OTGATE_RATE_HISTORY> -e OTGATE_OPCUA_ENDPOINT=<OTGATE_OPCUA_ENDPOINT> -- uvx otgate==0.1.1
claude_desktop_config.json
{
  "mcpServers": {
    "otgate-opcua": {
      "command": "uvx",
      "args": [
        "otgate==0.1.1"
      ],
      "env": {
        "OTGATE_BACKEND": "<OTGATE_BACKEND>",
        "OTGATE_POLICY": "<OTGATE_POLICY>",
        "OTGATE_AUDIT": "<OTGATE_AUDIT>",
        "OTGATE_SHADOW": "<OTGATE_SHADOW>",
        "OTGATE_RATE_HISTORY": "<OTGATE_RATE_HISTORY>",
        "OTGATE_OPCUA_ENDPOINT": "<OTGATE_OPCUA_ENDPOINT>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "otgate-opcua": {
      "command": "uvx",
      "args": [
        "otgate==0.1.1"
      ],
      "env": {
        "OTGATE_BACKEND": "<OTGATE_BACKEND>",
        "OTGATE_POLICY": "<OTGATE_POLICY>",
        "OTGATE_AUDIT": "<OTGATE_AUDIT>",
        "OTGATE_SHADOW": "<OTGATE_SHADOW>",
        "OTGATE_RATE_HISTORY": "<OTGATE_RATE_HISTORY>",
        "OTGATE_OPCUA_ENDPOINT": "<OTGATE_OPCUA_ENDPOINT>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "otgate-opcua": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "otgate==0.1.1"
      ],
      "env": {
        "OTGATE_BACKEND": "<OTGATE_BACKEND>",
        "OTGATE_POLICY": "<OTGATE_POLICY>",
        "OTGATE_AUDIT": "<OTGATE_AUDIT>",
        "OTGATE_SHADOW": "<OTGATE_SHADOW>",
        "OTGATE_RATE_HISTORY": "<OTGATE_RATE_HISTORY>",
        "OTGATE_OPCUA_ENDPOINT": "<OTGATE_OPCUA_ENDPOINT>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
OTGATE_BACKEND
Optional
Backend to gate: 'fake' for the bundled in-memory reactor simulator, 'asyncua' for a real OPC UA server. Start with 'fake' — it needs no plant and no extra dependency.
OTGATE_POLICY
Optional
Path to the policy YAML. Any tag not listed in it is denied by default.
OTGATE_AUDIT
Optional
Path to the append-only JSONL audit log. Every call, allowed or not, produces exactly one line.
OTGATE_SHADOW
Optional
Set to 1 to run in shadow mode: allowed writes are recorded as 'WOULD execute' and never reach the backend. Use this to watch an agent for a while before letting it touch anything.
OTGATE_RATE_HISTORY
Optional
Path to a JSONL file that keeps the rate-of-change time base across restarts. Without it a restart loses the time base, and rate limits fall back to a one-interval allowance.
OTGATE_OPCUA_ENDPOINT
Optional
OPC UA endpoint, e.g. opc.tcp://localhost:4840. Required when OTGATE_BACKEND=asyncua.

Details

Package[email protected] (PYPI, stdio)
First published7 Nov 2026
Last updated7 Nov 2026
Registry nameio.github.alikup-ai/otgate-opcua

More ai and media servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.