Prototype · Preview: every server in the official registry, synced every 30 minutes. Sign in with Google to write reviews.
PopNx MCPMCP servers for people who use AI · explained in plain words

OPC UA Modeler

by node-opcuaversion 1.6.1i★ 2iComputer or cloud
Registry nameio.github.node-opcua/node-opcua-modeler-mcp-server

How to install

Overview

Description from the maker (original English)

OPC UA companion spec types, namespace dependencies, and engineering units for AI agents

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

Install

Pick the AI app you use, then copy the settings.

Passed 5/5 checks · What you ask goes through the maker’s server (api.opcua-modeler.sterfive.io)

First: which AI do you use?

Pick your app and the steps appear below.

Works with Claude · about 2 min

No key, nothing to install · Set it up once on claude.ai or the desktop app, then use it in chat · free accounts can add 1

  1. Open Claude’s Connectors page

    CustomizeConnectors

    CustomizeConnectors1+ Add2https://…3Add4
  2. Click “+ Add” → “Add custom connector” and fill in these 2 fields

    Copy each value into the field with the same name in Claude, then click Continue

    Name · NameOPC UA Modeler
    Remote MCP server URL · Addresshttps://api.opcua-modeler.sterfive.io/api/mcp

    Leave Authentication as Claude detected it, then click Add

  3. Turn it on in a chat

    +ConnectorsOPC UA Modeler

  4. Try it

    Use OPC UA Modeler and tell me what you can do for me, then show me one thing

    ✓ If Claude says it is using OPC UA Modeler or shows a OPC UA Modeler tool in the answer, you are connected

Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Works with ChatGPT on business plans only

ChatGPT Business, Enterprise or Edu on the web, added by a workspace admin or owner · On Free, Plus or Pro: your ChatGPT plan cannot connect MCP yet

  1. Open ChatGPT’s add-MCP page on the web

    Plugins+Add custom MCP server

    ChatGPTPlugins1+2https://…3Create4
  2. Fill in the name and address

    Enter a name, paste the address under Connection, tick the risk warning and click Create as a plugin

    Name · NameOPC UA Modeler
    Connection · Addresshttps://api.opcua-modeler.sterfive.io/api/mcp
  3. Pick OPC UA Modeler in a chat

    Start a new chat and pick OPC UA Modeler from your plugins before typing

  4. Try it

    Use OPC UA Modeler and tell me what you can do for me, then show me one thing

    ✓ If ChatGPT says it is using OPC UA Modeler or shows a OPC UA Modeler tool in the answer, you are connected

Menu names checked against OpenAI’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Works with Claude Code · about 2 min

No key, nothing to install

  1. Open Terminal

    Mac: press Command+Space and type Terminal · Windows: open PowerShell

  2. Paste this command and press Enter

    claude mcp add --transport http node-opcua-modeler https://api.opcua-modeler.sterfive.io/api/mcp
  3. Type /mcp in Claude Code

    You should see OPC UA Modeler listed as connected

  4. Try it

    Use OPC UA Modeler and tell me what you can do for me, then show me one thing

    ✓ If Claude Code says it is using OPC UA Modeler or shows a OPC UA Modeler tool in the answer, you are connected

Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Works with Cursor · about 2 min

No key, nothing to install

  1. Click this button to open Cursor

    Open in Cursor

    Cursor asks you to confirm; click Install

  2. Open the AI chat in Cursor in Agent mode

  3. Try it

    Use OPC UA Modeler and tell me what you can do for me, then show me one thing

    ✓ If Cursor says it is using OPC UA Modeler or shows a OPC UA Modeler tool in the answer, you are connected

Menu names checked against Cursor’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Works with VS Code · about 2 min

No key, nothing to install

  1. Click this button to open VS Code

    Open in VS Code

    VS Code asks you to confirm; click Install

  2. Open the AI chat in VS Code in Agent mode

  3. Try it

    Use OPC UA Modeler and tell me what you can do for me, then show me one thing

    ✓ If VS Code says it is using OPC UA Modeler or shows a OPC UA Modeler tool in the answer, you are connected

