{"name":"io.github.node-opcua/node-opcua-modeler-mcp-server","slug":"node-opcua-modeler-mcp-server","title":"OPC UA Modeler","description":"OPC UA companion spec types, namespace dependencies, and engineering units for AI agents","url":"https://mcp.market/server/node-opcua-modeler-mcp-server","rating":null,"grade":"A","score":87,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":39,"stars":2,"forks":0,"downloads_week":188,"last_push_at":"2026-10-23T07:45:56.000Z","license":"Apache-2.0"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T08:15:41.755Z","last_ok_at":"2026-11-04T08:15:41.755Z","latency_ms":90},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/node-opcua/node-opcua-modeler-mcp-server","website":"https://opcua-modeler.sterfive.io","version":"1.6.1","remotes":[{"type":"streamable-http","url":"https://api.opcua-modeler.sterfive.io/api/mcp"}],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"node-opcua-modeler-mcp-server","version":"1.6.1","runtimeHint":"npx","transport":{"type":"stdio"}}],"tools":[{"name":"find_engineering_unit","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Description or common name of the unit (e.g. \"revolutions per minute\", \"celsius\", \"pressure bar\")"}},"required":["query"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"find_reusable_block","description":"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 applied with `interfaces:`; addins (types with a DefaultInstanceBrowseName) are composed with `addIns:`. A single property → use the Interface; a whole named sub-object → use the AddIn.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Member name or capability keyword (e.g. \"SerialNumber\", \"health\", \"calibration\")"}},"required":["query"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_dsl_reference","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_type_details","description":"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 specification that defines it: cite it.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"alias":{"type":"string","description":"Companion spec alias where the type is defined (e.g. \"machinery\")"},"browseName":{"type":"string","description":"The type browse name (e.g. \"MachineryItemIdentificationType\")"}},"required":["alias","browseName"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_namespaces","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_types","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"alias":{"type":"string","description":"Companion spec alias (e.g. \"machinery\", \"di\", \"robotics\")"}},"required":["alias"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"opcua_model_create","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Natural language description of the OPC UA model to generate"},"forceSpecs":{"type":"array","items":{"type":"string"},"description":"Companion spec aliases to force (e.g. [\"di\", \"ia\"])"}},"required":["prompt"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"opcua_model_generate","description":"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 \"renumber\" to change ids on purpose. A call with none of these is refused with SYMBOLS_DECISION_REQUIRED. Returns base64-encoded artifacts if the model is valid. The result lists symbol counts (reused/new/dropped), hints and next steps.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"yaml":{"type":"string","description":"The full YAML model source to generate from"},"symbols_csv":{"type":"string","description":"The symbols CSV of the previous generation (the content of <name>.model.symbols.csv, or the base64 symbols_csv a previous call returned). Keeps NodeIds stable."},"mode":{"type":"string","enum":["new","update","renumber"],"description":"\"new\": first generation, no symbols yet. \"update\": regeneration, symbols required. \"renumber\": allocate new NodeIds on purpose. Omit when passing symbols."},"include_docs":{"type":"boolean","description":"Set to true to include markdown documentation (slower)"}},"required":["yaml"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"opcua_model_reverse","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"xml":{"type":"string","description":"The NodeSet2.xml content to reverse-engineer"},"namespace_uri":{"type":"string","description":"Target namespace URI to extract (auto-detected if omitted)"},"self_contained":{"type":"boolean","description":"Return one self-contained .opcua.yaml stream: the model, its NodeId symbol table and dependency declarations (default: bare YAML)"}},"required":["xml"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"opcua_model_validate","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"yaml":{"type":"string","description":"The full YAML model source to validate"}},"required":["yaml"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"resolve_dependencies","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"string"},"description":"Companion spec aliases to resolve (e.g. [\"machineTool\", \"robotics\"])"}},"required":["aliases"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"search_types","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Search keyword (e.g. \"identification\", \"temperature\", \"motion\")"}},"required":["query"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":87,"grade":"A","scanned_at":"2026-10-31T05:52:19.913Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-31T05:52:19.757Z","components":{"code":{"score":25,"max":25,"notes":["14 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1960ms"]},"poisoning":{"score":15,"max":15,"notes":["12 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 1 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 8 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://api.opcua-modeler.sterfive.io/api/mcp","reachable":true,"authRequired":false,"latencyMs":1960,"serverInfo":{"name":"opcua-modeler","version":"1.7.1"}}],"packages":[{"registryType":"npm","identifier":"node-opcua-modeler-mcp-server","version":"1.6.1","found":true,"license":"Apache-2.0","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-08-27T13:37:57.694Z","repositoryUrl":"git+https://github.com/node-opcua/node-opcua-modeler-mcp-server.git","weeklyDownloads":188}],"repo":{"found":true,"owner":"node-opcua","repo":"node-opcua-modeler-mcp-server","archived":false,"pushedAt":"2026-10-23T07:45:56Z","stars":2,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/7457243?v=4","ownerCreatedAt":"2014-05-01T09:49:34Z","license":"Apache-2.0"},"icon":{"url":"https://avatars.githubusercontent.com/u/7457243?v=4&s=128","source":"registry","width":128,"height":128},"presence":{"stars":2,"forks":0,"downloadsWeek":188,"license":"Apache-2.0","lastPushAt":"2026-10-23T07:45:56.000Z","score":39}}}},"grade_history":[],"reviews":[]}