node-opcua-modeler-mcp-server
OfficialThis MCP server provides AI agents with access to the OPC UA companion specification type system and tools for validating, generating, reverse-engineering, and creating OPC UA information models.
Discovery (offline, no API key):
List all 25 companion spec namespaces with aliases, URIs, and dependencies.
Resolve full, topologically sorted dependency chains for use in YAML
namespaces:blocks.List ObjectTypes, VariableTypes, and InterfaceTypes in a namespace (589 types across 22 namespaces).
Get detailed type structures including components, properties, methods, and inherited members.
Search for types across all specs by keyword.
Find reusable interfaces and add-ins by capability or member name.
Look up UNECE Rec. 20 engineering unit symbols with fuzzy/natural language matching (1,533 units + 134 aliases).
Model tooling (cloud/local backend; API key may be required):
Validate OPC UA YAML models for correctness with diagnostics (up to 50 anonymous calls/day).
Generate NodeSet2.xml, Symbols.CSV, and optional markdown docs from validated YAML (requires API key).
Reverse-engineer existing NodeSet2.xml files back into YAML DSL (requires API key).
AI-generate YAML models from natural language descriptions with automatic spec detection and error correction (requires API key, cloud only).
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@node-opcua-modeler-mcp-serverFind the engineering unit symbol for revolutions per minute"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
node-opcua-modeler-mcp-server
An MCP server that gives AI agents access to the OPC UA companion specification type system — 589 types across 22 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.
Related MCP server: OpenKer Modeler MCP Server
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 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.
With any MCP client
npx node-opcua-modeler-mcp-serverThe 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 serveThen 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.
Variable | Values | Purpose |
|
| Which backend serves the model tools |
|
| API key, |
| URL | Override the hosted API base URL |
Notes
The two backends are never mixed, and there is no fallback between them. If
localis 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 thecloudbackend only.
Tools
list_namespaces
List all 25 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 typesget_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_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 }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 5 calls/day).
→ opcua_model_validate({ yaml: "namespaces:\n di:\n..." })
← {
"valid": true,
"diagnostics": [
{ "severity": "warning", "code": "W001", "message": "...", "line": 42 }
]
}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_generate({ yaml: "namespaces:\n di:\n...", include_docs: false })
← {
"valid": true,
"artifacts": {
"nodeset2_xml": "PD94bWwg...",
"symbols_csv": "bmFtZSxu..."
},
"diagnostics": []
}opcua_model_reverse ☁️
Reverse-engineer a NodeSet2.xml file back into the YAML DSL format. Requires an API key.
→ opcua_model_reverse({ xml: "<?xml version=..." })
← {
"yaml": "namespaces:\n di:\n...",
"diagnostics": []
}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.
→ opcua_model_create({ prompt: "A robotic welding cell with two robot arms, each having 6 axes, temperature monitoring on each motor" })
← {
"success": true,
"yaml": "namespaces:\n di:\n robotics:\n...",
"attempts": 2,
"diagnostics": [],
"model": "gemini-2.5-pro",
"tokens": { "input": 4200, "output": 1800 }
}
→ opcua_model_create({ prompt: "A CNC lathe with spindle speed and temperature", forceSpecs: ["di", "cnc"] })
← {
"success": true,
"yaml": "namespaces:\n di:\n cnc:\n...",
"attempts": 1,
"diagnostics": [],
"model": "gemini-2.5-pro",
"tokens": { "input": 3500, "output": 1200 }
}Coverage
Companion Specifications (25)
Alias | Specification | Types |
| OPC UA for PA-DIM | 101 |
| OPC UA for IJT Base | 65 |
| OPC UA for Machine Tools | 63 |
| OPC UA for Devices | 44 |
| OPC UA for Glass Manufacturing | 36 |
| OPC UA for Machine Vision | 36 |
| OPC UA for Analyzer Devices | 35 |
| OPC UA for Commercial Kitchen Equipment | 35 |
| OPC UA for Robotics | 25 |
| OPC UA for Industrial Automation | 20 |
| OPC UA for AMB | 18 |
| OPC UA for AutoID | 18 |
| OPC UA for Metal Forming | 16 |
| OPC UA for Machinery | 15 |
| OPC UA GDS | 14 |
| OPC UA for Woodworking | 13 |
| OPC UA for CNC Systems | 12 |
…and 5 more | ||
Total | 22 namespaces | 589 types |
Engineering Units
1,533 official UNECE Rec. 20 symbols plus 134 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.
How It Works
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.
┌──────────────────────────────────────────────────┐
│ node-opcua-modeler-mcp-server │
│ │
│ LOCAL TOOLS (offline, free) │
│ ┌────────────────────────────────────────┐ │
│ │ catalog.json (1.7 MB) │ │
│ │ • 25 companion spec registries │ │
│ │ • 589 type summaries + details │ │
│ │ • 1,533 engineering units │ │
│ └────────────────────────────────────────┘ │
│ 6 tools → query the catalog │
│ │
│ CLOUD TOOLS (via api.opcua-modeler.sterfive.io) │
│ 4 tools → validate / generate / reverse / create│
│ │
│ stdio transport (JSON-RPC) │
└──────────────────────────────────────────────────┘Use Cases
AI-assisted OPC UA modeling — agents can discover types, resolve dependencies, and validate unit symbols before generating YAML/XML models
Copilot integration — add OPC UA awareness to coding assistants
Industrial digital twin design — explore companion spec type hierarchies interactively
Learning OPC UA — ask an AI to explain types and their relationships
Requirements
Node.js ≥ 18
Related
OPC UA Modeler — web app — Create, validate, and generate OPC UA information models in the browser
Product page — OPC UA Modeler overview, features, and licensing
Documentation — Guides, YAML DSL reference, and how-tos
Specification reference — Rendered OPC UA information-model specification
node-opcua — Full OPC UA stack for Node.js
Model Context Protocol — Open protocol for AI tool integration
License
MIT © Sterfive
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables AI agents to query a local knowledge graph built from document collections using hybrid search (BM25 + vector fusion) and entity-relationship extraction. Supports privacy-first, offline operation with tools for semantic search, entity graph exploration, and corpus statistics.3
- -license-quality-maintenanceEnables AI agents to traverse SysML v2 model graphs, query requirements, and perform impact analysis for model-based systems engineering. It allows agents to interact with plain-text models to automate documentation and refine system architectures.
- Alicense-qualityFmaintenanceEnables language-model agents to create, modify, analyze, and persist process-engineering diagrams (P\&IDs and flowsheets) in machine-readable formats via the Model Context Protocol.5MIT
- Flicense-qualityDmaintenanceProvides AI assistants with contextual access to Berlin Group Open Finance API specifications, enabling specification-compliant guidance through semantic search, graph database queries, and document retrieval.1
Related MCP Connectors
Open scientific and engineering knowledge for AI agents: search, evidence, document publishing.
Neutral freight reference + validation layer for AI agents: ADR, HS, UN/LOCODE, freight math
60+ units, live FX, timezones, and date arithmetic for AI agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/node-opcua/node-opcua-modeler-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server