AgentHubAgentHub

OPC UA MCP配置与使用教程

MCP ServerMCP Registry官方收录

io.github.midhunxavier/opcua · v0.6.0

Connect AI assistants to industrial OPC UA: browse, read, history, subscriptions, events and alarms.

建议先在本页复制安装配置,再到上游核对文档与权限。

产品介绍

Connect AI assistants to industrial OPC UA: browse, read, history, subscriptions, events and alarms. OPC UA MCP Server 是一个MCP Server,收录自 官方 MCP Registry。支持 stdio 传输。本页提供产品介绍、配置教程、安装命令与适用场景,支持 Trae、通义灵码、Cursor、Claude Code、VS Code 等。

适用场景

AgentHub Verified 可用性验证技术测试通过

自动化测试流水线已校验安装命令、传输协议与客户端兼容性

最近校验时间2026-11-08
安装配置格式测试有效CLI 与 mcpServers JSON 语法校验通过
协议连接与握手响应正常支持标准 JSON-RPC 2.0 规格规范
上游数据源存活来源 official-mcp-registry,可正常下载依赖
测试可用客户端Claude Code、Claude Desktop、Cursor 等
安全等级: A+ 级 · 官方认证推荐 (A+)·该工具由官方或知名生态团队维护,源码遵循标准开源许可协议,可安全接入 Cursor / Claude。

按平台快速复制

选择你的平台查看安装方式

  1. 打开项目根目录下的 .cursor/mcp.json(没有就新建)
  2. 点击「复制配置」粘贴进去;若已有其他 MCP,只合并 mcpServers 里的本条目
  3. 将 env 中的 <占位符> 替换为真实密钥(见下方「环境变量」)
  4. 保存后按 Cmd+Shift+P(Windows:Ctrl+Shift+P)→ 输入 Reload Window 并执行

预填环境变量与密钥(可选)

必填
secret
secret
secret
必填
secret
隐私安全承诺:所有参数与密钥仅在您本机的浏览器前端进行实时文本替换,AgentHub 绝不向任何服务器上传或存储您的敏感凭据。
点击「复制配置」直接粘贴到客户端
{
  "mcpServers": {
    "opcua": {
      "command": "npx",
      "args": [
        "-y",
        "opcua-mcp-server"
      ],
      "env": {
        "OPCUA_SERVER_URL": "<OPCUA_SERVER_URL>",
        "OPCUA_PROFILE": "<OPCUA_PROFILE>"
      }
    }
  }
}

配置教程

  1. 打开 OPC UA MCP Server 详情页,确认这是你需要的 MCP Server(来源 官方 MCP Registry)。
  2. 按客户端选择 Trae、通义灵码、Cursor、Claude Code 或 VS Code,复制 JSON 配置或 CLI 命令。
  3. 将配置合并进 mcpServers,并把环境变量占位符替换为真实密钥。
  4. 重载窗口后,在 Agent 对话中调用该 MCP 提供的工具。

安装命令

以下安装命令与配置步骤已写入页面 HTML,搜索引擎与未启用 JavaScript 的浏览器均可直接读取。

Claude Code(本地)

  1. 确保已安装 Claude Code CLI
  2. 复制下方命令,将 <占位符> 替换为真实环境变量值后,在终端执行
  3. 若下方列出了环境变量,请对照填写
claude mcp add opcua --env OPCUA_SERVER_URL=<OPCUA_SERVER_URL> --env OPCUA_PROFILE=<OPCUA_PROFILE> -- npx -y opcua-mcp-server

Cursor — .cursor/mcp.json(本地)

  1. 打开项目根目录下的 .cursor/mcp.json(没有就新建)
  2. 点击「复制配置」粘贴进去;若已有其他 MCP,只合并 mcpServers 里的本条目
  3. 将 env 中的 <占位符> 替换为真实密钥(见下方「环境变量」)
  4. 保存后按 Cmd+Shift+P(Windows:Ctrl+Shift+P)→ 输入 Reload Window 并执行
{
  "mcpServers": {
    "opcua": {
      "command": "npx",
      "args": [
        "-y",
        "opcua-mcp-server"
      ],
      "env": {
        "OPCUA_SERVER_URL": "<OPCUA_SERVER_URL>",
        "OPCUA_PROFILE": "<OPCUA_PROFILE>"
      }
    }
  }
}

