MCPcopy Index your code
hub / github.com/FreeOpcUa/opcua-client-gui

github.com/FreeOpcUa/opcua-client-gui @1.0.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.0.2 ↗ · + Follow
284 symbols 921 edges 28 files 11 documented · 4%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

opcua-client

Simple OPC-UA GUI client built on asyncua and PyQt6.

Screenshot

PRs welcome for any wished improvements.

Features

  • Connect / disconnect, with automatic reconnect when the transport drops: views grey out and a status-bar banner is shown while the supervisor re-establishes the session.
  • Browse the address space with per-node-type icons.
  • Show attributes and references for the selected node.
  • Subscribe to variable data changes and to events.
  • Write variable values.
  • GUI for application certificates and per-server security mode / policy.
  • Call methods (with dialog).
  • Live-plot subscribed variables (pyqtgraph).
  • Persist connection history, the last-browsed node per server, and window layout via QSettings.
  • Context menu with handy helpers: copy NodeId, or copy the full browse path so you can paste it into your own code: client.nodes.root.get_child(['0:Objects', '2:MyNode']).

Install

PyQt6 is required. Python 3.14 or newer.

pip install opcua-client
opcua-client

pip install opcua-client --upgrade to update.

Development

The project uses uv for environment and build management.

uv sync             # install deps + dev tools into .venv
uv run python app.py
uv run python tests.py           # integration tests need a free port
uv run mypy uaclient uawidgets   # type check

After editing any .ui or .qrc source, run make to regenerate uaclient/*_ui.py, uaclient/theme/breeze_resources.py, and uawidgets/resources.py. Targets:

  • make — regenerate UI / resource Python from Qt sources.
  • make run — launch the GUI.
  • make edit — open the main .ui in Qt Creator.

Cutting a release:

uv run python release.py    # bumps pyproject.toml, tags, uv build, uv publish

asyncua is currently consumed via a local path source ([tool.uv.sources] asyncua = { path = "../opcua-asyncio", editable = true }) because the 2.x line is still in pre-release. Drop the source entry once asyncua>=2.0 is on PyPI.

TODO

  • History read.

Core symbols most depended-on inside this repo

Shape

Method 229
Class 36
Function 19

Languages

Python99%
C++1%

Modules by API surface

uaclient/mainwindow.py48 symbols
uawidgets/attrs_widget.py47 symbols
uawidgets/tree_widget.py28 symbols
uawidgets/new_node_dialogs.py23 symbols
uaclient/connection_dialog.py22 symbols
uaclient/uaclient.py21 symbols
uawidgets/refs_widget.py19 symbols
uawidgets/get_node_dialog.py15 symbols
tests.py11 symbols
uaclient/graphwidget.py8 symbols
uaclient/application_certificate_dialog.py8 symbols
uawidgets/call_method_dialog.py6 symbols

For agents

$ claude mcp add opcua-client-gui \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page