Menu names checked against VS Code’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Other apps that use MCP, such as Windsurf, Zed or Gemini CLI, each add servers differently. See how in the app list.

See every app that uses MCP →

Address for apps that connect over the web

Addresshttps://api.opcua-modeler.sterfive.io/api/mcp

JSON settings are under “For developers” below

Stuck? Ask people who use OPC UA Modeler💬 Discussion →
For developers: Terminal commands and JSON settings

Over the web

Claude Code

claude mcp add --transport http node-opcua-modeler https://api.opcua-modeler.sterfive.io/api/mcp

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "node-opcua-modeler": {
      "url": "https://api.opcua-modeler.sterfive.io/api/mcp"
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "node-opcua-modeler": {
      "type": "http",
      "url": "https://api.opcua-modeler.sterfive.io/api/mcp"
    }
  }
}

Installed on your computer

Claude Code

claude mcp add node-opcua-modeler -- npx -y node-opcua-modeler-mcp-server

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "node-opcua-modeler": {
      "command": "npx",
      "args": [
        "-y",
        "node-opcua-modeler-mcp-server"
      ]
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "node-opcua-modeler": {
      "command": "npx",
      "args": [
        "-y",
        "node-opcua-modeler-mcp-server"
      ]
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "node-opcua-modeler": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "node-opcua-modeler-mcp-server"
      ]
    }
  }
}

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

At a glance

Downloads per weeki
118/wk
Licencei
Apache-2.0
Connection
Computer or cloud
Transport
stdio, streamable-http
Latest versioni
1.6.1
Categoryi
Other
Published to registryi
Aug 27, 2026
Code last changedi
Nov 9, 2026
Maker
node-opcua
Packages
npm: node-opcua-modeler-mcp-server
Registry status
Active

Which apps can use it

Based on how this server connects and on each app’s own docs, checked Nov 10, 2026.

Connect over the internet in

ClaudeChatGPTGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast

Run on your computer in

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

All apps, with pros and cons →

Related guides

What it can do

Tool names and descriptions exactly as the server reported them on Nov 11, 2026. The maker wrote them, not us; we show them as plain text.

  • resolve_dependencies

    Given one or more companion spec namespace aliases, returns the full resolved dependency list that MUST go in the YAML `namespaces:` section. Always call this before generating the namespaces block.

  • list_namespaces

    List all well-known OPC UA companion spec namespace aliases with their full names, URIs, and dependencies. Use this to discover what namespaces are available.

  • list_types

    List ALL ObjectTypes, VariableTypes, and InterfaceTypes defined in a specific companion spec namespace. ALWAYS call this before using any type from a namespace — NEVER guess type names.

  • get_type_details

    Get detailed information about a specific type: its components, properties, methods, interfaces, and optional members. Use this to understand a type's structure before creating instances or subtypes. `specRef`, on the type and on a member, is the link to the section of the specif

  • search_types

    Search for types across ALL companion specs by keyword. Use this when you don't know which namespace defines a type. Returns matching types with their namespace alias.

  • find_reusable_block

    Find reusable Interfaces / AddIns by capability — pass a member name or keyword (e.g. "SerialNumber", "DeviceHealth", "Location") and get the standard blocks that already expose it. PREFER applying/composing an existing block over redefining its members inline. Interfaces are app

  • find_engineering_unit

    Find the official UNECE Rec. 20 engineering unit symbol for a given description. ALWAYS call this before using any engineering unit — NEVER guess unit symbols.

  • get_dsl_reference

    Get the grammar reference for the OPC UA modeler YAML DSL: file header, top-level sections, name-prefix conventions, minimal examples, and common mistakes. Call this FIRST before writing any YAML model by hand. Works without an API key.

  • opcua_model_validate

    Validate an OPC UA YAML model for correctness. Returns diagnostics with severity (error/warning/info), codes, messages, and line numbers. Works without an API key (limited to 50 calls/day). ALWAYS validate before generating.

  • opcua_model_generate

    Generate OPC UA NodeSet2.xml and the symbols CSV from a YAML model. Requires an API key (set OPCUA_MODELER_API_KEY env var). NodeIds stay stable only if each regeneration passes back the symbols of the previous one: pass symbols_csv, or mode "new" for a first generation, or mode

  • opcua_model_reverse

    Reverse-engineer a NodeSet2.xml file back into the YAML DSL format. Requires an API key (set OPCUA_MODELER_API_KEY env var). Optionally specify the target namespace URI to extract.

  • opcua_model_create

    Generate an OPC UA YAML model from a natural language description using AI. Requires an API key (set OPCUA_MODELER_API_KEY env var). The AI will auto-detect relevant companion specs, generate a validated model with documentation, and auto-correct validation errors.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 12, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account node-opcua, which owns the repo

  • ✓ Pass

    Still maintained

    Code last changed 3 days ago

  • ✓ Pass

    Has a licence

    Uses Apache-2.0

  • ✓ Pass

    Endpoint responds

    Responded in 291 ms (HTTP 200)

  • – Not applicable

    Sign-in with OAuth

    No sign-in needed

  • ✓ Pass

    No hidden instructions in tool descriptions

    Read 12 tool descriptions and found no hidden instructions to the AI

