OPC-UA MCP Server
An open-source Model Context Protocol server for OPC-UA industrial automation. It enables LLMs to read and write node values with type validation, browse the address space recursively, search nodes by name using a fuzzy index, and subscribe to live data updates. It supports anonymous, username/password, or certificate authentication and includes a persistent disk cache for improved performance.
Package and access
Local package with source-attributed installation metadata. Koskamo does not execute packages during review.
What you can do with it
- Read and write node values with type validation
- Browse the OPC-UA address space recursively
- Search nodes by browse name using fuzzy matching
- Subscribe to live data updates from industrial devices
Source and maintenance
- Maintenance checked
Packages and installation
Source-provided package data. Koskamo has not executed or live-probed this package.
ghcr.io/mwieczorkiewicz/opcua-mcp:main-29734c4
{
"transport": "stdio",
"identifier": "ghcr.io/mwieczorkiewicz/opcua-mcp:main-29734c4",
"registryType": "oci",
"environmentVariables": [
{
"name": "OPCUA_ENDPOINT",
"default": "opc.tcp://localhost:4840",
"isRequired": true,
"description": "OPC-UA server endpoint to connect to, e.g. opc.tcp://your-plc-host:4840"
},
{
"name": "OPCUA_AUTH_MODE",
"default": "anonymous",
"description": "Authentication mode against the OPC-UA server"
},
{
"name": "OPCUA_USERNAME",
"description": "Username, required if OPCUA_AUTH_MODE=username"
},
{
"name": "OPCUA_PASSWORD",
"description": "Password, required if OPCUA_AUTH_MODE=username"
},
{
"name": "OPCUA_SECURITY_POLICY",
"default": "None",
"description": "OPC-UA transport security policy, e.g. Basic256Sha256"
},
{
"name": "OPCUA_SECURITY_MODE",
"default": "None",
"description": "OPC-UA transport security mode, e.g. SignAndEncrypt"
},
{
"name": "SERVER_TRANSPORT",
"default": "stdio",
"description": "MCP transport: stdio (for local MCP clients) or http (for remote/hosted deployments)"
}
]
}Tools
Reported by the attributed source; not independently observed by Koskamo.
Connect from your client
Each snippet configures the same source-provided package; replace placeholders before use.
Cursor
{
"mcpServers": {
"opc-ua-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"OPCUA_ENDPOINT=<YOUR_OPCUA_ENDPOINT>",
"-e",
"OPCUA_AUTH_MODE=<YOUR_OPCUA_AUTH_MODE>",
"-e",
"OPCUA_USERNAME=<YOUR_OPCUA_USERNAME>",
"-e",
"OPCUA_PASSWORD=<YOUR_OPCUA_PASSWORD>",
"-e",
"OPCUA_SECURITY_POLICY=<YOUR_OPCUA_SECURITY_POLICY>",
"-e",
"OPCUA_SECURITY_MODE=<YOUR_OPCUA_SECURITY_MODE>",
"-e",
"SERVER_TRANSPORT=<YOUR_SERVER_TRANSPORT>",
"ghcr.io/mwieczorkiewicz/opcua-mcp:main-29734c4"
],
"env": {
"OPCUA_ENDPOINT": "<YOUR_OPCUA_ENDPOINT>",
"OPCUA_AUTH_MODE": "<YOUR_OPCUA_AUTH_MODE>",
"OPCUA_USERNAME": "<YOUR_OPCUA_USERNAME>",
"OPCUA_PASSWORD": "<YOUR_OPCUA_PASSWORD>",
"OPCUA_SECURITY_POLICY": "<YOUR_OPCUA_SECURITY_POLICY>",
"OPCUA_SECURITY_MODE": "<YOUR_OPCUA_SECURITY_MODE>",
"SERVER_TRANSPORT": "<YOUR_SERVER_TRANSPORT>"
}
}
}
}Cline
{
"mcpServers": {
"opc-ua-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"OPCUA_ENDPOINT=<YOUR_OPCUA_ENDPOINT>",
"-e",
"OPCUA_AUTH_MODE=<YOUR_OPCUA_AUTH_MODE>",
"-e",
"OPCUA_USERNAME=<YOUR_OPCUA_USERNAME>",
"-e",
"OPCUA_PASSWORD=<YOUR_OPCUA_PASSWORD>",
"-e",
"OPCUA_SECURITY_POLICY=<YOUR_OPCUA_SECURITY_POLICY>",
"-e",
"OPCUA_SECURITY_MODE=<YOUR_OPCUA_SECURITY_MODE>",
"-e",
"SERVER_TRANSPORT=<YOUR_SERVER_TRANSPORT>",
"ghcr.io/mwieczorkiewicz/opcua-mcp:main-29734c4"
],
"env": {
"OPCUA_ENDPOINT": "<YOUR_OPCUA_ENDPOINT>",
"OPCUA_AUTH_MODE": "<YOUR_OPCUA_AUTH_MODE>",
"OPCUA_USERNAME": "<YOUR_OPCUA_USERNAME>",
"OPCUA_PASSWORD": "<YOUR_OPCUA_PASSWORD>",
"OPCUA_SECURITY_POLICY": "<YOUR_OPCUA_SECURITY_POLICY>",
"OPCUA_SECURITY_MODE": "<YOUR_OPCUA_SECURITY_MODE>",
"SERVER_TRANSPORT": "<YOUR_SERVER_TRANSPORT>"
}
}
}
}VS Code
{
"servers": {
"opc-ua-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"OPCUA_ENDPOINT=<YOUR_OPCUA_ENDPOINT>",
"-e",
"OPCUA_AUTH_MODE=<YOUR_OPCUA_AUTH_MODE>",
"-e",
"OPCUA_USERNAME=<YOUR_OPCUA_USERNAME>",
"-e",
"OPCUA_PASSWORD=<YOUR_OPCUA_PASSWORD>",
"-e",
"OPCUA_SECURITY_POLICY=<YOUR_OPCUA_SECURITY_POLICY>",
"-e",
"OPCUA_SECURITY_MODE=<YOUR_OPCUA_SECURITY_MODE>",
"-e",
"SERVER_TRANSPORT=<YOUR_SERVER_TRANSPORT>",
"ghcr.io/mwieczorkiewicz/opcua-mcp:main-29734c4"
],
"env": {
"OPCUA_ENDPOINT": "<YOUR_OPCUA_ENDPOINT>",
"OPCUA_AUTH_MODE": "<YOUR_OPCUA_AUTH_MODE>",
"OPCUA_USERNAME": "<YOUR_OPCUA_USERNAME>",
"OPCUA_PASSWORD": "<YOUR_OPCUA_PASSWORD>",
"OPCUA_SECURITY_POLICY": "<YOUR_OPCUA_SECURITY_POLICY>",
"OPCUA_SECURITY_MODE": "<YOUR_OPCUA_SECURITY_MODE>",
"SERVER_TRANSPORT": "<YOUR_SERVER_TRANSPORT>"
}
}
}
}Claude Desktop
{
"mcpServers": {
"opc-ua-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"OPCUA_ENDPOINT=<YOUR_OPCUA_ENDPOINT>",
"-e",
"OPCUA_AUTH_MODE=<YOUR_OPCUA_AUTH_MODE>",
"-e",
"OPCUA_USERNAME=<YOUR_OPCUA_USERNAME>",
"-e",
"OPCUA_PASSWORD=<YOUR_OPCUA_PASSWORD>",
"-e",
"OPCUA_SECURITY_POLICY=<YOUR_OPCUA_SECURITY_POLICY>",
"-e",
"OPCUA_SECURITY_MODE=<YOUR_OPCUA_SECURITY_MODE>",
"-e",
"SERVER_TRANSPORT=<YOUR_SERVER_TRANSPORT>",
"ghcr.io/mwieczorkiewicz/opcua-mcp:main-29734c4"
],
"env": {
"OPCUA_ENDPOINT": "<YOUR_OPCUA_ENDPOINT>",
"OPCUA_AUTH_MODE": "<YOUR_OPCUA_AUTH_MODE>",
"OPCUA_USERNAME": "<YOUR_OPCUA_USERNAME>",
"OPCUA_PASSWORD": "<YOUR_OPCUA_PASSWORD>",
"OPCUA_SECURITY_POLICY": "<YOUR_OPCUA_SECURITY_POLICY>",
"OPCUA_SECURITY_MODE": "<YOUR_OPCUA_SECURITY_MODE>",
"SERVER_TRANSPORT": "<YOUR_SERVER_TRANSPORT>"
}
}
}
}Let your agent find its tools
Find servers like OPC-UA MCP Server from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.