EMBEDDED DEV TOOLS / HM-DT-041
HM-DT-041 · datasheet

OPC UA MCP Server

Lets MCP agents read sensors, browse the plant and, only when allowed, control equipment on any OPC UA server (PLC, SCADA gateway or historian)

01 · What it does

  • Read and browse OPC UA nodes, with data type, status, timestamps and units
  • Read history and aggregates, and event history where the server supports it
  • Subscribe to nodes and events, and list active alarms
  • Read-only by default; writes and method calls need the operator profile, an allowlist and a verified server
  • Audit file of every control call. Same 15 tools in Python and Node

02 · Install

$ claude mcp add opcua -e OPCUA_SERVER_URL=opc.tcp://localhost:4840 -- npx -y opcua-mcp-server
  1. Replace opc.tcp://localhost:4840 with your endpoint. Python runtime: swap npx -y opcua-mcp-server for uvx opcua-mcp-server
  2. Claude Desktop: a one-file .mcpb bundle on the releases page, or opcua-mcp-server --install claude-desktop --url ... --dry-run
  3. Try it without a plant: the repo ships a mock OPC UA server (uv sync --all-packages, then uv run --no-sync opcua-mock-server)
  4. README warning: the default channel is unencrypted and anonymous; secure it and pin the server certificate before real equipment
  5. One process talks to one endpoint, so add one entry per PLC

03 · Client config (from README)

{
  "mcpServers": {
    "opcua": {
      "command": "npx",
      "args": ["-y", "opcua-mcp-server"],
      "env": { "OPCUA_SERVER_URL": "opc.tcp://localhost:4840" }
    }
  }
}

Install steps taken from the project README (its recommended path first). Placeholders are the maintainer's. Not bench-tested by HardwareMCP yet.

Weekly bulletin

New hardware MCP servers, notable releases and setup notes. One email, Mondays.