Discussion

Ask, share a tip or report that it does not work. Sorted by what people marked helpful.

No posts yet. Be the first to ask or share.

Posts here are written by users, not the PopNx team.

Sign in with Google to post

User reviews

No reviews yet

Sign in with Google to write a review

Compared with others in Otheri

  • More stars than 91% of the other 19280 servers in this category
  • Published to the registry more recently than 28% of the other 19280 servers in this category
  • Basic checks equal to or better than 100% of the other 19280 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is OPC UA Modeler safe?

It passed 5 of 5 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

Either way works: install it on your computer or connect to the cloud version.

Is it still maintained?

The GitHub repo last changed 3 days ago, and the latest version (1.6.1) reached the registry 3 months ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT Business and above.

What can I use instead?

In the same category: World Monitor, Claude Flow, Tldraw

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

World Monitor

Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 102 tools.

by koala73Widely used★ 90.5KUpdated today

Runs in the cloud✓ worldmonitor.app

Claude Flow

AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.

by ruvnetWidely used↓ 13.5K/wk★ 81.5KUpdated 14 months ago

Runs on your computer

Tldraw

Draw and visually collaborate with your agents on tldraw's canvas.

by tldrawWidely used★ 51.4KUpdated 8 months ago

Runs in the cloud

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

node-opcua-modeler-mcp-server

An MCP server that gives AI agents access to the OPC UA companion specification type system — 817 types across 33 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.

Why?

When an AI agent needs to build an OPC UA information model, it must know:

  • What companion spec types exist (DI, Machinery, Robotics, Machine Tools…)
  • What components, properties, and methods each type has
  • What namespace dependencies are required
  • What engineering unit symbols are valid (UNECE Rec. 20)

This MCP server answers all of those questions — offline, for free, in milliseconds.

Quick Start

With Claude Desktop

Add to your claude_desktop_config.json:

{

"mcpServers": { "opcua-modeler": { "command": "npx", "args": ["-y", "node-opcua-modeler-mcp-server"], "env": { "OPCUA_MODELER_API_KEY": "stfv_your_api_key_here" } } } }

Note: The API key is optional for discovery tools (offline) and opcua_model_validate (50 anonymous calls/day). It is required for opcua_model_generate, opcua_model_reverse, and opcua_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.

With any MCP client
npx node-opcua-modeler-mcp-server

The server communicates over stdio using the Model Context Protocol.

Using a local backend instead of the hosted API

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):

opcua-modeler serve

Then set one environment variable in your MCP client config:

{

"mcpServers": { "opcua-modeler": { "command": "npx", "args": ["-y", "node-opcua-modeler-mcp-server"], "env": { "OPCUA_MODELER_BACKEND": "local" } } } }

No API key is needed in this mode — the client discovers the local endpoint and its credentials automatically.

