Back to Browse

OPC-UA MCP Server MCP Server

by mwieczorkiewicz
Developer ToolsModerate7.2Local
Free

Read, write, browse, and subscribe to live OPC-UA industrial data from any MCP client.

About

opcua-mcp is a Go-based MCP server that bridges LLM clients (Claude, and any other MCP-compatible client) to OPC-UA industrial automation servers - the standard protocol used by PLCs, SCADA systems, and factory/process equipment. It exposes read, write, browse, discovery, search, and push-based subscription operations as MCP tools, backed by a persistent on-disk cache and a background-built, full-text-searchable index of the connected server's address space.

It's built for industrial/OT engineers, integrators, and developers who want an LLM to inspect or operate an OPC-UA server conversationally - e.g. "what's the current value of the mixer temperature sensor," "browse the Objects folder," or "subscribe me to every node under Line3/Pumps and alert me on change" - without hand-writing OPC-UA client code for each query. Runs over stdio (for local/desktop MCP clients) or HTTP (for remote/hosted deployments), and supports anonymous, username/password, or certificate authentication against the OPC-UA server itself.

Security Report

7.2
Moderate7.2Low Risk

This OPC-UA MCP server is well-structured with proper authentication support, good error handling, and appropriate security practices for credential management. Credentials (usernames, passwords, certificates) are loaded from environment variables and config files, never hardcoded. Minor code quality observations around broad error handling and some redundant type conversions do not rise to security concerns. The server's permissions (network_http, file_read, file_write, env_vars) are appropriate for an industrial automation tool that needs to connect to remote OPC-UA endpoints and persist cached data.

1 file analyzed · 4 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

File System Read

Reads files on your machine. Normal for tools that analyze or process local data.

File System Write

Writes or modifies files on your machine. Check that this is expected for the tool.

env_vars

Check that this permission is expected for this type of plugin.

process_spawn

Check that this permission is expected for this type of plugin.

What You'll Need

Set these up before or after installing:

The OPC-UA server endpoint to connect to, e.g.Required

Environment variable: OPCUA_ENDPOINT

`anonymous` (default), `username`, or `certificate`.Optional

Environment variable: OPCUA_AUTH_MODE

`stdio` (default, for local MCP clients) or `http` (forOptional

Environment variable: SERVER_TRANSPORT

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "opc-ua-mcp-server": {
      "env": {
        "OPCUA_ENDPOINT": "your-opcua-endpoint-here",
        "OPCUA_AUTH_MODE": "your-opcua-auth-mode-here",
        "SERVER_TRANSPORT": "your-server-transport-here"
      },
      "args": [
        "-y",
        "github:mwieczorkiewicz/opcua-mcp"
      ],
      "command": "npx"
    }
  }
}

Getting Started

Once installed, try these example prompts and explore these capabilities:

  • 1"Connect to my OPC-UA server and show me the server info"
  • 2"Browse the Objects folder and list what's under it"
  • 3"What's the current value of node ns=2;i=1002?"
  • 4"Find every node with 'temperature' in its name"
  • 5"Subscribe me to updates on the mixer speed and tank level nodes every 2 seconds"
  • 6"Write the value 75 to the setpoint node, but validate the type first"
  • 7Tool: `opcua_connect` / `opcua_disconnect` - establish or tear down the OPC-UA connection
  • 8explicitly (mainly relevant in stdio mode, where the connection is lazy)
  • 9Tool: `opcua_browse` / `opcua_browse_nodes` - list a node's children, or recursively browse a
  • 10subtree
  • 11Tool: `opcua_read` / `opcua_get_value` / `opcua_get_value_by_name` - read node values by ID or
  • 12by browse name
  • 13Tool: `opcua_write` - write a value to a node, validated against its declared type
  • 14Tool: `opcua_find_similar_nodes` - fuzzy-match a browse name against the discovery index
  • 15Tool: `opcua_subscribe` / `opcua_unsubscribe` / `opcua_list_subscriptions` - manage push-based
  • 16live updates

Reviews

No reviews yet

Be the first to review this server!