OPC UA MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OPC UA MCP Serverread value of ns=2;s=Temperature"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Related MCP server: WinCC Unified MCP XT
Installation
pip install -r requirements.txtUsage
Basic usage with HTTP transport (default):
python opcua_mcp_server.py opc.tcp://localhost:4840With authentication:
python opcua_mcp_server.py opc.tcp://localhost:4840 --username myuser --password mypassUsing stdio transport:
python opcua_mcp_server.py opc.tcp://localhost:4840 --transport stdioWith custom starting node and HTTP port:
python opcua_mcp_server.py opc.tcp://localhost:4840 --start-node "i=84" --http-port 8080Command 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:
python opcua_mcp_server.py opc.tcp://localhost:4840The 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
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vogler75/opcua-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server