VS Code — .vscode/mcp.json(本地)

  1. 确保 VS Code 已安装 GitHub Copilot 扩展并支持 MCP
  2. 打开项目根目录下的 .vscode/mcp.json(没有就新建)
  3. 点击「复制配置」粘贴;若已有其他 MCP,只合并 mcpServers 里的本条目
  4. 将 env 中的 <占位符> 替换为真实密钥(见下方「环境变量」)
  5. 保存后重新加载 VS Code 窗口
{
  "mcpServers": {
    "opcua": {
      "command": "npx",
      "args": [
        "-y",
        "opcua-mcp-server"
      ],
      "env": {
        "OPCUA_SERVER_URL": "<OPCUA_SERVER_URL>",
        "OPCUA_PROFILE": "<OPCUA_PROFILE>"
      }
    }
  }
}

Claude Desktop — claude_desktop_config.json(本地)

  1. 打开 Claude Desktop 的 claude_desktop_config.json(路径见远程指引)
  2. 点击「复制配置」合并到 mcpServers
  3. 将 env 中的 <占位符> 替换为真实密钥
  4. 完全退出并重启 Claude Desktop
{
  "mcpServers": {
    "opcua": {
      "command": "npx",
      "args": [
        "-y",
        "opcua-mcp-server"
      ],
      "env": {
        "OPCUA_SERVER_URL": "<OPCUA_SERVER_URL>",
        "OPCUA_PROFILE": "<OPCUA_PROFILE>"
      }
    }
  }
}

Trae — .trae/mcp.json(本地)

  1. 打开 Trae → 设置 → MCP,或编辑 .trae/mcp.json / 全局 mcp.json
  2. 点击「复制配置」粘贴并合并 mcpServers
  3. 将 env 中的 <占位符> 替换为真实密钥
  4. 保存后重载 Trae 窗口
{
  "mcpServers": {
    "opcua": {
      "command": "npx",
      "args": [
        "-y",
        "opcua-mcp-server"
      ],
      "env": {
        "OPCUA_SERVER_URL": "<OPCUA_SERVER_URL>",
        "OPCUA_PROFILE": "<OPCUA_PROFILE>"
      }
    }
  }
}

Cherry Studio — MCP 设置(本地)

  1. 打开 Cherry Studio → 设置 → MCP 服务器 → 添加(STDIO)
  2. 也可直接导入下方 JSON:点击「复制配置」合并到 mcpServers
  3. 将 env 中的 <占位符> 替换为真实密钥,并确保本机已安装 Node.js / uv(npx、uvx)
  4. 启用服务并查看工具列表是否加载成功
{
  "mcpServers": {
    "opcua": {
      "command": "npx",
      "args": [
        "-y",
        "opcua-mcp-server"
      ],
      "env": {
        "OPCUA_SERVER_URL": "<OPCUA_SERVER_URL>",
        "OPCUA_PROFILE": "<OPCUA_PROFILE>"
      }
    }
  }
}

通义灵码 — MCP 配置(本地)

  1. 通义灵码:个人设置 → MCP 服务 → 「+」→ 手工添加(STDIO)或配置文件添加
  2. 点击「复制配置」合并 mcpServers;命令/参数/环境变量与 JSON 一致
  3. 将 env 中的 <占位符> 替换为真实密钥;本机需 Node.js 18+(npx)或已安装 uv(uvx)
  4. 确认服务状态为已连接后再在智能体对话中调用
{
  "mcpServers": {
    "opcua": {
      "command": "npx",
      "args": [
        "-y",
        "opcua-mcp-server"
      ],
      "env": {
        "OPCUA_SERVER_URL": "<OPCUA_SERVER_URL>",
        "OPCUA_PROFILE": "<OPCUA_PROFILE>"
      }
    }
  }
}