VariableValuesPurpose
OPCUA_MODELER_BACKENDcloud (default), localWhich backend serves the model tools
OPCUA_MODELER_API_KEYstfv_…API key, cloud backend only
OPCUA_MODELER_API_URLURLOverride the hosted API base URL

Notes

  • The two backends are never mixed, and there is no fallback between them. If local is selected and no server is running, the call fails with instructions rather than silently sending your model to the hosted API.
  • The seven discovery tools are local to this package and work offline on either setting.
  • opcua_model_create (AI generation) is available on the cloud backend only.

Tools

list_namespaces

List all 33 OPC UA companion spec namespaces with aliases, URIs, and dependencies.

→ list_namespaces()

← [ { "alias": "di", "name": "OPC UA for Devices", "uri": "http://opcfoundation.org/UA/DI/", "dependencies": [] }, { "alias": "robotics", "name": "OPC UA for Robotics", "uri": "http://opcfoundation.org/UA/Robotics/", "dependencies": ["di", "ia"] }, ... ]

resolve_dependencies

Resolve the full dependency chain for companion spec aliases. Returns a topologically sorted list for the YAML namespaces: block.

→ resolve_dependencies({ aliases: ["machineTool"] })

← ["di", "ia", "machinery", "isa95JobControl", "machineryJobs", "machineTool"]

list_types

List all ObjectTypes and VariableTypes defined in a companion spec namespace.

→ list_types({ alias: "robotics" })

← [ { "browseName": "MotionDeviceType", "kind": "ObjectType", "subtypeOf": "di:ComponentType", ... }, { "browseName": "AxisType", "kind": "ObjectType", "subtypeOf": "di:ComponentType", ... }, ... ] // 25 types

get_type_details

Get the full structure of a type — components, properties, methods, interfaces, including inherited members.

→ get_type_details({ alias: "robotics", browseName: "MotionDeviceType" })

← { "browseName": "MotionDeviceType", "kind": "ObjectType", "subtypeOf": "di:ComponentType", "interfaces": ["di:IVendorNameplateType", "di:ITagNameplateType"], "components": [ { "browseName": "robotics:Axes", "nodeClass": "Object", "typeDefinition": "FolderType", "modellingRule": "Mandatory" }, { "browseName": "robotics:PowerTrains", "nodeClass": "Object", "typeDefinition": "FolderType", "modellingRule": "Mandatory" }, ... ], "properties": [ { "browseName": "di:Manufacturer", "dataType": "LocalizedText", "modellingRule": "Mandatory" }, { "browseName": "robotics:MotionDeviceCategory", "dataType": "MotionDeviceCategoryEnumeration", "modellingRule": "Mandatory" }, ... ] }

search_types

Search for types across all companion specs by keyword.

→ search_types({ query: "temperature" })

← [ { "alias": "glass", "browseName": "MotorTemperatureTooHighEventType", ... }, { "alias": "padim", "browseName": "TemperatureMeasurementVariableType", ... }, { "alias": "amb", "browseName": "OverTemperatureConditionClassType", ... } ]

find_reusable_block

Find 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.

→ find_reusable_block({ query: "SerialNumber" })

← [ { "browseName": "di:IVendorNameplateType", "alias": "di", "kind": "interface", "matchedMembers": ["di:SerialNumber"], "members": ["di:Manufacturer", "di:Model", "di:SerialNumber", ...] }, { "browseName": "machinery:MachineIdentificationType", "alias": "machinery", "kind": "addin", "matchedMembers": ["di:SerialNumber"], "members": ["machinery:Location", "di:SerialNumber", ...] } ]

kind tells you how to apply it: interface goes in interfaces:, addin in addIns:.

find_engineering_unit

Find the official UNECE Rec. 20 engineering unit symbol. Supports fuzzy matching and natural language aliases.

→ find_engineering_unit({ query: "celsius" })

← { "symbol": "°C", "matchType": "alias", "confidence": 1 }

→ find_engineering_unit({ query: "revolutions per minute" }) ← { "symbol": "r/min", "matchType": "alias", "confidence": 1 }

