node-opcua
v2.175.2
Published
pure nodejs OPCUA SDK - module node-opcua
Maintainers
Readme
node-opcua
The most complete OPC UA stack for Node.js — build industrial-grade OPC UA servers and clients in TypeScript.
Why node-opcua?
- 🏭 Full OPC UA stack — server, client, discovery, aggregation, and GDS
- 🔒 Production-grade security — X.509 certificates, encrypted channels, user authentication
- 🌍 Cross-platform — Windows, Linux, macOS, and browser (via WebSocket)
- 📦 120+ packages — modular architecture, use only what you need
- 🛡️ Battle-tested — 12+ years of development, 1,600+ GitHub stars, 3,000+ tests
- 📖 Well documented — NodeOPCUA by Example book + API reference
Quick Start
Requirements: Node.js 20 or later
npm install node-opcuaCreate an OPC UA Server
import { OPCUAServer, DataType, Variant } from "node-opcua";
const server = new OPCUAServer({ port: 4840 });
await server.initialize();
const addressSpace = server.engine.addressSpace;
if (!addressSpace) throw new Error("AddressSpace not initialized");
const namespace = addressSpace.getOwnNamespace();
namespace.addVariable({
browseName: "Temperature",
componentOf: addressSpace.rootFolder.objects,
dataType: DataType.Double,
value: { get: () => new Variant({ dataType: DataType.Double, value: 22.5 }) },
});
await server.start();
console.log("Server started at", server.getEndpointUrl());Connect as an OPC UA Client
import { OPCUAClient, AttributeIds } from "node-opcua";
const client = OPCUAClient.create({ endpointMustExist: false });
await client.connect("opc.tcp://localhost:4840");
const session = await client.createSession();
const value = await session.read({ nodeId: "ns=1;s=Temperature", attributeId: AttributeIds.Value });
console.log("Temperature =", value.value.value);
await session.close();
await client.disconnect();🏢 Professional Support
| | Community (MIT) | Professional | | ------------------------ | :----------------: | :------------------: | | Full documentation | ✅ | ✅ + extended docs | | Bug fixes | Best effort | Priority SLA | | CVE security advisories | After disclosure | Early access — patch before public disclosure | | Certifiable version | — | ✅ | | Dedicated consulting | — | ✅ | | Custom development | — | ✅ |
Or contact Sterfive for dedicated consulting and enterprise needs.
📖 Documentation
- NodeOPCUA by Example — the definitive guide with practical, ready-to-use examples
- API Reference — full TypeScript API documentation
- Tutorials — step-by-step guides in the main repository
Value-Added Extensions
Source-available companion modules available to NodeOPCUA subscription members (additional fee):
| Module | Description | | ------ | ----------- | | node-opcua-pub-sub | OPC UA PubSub over MQTT (Part 14) — Industry 4.0 ready | | aggregator | Combine and monitor hundreds of servers and millions of variables | | node-opcua-optimized-client | High-performance OPC UA client for demanding workloads | | node-opcua-gds | Global Discovery Server — certificate lifecycle at scale (Part 12) | | node-opcua-modeler-ex | Programmatic OPC UA modeler |
👉 Visit support.sterfive.com for access and pricing.
Ecosystem
AI-Powered Modeling with MCP
node-opcua-modeler-mcp-server — an MCP server that gives AI agents access to the OPC UA companion specification type system. Discover types, resolve namespace dependencies, and look up engineering units.
npx node-opcua-modeler-mcp-serverOPC UA Modeler
OPC UA Modeler — create, validate, and generate OPC UA information models using a YAML-first workflow with full companion spec support.
:heart: Sponsors
If you rely on node-opcua in production, please consider sponsoring the project. Your support funds long-term maintenance, new features, and representation at the OPC Foundation.
License
MIT — Copyright (c) 2014-2026 Etienne Rossignon / Sterfive SAS
See LICENSE for details.
