Specification Context for AI Applications
The OPC UA Online Reference exposes a Model Context Protocol (MCP) server that lets AI assistants search specifications, look up node definitions, and resolve conformance units in real time — without requiring a local copy of any document.
AI Friendly Formats
Every published specification is available for download in two AI-optimized formats. Use downloads when you want to load an entire spec into a local model's context window, build a vector search index, or run an offline RAG pipeline — no API calls required. Use the Download button on each spec's landing page to get the file.
Plain prose — no markdown syntax, cross-references reduced to their display text,
only external https: URLs preserved.
Optimized for small context windows and embedding models that perform better on clean prose than on markup.
Best for: loading a spec directly into an AI chat, fine-tuning datasets, token-constrained pipelines.
One JSON object per line, one chunk per section (split at paragraph boundaries when a section exceeds 4 000 characters).
Text is plain prose — same as the Markdown format — keeping chunks within typical embedding model context limits.
Compatible with LangChain JSONLoader, LlamaIndex SimpleDirectoryReader,
Haystack TextFileToDocument, and Ollama pipelines.
Best for: loading into a vector database, building a local RAG pipeline, offline semantic search.
Line schema (each line is one JSON object):
{
"id": "OPC-10000-4/v105/5.12", // unique chunk identifier
"spec": "OPC-10000-4",
"spec_title": "OPC UA Part 4 – Services",
"version": "105",
"number": "5.12", // section number (omitted for unnumbered sections)
"title": "MonitoredItem Service Set",
"breadcrumb": ["5 Services"], // ancestor section titles, outermost first
"path": "/specs/OPC-10000-4/v105/docs-5-12", // URL path to the section
"text": "5.12 MonitoredItem Service Set\n\nThe MonitoredItem Service Set…",
"part": 1, // present only when a section is split
"part_count": 3 // present only when a section is split
}
MCP Endpoint
The server is available at:
https://reference.opcfoundation.org/mcp
It uses the HTTP/SSE transport defined by the MCP specification.
Add it to any MCP-compatible client using the url field shown in the examples below.
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"opc-ua-reference": {
"type": "http",
"url": "https://reference.opcfoundation.org/mcp"
}
}
}
Claude Code / VS Code (.claude/settings.json or mcp.json)
{
"mcpServers": {
"opc-ua-reference": {
"type": "http",
"url": "https://reference.opcfoundation.org/mcp"
}
}
}
Available Tools
The MCP server exposes four tools. All results include a direct URL to the matching section in the online reference.
search_terms
Search for formally defined or italicized terms across OPC UA specifications.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | yes | Term to search for (e.g. address space, subscription) |
specId | string | no | Restrict to one document (e.g. OPC-10000-4) |
specPrefix | string | no | Restrict to a series (e.g. OPC-10000-) |
Returns: SearchFragment[]
// search_terms("address space")
[
{
"DocNumber": "OPC-10000-1",
"SectionNumber": "3.2",
"Title": "address space",
"Url": "https://reference.opcfoundation.org/specs/OPC-10000-1/terms#address-space",
"Snippet": "The set of <em>Nodes</em> that an OPC UA Server makes visible to Clients."
}
]
search_nodes
Look up OPC UA node definitions by NodeId or BrowseName.
Accepts fully-qualified NodeIds (nsu=http://...;i=1234),
bare numeric/string ids (i=16794, s=Name),
or plain BrowseName substrings.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | yes | NodeId or BrowseName to search for |
specId | string | no | Restrict to one document |
specPrefix | string | no | Restrict to a series |
Returns: NodeFragment[]
// search_nodes("MotionDeviceSystemType")
[
{
"DocNumber": "OPC-10000-100",
"SectionNumber": "6.2",
"Title": "MotionDeviceSystemType",
"Url": "https://reference.opcfoundation.org/specs/OPC-10000-100/v100/docs/6.2",
"NodeId": "nsu=http://opcfoundation.org/UA/Robotics/;i=1002",
"BrowseName": "MotionDeviceSystemType"
}
]
search_cu
Search for OPC UA Conformance Units by name or substring. Useful for compliance and certification work.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | yes | Conformance Unit name or substring (e.g. Base Info, SecurityPolicy) |
specId | string | no | Restrict to one document |
specPrefix | string | no | Restrict to a series |
Returns: CuFragment[]
// search_cu("Base Info")
[
{
"DocNumber": "OPC-10000-7",
"SectionNumber": "6.1",
"Title": "Profile: Micro Embedded Device Server",
"Url": "https://reference.opcfoundation.org/specs/OPC-10000-7/v107/docs/6.1",
"NamespaceUri": "http://opcfoundation.org/UA-Profile/Server",
"ConformanceUnit": "Base Info Core Structure"
}
]
search_text
Full-text search within a single specification. Requires a document number.
Use search_terms for cross-specification term lookup.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | yes | Text or phrase to find |
docNumber | string | yes | Specification to search (e.g. OPC-10000-4) |
Returns: SearchFragment[]
// search_text("monitored item", "OPC-10000-4")
[
{
"DocNumber": "OPC-10000-4",
"SectionNumber": "5.12",
"Title": "MonitoredItem Service Set",
"Url": "https://reference.opcfoundation.org/specs/OPC-10000-4/v105/docs/5.12",
"Snippet": "A <em>MonitoredItem</em> is an entity created by the Server to monitor a Node attribute or Event…"
}
]
Browsing Specs Directly
Every section in the online reference has a stable, citable URL. AI assistants can send users directly to a section, and the page's structured metadata (canonical URL, description, JSON-LD) makes content reliably extractable.
- Spec landing page:
/specs/{specId} - Section:
/specs/{specId}/{sectionSlug} - Full spec (single page):
/specs/{specId}/full