The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the OPC UA Modeler listing page.
An MCP server that gives AI agents access to the OPC UA companion specification type system — 749 types across 28 industrial namespaces, plus 1,533 engineering units — and lets agents validate, generate, reverse-engineer, and create OPC UA information models.
Built on node-opcua, the most widely used OPC UA stack for Node.js.
When an AI agent needs to build an OPC UA information model, it must know:
This MCP server answers all of those questions — offline, for free, in milliseconds.
Add to your claude_desktop_config.json:
Note: The API key is optional for discovery tools (offline) and
opcua_model_validate(50 anonymous calls/day). It is required foropcua_model_generate,opcua_model_reverse, andopcua_model_create. Register at opcua-modeler.sterfive.io and create a key under Settings → API — the free tier gives 25 calls/day for 90 days; see pricing for paid plans.
The server communicates over stdio using the Model Context Protocol.
If you run the OPC UA Modeler CLI on the same machine, the model tools can be served from it instead of the hosted API — your YAML never leaves the host.
Start the server (requires a licence that includes the serve entitlement):
Then set one environment variable in your MCP client config:
No API key is needed in this mode — the client discovers the local endpoint and its credentials automatically.
| Variable | Values | Purpose |
|---|---|---|
OPCUA_MODELER_BACKEND | cloud (default), local | Which backend serves the model tools |
OPCUA_MODELER_API_KEY | stfv_… | API key, cloud backend only |
OPCUA_MODELER_API_URL | URL | Override the hosted API base URL |
Notes
local is selected and no server is running, the call fails with instructions
rather than silently sending your model to the hosted API.opcua_model_create (AI generation) is available on the cloud backend only.list_namespacesList all 28 OPC UA companion spec namespaces with aliases, URIs, and dependencies.
resolve_dependenciesResolve the full dependency chain for companion spec aliases. Returns a topologically sorted list for the YAML namespaces: block.
list_typesList all ObjectTypes and VariableTypes defined in a companion spec namespace.
get_type_detailsGet the full structure of a type — components, properties, methods, interfaces, including inherited members.
search_typesSearch for types across all companion specs by keyword.
find_reusable_blockFind reusable Interfaces and AddIns by capability — pass a member name or keyword and get the standard blocks that already expose it. Prefer composing an existing block over redefining its members by hand.
kind tells you how to apply it: interface goes in interfaces:, addin in
addIns:.
find_engineering_unitFind the official UNECE Rec. 20 engineering unit symbol. Supports fuzzy matching and natural language aliases.
get_dsl_reference ☁️Fetch the YAML DSL grammar reference — the file header, top-level sections, type and instance syntax, and a list of common mistakes. No API key required.
Served from the API rather than bundled into this package, so the reference an agent reads always matches the validator that will judge its output.
opcua_model_validate ☁️Validate an OPC UA YAML model for correctness. Returns diagnostics with severity, codes, messages, and line numbers. Works without an API key (limited to 50 calls/day per IP).
opcua_model_generate ☁️Generate OPC UA NodeSet2.xml and Symbols.CSV from a validated YAML model. Returns base64-encoded artifacts. Requires an API key.
opcua_model_reverse ☁️Reverse-engineer a NodeSet2.xml file back into the YAML DSL format. Requires an API key.
opcua_model_create ☁️Generate an OPC UA YAML model from a natural language description using AI. The AI will auto-detect relevant companion specs, generate a validated model with documentation, and auto-correct validation errors. Requires an API key.
| Alias | Specification | Types |
|---|---|---|
padim | OPC UA for PA-DIM | 101 |
ijtBase | OPC UA for IJT Base | 65 |
machineTool | OPC UA for Machine Tools | 63 |
scales | OPC UA for Scales | 58 |
lads | OPC UA for Laboratory Devices | 53 |
di | OPC UA for Devices | 44 |
glass | OPC UA for Glass Manufacturing | 36 |
machineVision | OPC UA for Machine Vision | 36 |
adi | OPC UA for Analyzer Devices | 35 |
commercialKitchenEquipment | OPC UA for Commercial Kitchen Equipment | 35 |
i4aas | OPC UA for I4AAS | 32 |
robotics | OPC UA for Robotics | 25 |
ia | OPC UA for Industrial Automation | 20 |
amb | OPC UA for AMB | 18 |
autoId | OPC UA for AutoID | 18 |
iolink | OPC UA for IO-Link | 16 |
metalForming | OPC UA for Metal Forming | 16 |
| …and 10 more | ||
| Total | 27 namespaces with types | 749 types |
The registry holds 28 specs; irdi is a dictionary-entry namespace and
defines no ObjectTypes or VariableTypes. These figures come from
catalog/catalog.json and are asserted against it by
test/catalog-coverage.test.ts, so they cannot drift silently.
1,533 official UNECE Rec. 20 symbols plus 136 natural language aliases (e.g., "celsius" → °C, "revolutions per minute" → r/min). Every alias resolves to a symbol the modeler engine accepts — the lookup never invents one.
The server ships with a pre-generated catalog.json containing all type information extracted from OPC Foundation's official NodeSet2.xml files via node-opcua. All queries are answered from this static catalog — no network required, no API key needed.
Three layers, stated once:
| What | Licence |
|---|---|
This package (node-opcua-modeler-mcp-server, the MCP client and its catalog) | Apache License 2.0 from version 1.5.0 — see NOTICE for trademark and third-party notices. Versions 1.0–1.4.x were published under MIT and remain so. |
The hosted OPC UA Modeler API (opcua-modeler.sterfive.io/api/v1) that the cloud backend calls | Sterfive API Terms of Use — anonymous discovery, free and paid plans. |
The OPC UA Modeler CLI and opcua-modeler serve (the local backend) | Sterfive commercial licence — see the product page. |
"OPC UA Modeler" and "Sterfive" are trademarks of Sterfive SAS; the Apache licence grants no rights to them. Contributions are accepted under the Developer Certificate of Origin.