Windsurf — mcp_config.json(本地)

  1. 编辑 ~/.codeium/windsurf/mcp_config.json
  2. 点击「复制配置」合并 mcpServers(本地 stdio 与 Cursor 格式相同)
  3. 将 env 中的 <占位符> 替换为真实密钥后保存并刷新 Cascade
{
  "mcpServers": {
    "opcua": {
      "command": "npx",
      "args": [
        "-y",
        "opcua-mcp-server"
      ],
      "env": {
        "OPCUA_SERVER_URL": "<OPCUA_SERVER_URL>",
        "OPCUA_PROFILE": "<OPCUA_PROFILE>"
      }
    }
  }
}

Cline — MCP Servers(本地)

  1. Cline 面板 → 设置 → MCP Servers
  2. 点击「复制配置」粘贴并合并
  3. 将 env 中的 <占位符> 替换为真实密钥后保存
{
  "mcpServers": {
    "opcua": {
      "command": "npx",
      "args": [
        "-y",
        "opcua-mcp-server"
      ],
      "env": {
        "OPCUA_SERVER_URL": "<OPCUA_SERVER_URL>",
        "OPCUA_PROFILE": "<OPCUA_PROFILE>"
      }
    }
  }
}

WorkBuddy — .workbuddy/mcp.json(本地)

  1. 编辑 ~/.workbuddy/mcp.json(用户级)或项目目录 .workbuddy/mcp.json
  2. 也可在界面:插件 → MCP 服务器 → 配置 MCP,粘贴下方 JSON
  3. 将 env 中的 <占位符> 替换为真实密钥;Windows 下 command/脚本路径建议用绝对路径
  4. 保存并重启 WorkBuddy,确认连接器状态为绿色
{
  "mcpServers": {
    "opcua": {
      "command": "npx",
      "args": [
        "-y",
        "opcua-mcp-server"
      ],
      "env": {
        "OPCUA_SERVER_URL": "<OPCUA_SERVER_URL>",
        "OPCUA_PROFILE": "<OPCUA_PROFILE>"
      }
    }
  }
}

常见报错排查与运行避坑 (Troubleshooting)FAQ

针对 OPC UA MCP Server 在 Cursor、Claude Code 中的常见连接错误与解决办法

在 Cursor / Claude Code 中配置 OPC UA MCP Server 提示 connection closed 或 exit code 1?

通常由本地运行时环境缺失或命令路径未被 IDE 继承引起。排查步骤: 1. 确认已安装 Node.js 18+(支持 npx)或 Python 3.10+(支持 uvx); 2. 尝试在终端运行 which npx 或 which uvx,把配置文件中的 "command" 字段改为完整绝对路径; 3. 修改 mcp.json 后,必须完全重载或重启客户端窗口。

Fix Snippet
# 终端测试命令是否存在:
which npx
node -v
提示 spawn npx ENOENT 或 command not found?

这是因为编辑器后台进程未加载完整的终端环境变量(PATH)。解决方案:在全局安装该包(如 npm install -g 包名),或在配置文件中将 command 设置为系统的实际路径(如 Windows 下的 C:\Program Files\nodejs\npx.cmd,Mac 下的 /usr/local/bin/npx)。

提示 Missing required environment variable 或 API 认证失败?

OPC UA MCP Server 依赖环境变量(如 OPCUA_SERVER_URL、OPCUA_PROFILE)。请在客户端配置文件的 "env" 对象中填入有效密钥,注意不要包含多余空格或未闭合的双引号。

Fix Snippet
// .cursor/mcp.json 或 claude_desktop_config.json
{
  "env": {
    "OPCUA_SERVER_URL": "your_actual_key_here"
  }
}

免安装模拟调用 (Playground)

仿真环境

OPC UA MCP Server 核心接口调用仿真 · 无需配置本地环境,直接预览调用参数与返回格式

