Install
$ agentstack add mcp-vogler75-opcua-mcp-server ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
OPC UA MCP Server
A Python application that connects to an OPC UA server and exposes it via MCP (Model Context Protocol) using FastMCP.
Features
- Connect to any OPC UA server with optional authentication
- Browse the complete node tree from a configurable starting node
- Expose the OPC UA node tree as MCP resources
- Read values from OPC UA nodes
- Search nodes by display name or browse name with wildcard support
- Support for both stdio and SSE (Server-Sent Events) transport methods
Installation
pip install -r requirements.txt
Usage
Basic usage with HTTP transport (default):
python opcua_mcp_server.py opc.tcp://localhost:4840
With authentication:
python opcua_mcp_server.py opc.tcp://localhost:4840 --username myuser --password mypass
Using stdio transport:
python opcua_mcp_server.py opc.tcp://localhost:4840 --transport stdio
With custom starting node and HTTP port:
python opcua_mcp_server.py opc.tcp://localhost:4840 --start-node "i=84" --http-port 8080
Command Line Arguments
opcua_url(required): OPC UA server URL (e.g., opc.tcp://localhost:4840)--start-node: Starting node ID for browsing (default: i=85)--username: Username for OPC UA authentication--password: Password for OPC UA authentication--transport: MCP transport method - 'stdio' or 'http' (default: http)--http-port: Port for HTTP transport (default: 3000)
MCP Tools
The server provides the following tools:
read-value
Read the current value of one or more OPC UA nodes.
Parameters:
node_ids: List of node IDs to read
Example:
{
"node_ids": ["ns=2;s=MyVariable", "ns=2;s=Temperature"]
}
find-by-display-name
Find nodes by display name pattern (supports wildcards).
Parameters:
pattern: Display name pattern with wildcards (e.g., Temperature)
Example:
{
"pattern": "*Temperature*"
}
find-by-browse-name
Find nodes by browse name pattern (supports wildcards).
Parameters:
pattern: Browse name pattern with wildcards (e.g., Sensor)
Example:
{
"pattern": "*Sensor*"
}
Node Information
Each node in the tree contains:
node_id: The OPC UA node identifierbrowse_name: The browse name of the nodedisplay_name: The human-readable display namenode_class: The type of node (e.g., Object, Variable, Method, etc.)children: List of child nodes (only for non-leaf nodes)
Example
- Start an OPC UA server (e.g., using
opcua-asyncioexample server) - Run the MCP server:
``bash python opcua_mcp_server.py opc.tcp://localhost:4840 ``
- The MCP server will connect to the OPC UA server, browse the node tree, and expose it via MCP
- You can now use any MCP client to interact with the OPC UA data
Error Handling
- The server will exit if it cannot connect to the OPC UA server
- Individual node read errors are returned in the response
- The server properly disconnects from the OPC UA server on shutdown
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: vogler75
- Source: vogler75/opcua-mcp-server
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.