→ find_engineering_unit({ query: "bar" }) ← { "symbol": "bar", "matchType": "exact", "confidence": 1 }

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.

→ get_dsl_reference()

← { "version": "1", "reference": "# OPC UA Modeler YAML DSL ..." }

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_validate({ yaml: "namespaces:\n  di:\n..." })

← { "valid": true, "diagnostics": [ { "severity": "warning", "code": "W001", "message": "...", "line": 42 } ] }

By path (local stdio server only). Pass model_path instead of yaml. With OPCUA_MODELER_BACKEND=local, the model's imports: then resolve from its own folder (beside it, then deps/), as in VS Code: an import that names only a uri: needs this, because a model sent as text resolves against the folder opcua-modeler serve was started in. The hosted connector never takes paths.

→ opcua_model_validate({ model_path: "C:/models/cip/cip-example.model.yaml" })
opcua_model_generate ☁️

Generate OPC UA NodeSet2.xml and the symbols CSV from a validated YAML model. Requires an API key.

Keep NodeIds stable. The symbols CSV records the NodeId given to every node. A regeneration that does not pass it back allocates new ids, which breaks every server and client bound to the old ones. So each call must say what it is:

CallMeaning
symbols_csv: " "Regeneration: existing nodes keep their ids. Accepts the CSV text, or the base64 symbols_csv a previous call returned.
mode: "new"First generation: there are no symbols yet.
mode: "renumber"Allocate new ids on purpose.
a self-contained .opcua.yaml streamIt carries its own symbol table, which is replayed.

A call with none of these is refused before reaching the backend with SYMBOLS_DECISION_REQUIRED, and the message says how to retry.

By path (local stdio server only). Pass model_path instead of yaml. The server reads the model and its paired .model.symbols.csv, and writes .Nodeset2.xml, the CSV and, with include_docs, .md beside the model (or into output_dir): the same files and bytes as opcua-modeler generate. Unchanged files are not touched. Nothing large passes through the conversation: for the demoRobot sample the result is about 700 characters instead of about 71 KB of base64. include_artifacts: "inline" also returns the artefacts. With OPCUA_MODELER_BACKEND=local, the model's deps/ folder is resolved too. The hosted connector never takes paths.

→ opcua_model_generate({ model_path: "models/pump.model.yaml" })

← { "valid": true, "mode": "update", "symbols_source": "paired-file", "symbols": { "reused": 41, "new": 1, "dropped": 0, "renumbered": 0, "match": 1, "new_names": ["Pump_Temperature"], "dropped_names": [] }, "files": [ { "role": "nodeset", "path": ".../pump.model.Nodeset2.xml", "bytes": 54210, "status": "written" }, { "role": "symbols", "path": ".../pump.model.symbols.csv", "bytes": 1312, "status": "written" } ], "diagnostics": [], "hints": [{ "code": "SYMBOLS_UPDATED", "level": "info", "message": ".../pump.model.symbols.csv updated: 1 new id(s) (Pump_Temperature)." }], "next_steps": ["Commit pump.model.Nodeset2.xml, pump.model.symbols.csv with the model."] }

As text. Pass yaml; the artefacts come back base64-encoded in artifacts.nodeset2_xml / artifacts.symbols_csv, with the same symbols, hints and next_steps.

Hint codes: INVALID, IDS_RENUMBERED, IDS_DROPPED, SYMBOLS_LOW_MATCH (the CSV passed probably belongs to another model), SAVE_SYMBOLS, SYMBOLS_UPDATED, STREAM_TABLE_NOT_UPDATED, WARNINGS_PRESENT, PREFER_STREAM. Refusal codes: SYMBOLS_DECISION_REQUIRED, SYMBOLS_REQUIRED, SYMBOLS_FILE_EXISTS, MODE_CONFLICT.

opcua_model_reverse ☁️

Reverse-engineer a NodeSet2.xml file back into the YAML DSL format. Requires

Only the beginning is shown; read the rest in the repo