沙盒就绪 (Virtual Mock)
fn: opcuaConnect AI assistants to industrial OPC UA: browse, read, history, subscriptions, events and alarms.
请求入参 (Arguments)JSON Schema
{
  "target": "OPC UA MCP Server",
  "action": "execute",
  "options": {
    "mode": "standard",
    "timeoutMs": 5000
  }
}
💡Agent 在规划任务时会自动生成并传递上述入参
Agent Tool Output

点击上方「模拟运行」按钮

查看该工具在 Agent 内部的返回数据格式

测试环境:AgentHub Virtual SandboxJSON-RPC 2.0

选型与决策建议(为什么选它?)

帮助你快速判断该资源是否契合当前项目,避免盲目折腾

适合什么任务?
  • PR 自动审查
  • 生成 changelog
  • 跨仓库 Issue 检索
什么时候不建议用?
  • 替代人工安全审计
  • 在无授权仓库上操作
推荐工作流搭配:查看完整场景 →

OPC UA MCP Server + 对应场景 Prompt → 组成标准 Agent 自动化任务

MCP 实战教程:从安装到看见效果

按完整实例走一遍(含期望效果与对比验收)。装完本页资源后,用教程里的提示词核对是否真正生效。

打开教程 →

相关资源

常搭配使用

腾讯云 COS 对象存储

v1.2.3

SkillClawHub26710.8k

io.clawhub.shawnminh/tencent-cos-skill

腾讯云对象存储(COS)和数据万象(CI)集成技能。覆盖文件存储管理、AI处理和知识库三大核心场景。 存储场景:上传文件到云端、下载云端文件、批量管理存储桶文件、获取文件签名链接分享、查看文件元信息、查询数据万象及子服务开通状态。 图片处理场景:图片质量评估打分、AI超分辨率放大、AI智能裁剪、二维码/条形码识别、添加文字水印、获取图片EXIF信息、缩放、裁剪、旋转、格式转换。 文档处理场景:Word/Excel/PPT等办公文档转PDF、文档预览。 媒体处理场景:视频智能封面提取、视频转码、视频截帧、获取媒体信息。 内容审核场景:图片/视频/音频/文本/文档内容审核,检测违规内容。 智能语音

source

中文公文写作

v2.0.51

SkillClawHub7210.9k

io.clawhub.gongyu0918-debug/chinese-official-writing

用于中文公文、事务性材料和新闻稿件的起草、改写、压缩、润色、审校、文种核对、去口语化、降 AI 味及 Word 格式处理,适用于机关、企事业单位、学校和新闻机构。涵盖申请、请示、报告、通知、通告、意见、决定、决议、议案、公报、命令、函、复函、批复、说明、方案、纪要、公告、公示、通报、制度、规定、办法、细则、操作规程、工作要点、总结、调研、讲话、致辞、主持词、述职、可研、审查材料、技术需求、新闻消息、编者按、新闻评论,以及采购、整改、反馈和 AI 算力等场景。

source

继续逛 AgentHub

大多数人安装前还会对比同类工具或看场景方案——下面这些能帮你少走弯路。

收录徽章:把 AgentHub 挂到你的官网

复制下面任意一段代码到项目主页、官网或 GitHub README。徽章是 SVG 热链,无需上传文件,链接指向本页,访客可由此直接找到安装方式。

预览AgentHub 已收录:OPC UA MCP Server
HTML
<a href="https://myagenthub.cn/p/io.github.midhunxavier/opcua" title="AgentHub 已收录:OPC UA MCP Server" target="_blank" rel="noopener">
  <img src="https://myagenthub.cn/badge/io.github.midhunxavier/opcua" alt="AgentHub 已收录:OPC UA MCP Server" height="20" style="border:0"/>
</a>
Markdown(GitHub README)
[![AgentHub 已收录:OPC UA MCP Server](https://myagenthub.cn/badge/io.github.midhunxavier/opcua)](https://myagenthub.cn/p/io.github.midhunxavier/opcua)

徽章由 /badge/<资源ID> 动态生成,名称与收录状态变化后自动更新;请保留链接指向,它是收录来源的判定依据。

统一 Manifest

{
  "id": "io.github.midhunxavier/opcua",
  "type": "mcp-server",
  "version": "0.6.0",
  "displayName": "OPC UA MCP Server",
  "description": "Connect AI assistants to industrial OPC UA: browse, read, history, subscriptions, events and alarms.",
  "repository": {
    "url": "https://github.com/IndustriAgents/OPCUA-MCP",
    "source": "github"
  },
  "homepage": "https://industriagents.com/connect/opcua",
  "distribution": {
    "packages": [
      {
        "registryType": "npm",
        "identifier": "opcua-mcp-server",
        "version": "0.6.0",
        "runtimeHint": "npx",
        "transport": "stdio",
        "environmentVariables": [
          {
            "name": "OPCUA_SERVER_URL",
            "description": "URL of the OPC UA server to connect to, including any path the server expects. Read once at startup: one process serves one endpoint. Verify who answers with an exact server certificate pin or a configured CA trust store.",
            "isRequired": true
          },
          {
            "name": "OPCUA_PYTHON_BACKEND",
            "description": "Select the Python client implementation. The maintained asyncua client is the default; legacy provides the one-release rollback path for uncovered vendor incompatibilities. This setting affects the Python server only."
          },
          {
            "name": "OPCUA_SECURITY_POLICY",
            "description": "Encryption suite to negotiate for the secure channel. Anything other than None needs a client certificate and key. The two AES suites are Node-only: the Python runtime refuses them at startup rather than downgrading. None is unencrypted and unauthenticated, and keeps control tools blocked unless insecure control is explicitly allowed. An unknown policy stops the server at startup."
          },
          {
            "name": "OPCUA_SECURITY_MODE",
            "description": "Message security mode for the secure channel. Sign authenticates messages without encrypting them. A policy with mode None, or a mode without a policy, stops the server at startup; leaving it blank never downgrades a policy to signing only. Leave blank for SignAndEncrypt once a security policy is set, otherwise None."
          },
          {
            "name": "OPCUA_CLIENT_CERT",
            "description": "Path to the certificate (PEM or DER) this client presents as its application identity. Required by any security policy other than None. A path that does not exist stops the server at startup."
          },
          {
            "name": "OPCUA_CLIENT_KEY",
            "description": "Path to the private key matching the client certificate. A path, never key material. Whoever can read the file can impersonate this client: keep it readable only by the account running the server. A path that does not exist stops the server at startup.",
            "isSecret": true
          },
          {
            "name": "OPCUA_APPLICATION_URI",
            "description": "Application URI announced to the server. Set it only for a certificate that carries no URI of its own. A configured URI that conflicts with the certificate is refused before connecting. Leave blank for the subjectAltName URI of the client certificate."
          },
          {
            "name": "OPCUA_SERVER_CERT",
            "description": "Path to the OPC UA server's own certificate (PEM or DER), pinned: a server presenting any other certificate cannot complete the handshake. Control tools (writes, method calls, alarm actions) require it, or OPCUA_SERVER_TRUST_STORE instead. Requires a security policy other than None. Unset, encryption protects against eavesdropping but not against an impostor endpoint, so control tools are refused unless OPCUA_SERVER_TRUST_STORE validates the server or OPCUA_ALLOW_UNVERIFIED_SERVER_CONTROL is set. Set without a security policy, it stops the server at startup rather than pinning nothing; a pinned certificate that has expired or is not yet valid refuses to connect."
          },
          {
            "name": "OPCUA_SERVER_TRUST_STORE",
            "description": "Directory with trusted/certs root CAs, issuers/certs intermediate CAs, and trusted/crl plus issuers/crl signed current revocation lists. Authenticate the OPC UA peer by its validated chain and expected server URI. Requires secured channel and OPCUA_SERVER_APPLICATION_URI; Python requires the maintained asyncua backend. Missing, stale, forged or revoked trust material refuses connection. Cannot be combined with an exact server certificate pin."
          },
          {
            "name": "OPCUA_SERVER_APPLICATION_URI",
            "description": "ApplicationUri of the intended OPC UA server. Must match the peer certificate URI SAN and advertised application identity. Required with OPCUA_SERVER_TRUST_STORE."
          },
          {
            "name": "OPCUA_USERNAME",
            "description": "OPC UA username. The session is anonymous when unset. Cannot be combined with a user certificate. Requires a password; either one alone stops the server at startup."
          },
          {
            "name": "OPCUA_PASSWORD",
            "description": "Password for the username. Without a security policy it crosses the network in clear text. Supply it through the client's secret storage, never on a command line.",
            "isSecret": true
          },
          {
            "name": "OPCUA_USER_CERT",
            "description": "Path to the certificate identifying the user, for X.509 user authentication: a different key pair from the client certificate, which secures the channel. Requires the user key and a security policy other than None; cannot be combined with a username. Any of those combinations broken stops the server at startup."
          },
          {
            "name": "OPCUA_USER_KEY",
            "description": "Path to the private key for the user certificate. It signs the server's challenge and is never sent. Whoever can read the file can log in as this user: keep it readable only by the account running the server.",
            "isSecret": true
          },
          {
            "name": "OPCUA_PROFILE",
            "description": "Which tools are offered. observe reads, browses, reads history and monitors; operator adds explicitly allowlisted writes, method calls and alarm actions; full exposes every tool and is meant only for a tightly scoped OPC UA account. Unset fails closed to observe; an unknown profile stops the server at startup.",
            "isRequired": true
          },
          {
            "name": "OPCUA_POLICY_FILE",
            "description": "Path to a version-1 JSON policy file, the only place per-node value bounds, writable_subtrees, preconditions, the alarm scope and deny_read can be set. Every policy variable that is set overrides what the file says. An unreadable or invalid file stops the server at startup."
          },
          {
            "name": "OPCUA_ALLOWED_TOOLS",
            "description": "Comma-separated tool allowlist. It can only narrow the selected profile, never widen it. An unknown tool name stops the server at startup."
          },
          {
            "name": "OPCUA_ALLOWED_WRITE_NODES",
            "description": "Comma-separated exact node IDs the operator profile may write, as ns=2;i=5 or, stable across a server restart, nsu=<namespace-uri>;i=5 or a browse path from the Root folder such as /Objects/Line1/Setpoint. Setting it replaces the policy file's list, bounds included. Empty fails closed: operator can write nothing. A batch write with any target outside the list is refused before it reaches OPC UA."
          },
          {
            "name": "OPCUA_ALLOWED_METHODS",
            "description": "Comma-separated object_node_id|method_node_id pairs the operator profile may call. Either half may be a browse path from the Root folder. Empty fails closed: operator can call nothing. An entry without | stops the server at startup."
          },
          {
            "name": "OPCUA_ALLOW_ACKNOWLEDGE_ALARMS",
            "description": "Let the operator profile act on alarms: acknowledge_alarm and every act_on_alarm action."
          },
          {
            "name": "OPCUA_ALLOW_INSECURE_CONTROL",
            "description": "Permit control tools on an OPC UA channel with no security policy (None). Does not cover a secured channel to an unverified server; that is OPCUA_ALLOW_UNVERIFIED_SERVER_CONTROL. Fail-open override: writes, method calls and alarm actions then travel unauthenticated and unencrypted. Reported as control=INSECURE-OVERRIDE in the startup line, get_server_status and every audit record. Never enable it against production equipment."
          },
          {
            "name": "OPCUA_ALLOW_UNVERIFIED_SERVER_CONTROL",
            "description": "Permit control tools on a secured OPC UA channel whose server is not authenticated: neither pinned with OPCUA_SERVER_CERT nor validated by OPCUA_SERVER_TRUST_STORE. Does not cover a channel with no security policy; that is OPCUA_ALLOW_INSECURE_CONTROL. Fail-open override: writes, method calls and alarm actions are then encrypted to whichever server answered the endpoint, which may be an impostor. Reported as control=UNVERIFIED-OVERRIDE in the startup line, get_server_status and every audit record. Never enable it against production equipment."
          },
          {
            "name": "OPCUA_ALLOW_OUT_OF_RANGE_WRITES",
            "description": "Allow a write outside the EURange the OPC UA server itself published for the node. A published InstrumentRange still applies. Fail-open override: it discards the only value bound a deployment with no policy file has."
          },
          {
            "name": "OPCUA_AUDIT_FILE",
            "description": "Path to an append-only file for the control audit trail, one JSON object per line, written beside stderr. Created owner-only (0600) if it does not exist; reopened when rotated away. A file that cannot be opened, or that is a symlink, not a regular file, another account's, or group/world-writable, stops the server rather than falling back to stderr alone. While set, a control call whose record cannot be written is refused (fail closed); reads continue."
          },
          {
            "name": "OPCUA_AUDIT_FSYNC",
            "description": "When an audit-file record counts as written. always fsyncs each record before the control call proceeds, so it survives a power loss; none leaves it to the operating system, so it survives only a crash of this process. none can lose the records of control calls that already reached the plant if the machine loses power."
          },
          {
            "name": "OPCUA_AUDIT_CHAIN",
            "description": "Adds seq, prev_hash and hash to every audit record so edits, deletions and reordering can be detected with --verify-audit. sha256 catches accidental or naive edits; hmac-sha256 also resists anyone without the key. Requires the audit file. Set without an audit file, or hmac-sha256 without a key file, stops the server. No chain detects a truncated tail."
          },
          {
            "name": "OPCUA_AUDIT_CHAIN_KEY_FILE",
            "description": "Path to the HMAC key for the hmac-sha256 audit chain: at least 32 bytes, for example from openssl rand -hex 32. Surrounding whitespace is ignored. Whoever can read the key can forge the chain: a key readable or writable by group or others stops the server. Refused unless the chain is hmac-sha256.",
            "isSecret": true
          },
          {
            "name": "OPCUA_OPERATOR_ID",
            "description": "Label stamped on every audit record as operator_label, so a shipped log says which deployment a control call came from. Configured, never verified: it is not an identity, and mcp_principal stays null."
          },
          {
            "name": "OPCUA_RECONNECT_INITIAL_DELAY_MS",
            "description": "Wait before the first attempt to repair a dropped or refused connection, in milliseconds. It doubles with each further attempt."
          },
          {
            "name": "OPCUA_RECONNECT_MAX_DELAY_MS",
            "description": "Ceiling for the doubling retry delay, in milliseconds."
          },
          {
            "name": "OPCUA_RECONNECT_MAX_RETRY",
            "description": "Retries after the first attempt, per connection round, before a tool call gives up: a whole number from -1 to 1000. 0 never retries; -1 never stops trying, in bounded rounds of four retries so no single call waits forever."
          },
          {
            "name": "OPCUA_SESSION_TIMEOUT_MS",
            "description": "Session lifetime asked of the OPC UA server, in milliseconds. It also sets the keep-alive period, so it decides how quickly an idle connection notices the server has gone."
          }
        ]
      }
    ],
    "remotes": []
  },
  "dependencies": [],
  "installTargets": [
    "claude-code",
    "claude-desktop",
    "cursor",
    "vscode",
    "trae",
    "cherry-studio",
    "lingma",
    "windsurf",
    "cline",
    "workbuddy"
  ],
  "keywords": [],
  "provenance": {
    "origin": "official-mcp-registry",
    "originalId": "io.github.midhunxavier/opcua",
    "originalUrl": "https://registry.modelcontextprotocol.io/v0.1/servers/io.github.midhunxavier%2Fopcua/versions/latest",
    "isOfficial": true,
    "status": "active"
  }
}