Siemens Docs MCP
Search and read live Siemens documentation (TIA Portal, STEP 7, WinCC Unified, Openness, Industrial Operations X) through four MCP tools.
search_docs — full-text search across publications, with filters for
product,version,locale, andhost; returns up to 50 numbered hits (title, publication/version, breadcrumb, excerpt, reader URL) plus total count.read_page — fetch any page as Markdown with a header (publication, version, breadcrumb, source URL), paginating long pages via
offsetandmax_chars.get_toc — show a publication or topic subtree's table of contents (1–6 levels via
depth) as an indented outline with reader URLs.list_publications — list up to 50 publications (title, product, version, locale, reader URL) and discover valid
product/versionfilter values, optionally filtered bytitle_contains.Hosts/locales — works against
docs.tia.siemens.cloud(default) anddocs.industrial-operations-x.siemens.cloud, in the locale you choose; all returned reader URLs are valid inputs forread_pageandget_toc.
Provides tools for searching and reading live Siemens documentation from docs.tia.siemens.cloud and docs.industrial-operations-x.siemens.cloud, including full-text search with product/version/locale/host filters, reading pages as Markdown, retrieving tables of contents, listing publications, and exporting entire publications to Markdown files.
Click on "Deploy 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., "@Siemens Docs MCP search TIA Portal docs for how to configure an OPC UA server"
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.
Siemens Docs MCP
An MCP server that lets an AI assistant search and read Siemens documentation live — any publication on docs.tia.siemens.cloud (TIA Portal, STEP 7, WinCC Unified, Openness, …) and docs.industrial-operations-x.siemens.cloud (Industrial Operations X) — plus a CLI that exports a whole publication to a tree of Markdown files.
Built to solve the problem of documentation portals that only offer low-quality PDF exports or JavaScript-rendered web views, making the content difficult to search, reference, or feed to AI tools.
Installation
PyPI
pip install siemens-docs-mcpThis installs two commands: siemens-docs-mcp (the MCP server) and siemens-docs-export (the Markdown exporter). Requires Python 3.11+.
From source
git clone https://github.com/Czarnak/siemens-docs-mcp
cd siemens-docs-mcp
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
# development (pytest, ruff, pip-audit; needs pip >= 25.1):
pip install -e . --group devRelated MCP server: Jamf Docs MCP Server
MCP server
The server speaks MCP over stdio. Register it with Claude Code:
# from PyPI, no manual install (needs uv)
claude mcp add siemens-docs -- uvx siemens-docs-mcp
# or an installed copy
claude mcp add siemens-docs -- siemens-docs-mcp
# from a source checkout: <repo>/.venv/Scripts/siemens-docs-mcp (Linux/macOS: <repo>/.venv/bin/siemens-docs-mcp)Pass settings with -e, e.g. claude mcp add siemens-docs -e SIEMENS_DOCS_LOCALE=de-DE -- uvx siemens-docs-mcp.
Tools:
Tool | Purpose |
| Full-text search (filter by |
| Read one page as Markdown: outline, sections by heading or number, code only; page through with |
| Table of contents of a publication or of the subtree under a topic reference. |
| List publications; discover valid |
All four tools emit compact references by default. Publication references use
<prefix>:<mapId>; topic references use <prefix>:<mapId>/<contentId>, for example
tia:MyPublication/MyTopic. Stable prefixes tia and iox identify
docs.tia.siemens.cloud and docs.industrial-operations-x.siemens.cloud.
Additional allowed hosts use their full hostname as the prefix; full hostnames
also work for the built-in hosts. Prefixes are case-insensitive; IDs retain case.
Pass a compact reference or any reader URL returned by a tool (or copied from the
browser) in the unchanged url argument: read_page(url="tia:MyPublication/MyTopic")
or get_toc(url="tia:MyPublication"). Set reference_format="url" on any tool to
emit full reader URLs. In read_page bodies, links to other topics on the same host
(https://<host>/r/<mapId>/<contentId>) become compact references too (or stay full
URLs with reference_format="url"); other links are unchanged, and images keep only
their alt text. Exported Markdown is not affected. The CLI continues to use reader URLs in its configuration;
compact references are an MCP tool interface.
To search inside a publication or chapter you already found, pass its reference as
scope: search_docs(query="GetAttribute", scope="tia:MyPublication") or
scope="tia:MyPublication/MyChapter". Host and locale then come from the scope, and
product/version must be omitted. Publication scope is filtered by the server, so
its count is exact. Topic scope keeps only hits inside the topic's subtree; it reads at
most 300 publication results, and says so when its count may be incomplete.
To read only part of a long page, ask for its outline first:
read_page(url="tia:MyPublication/MyTopic", mode="outline") lists numbered headings
with their sizes. Then pass a number or heading text as section:
section="Program code" returns every "Program code" and "Program code: …" section.
mode="code" returns only the code blocks, each under its heading, and combines with
section. Long results are cut between blocks; a code block or table too large for one
part is split at a line, with its fence or header repeated. Each part ends with the exact
arguments for the next one.
Environment variables:
Variable | Default | Meaning |
| (none) | Comma-separated extra hosts, appended to the built-in two ( |
|
| Default locale for search and listings. |
|
| Minimum seconds between requests to a host. |
The publication catalog and TOCs are cached in memory (not on disk), so the first call per host takes a few seconds.
Markdown export (CLI)
Export a whole publication to Markdown — one file per page, folders mirroring the navigation hierarchy. Create a config with any reader URL of the publication (a topic URL exports the whole publication):
# my_docs.yaml
name: tia_openness_v21
url: "https://docs.tia.siemens.cloud/r/en-us/v21/tia-portal-openness-api-for-automation-of-engineering-workflows"
output_dir: "output/tia_openness_v21"# Preview pages without writing files
siemens-docs-export my_docs.yaml --dry-run
# Export everything
siemens-docs-export my_docs.yaml
# Export a single page (for testing output quality)
siemens-docs-export my_docs.yaml --page cybersecurity-information
# Override the output directory / verbose logging
siemens-docs-export my_docs.yaml --output /tmp/docs --verboseA ready-made config lives in configs/ in the repository.
Output structure
output/tia_openness_v21/
├── index.md ← root page
├── cybersecurity-information.md
├── what-s-new-in-tia-portal-openness.md
├── basics/
│ ├── basics.md
│ └── ...
├── tia-portal-openness-api/
│ ├── tia-portal-openness-object/
│ │ └── ...
│ └── ...
└── ...Configuration reference
Key | Required | Description |
| No | Human-readable label shown in log output. |
| Yes* | Any reader URL of the publication (resolved to its map automatically). |
| Yes* | Legacy: root URL of the Fluidtopics instance (use with |
| Yes* | Legacy: Fluidtopics map identifier (use with |
| Yes | Directory where Markdown files will be written. |
* Either url, or api_base + map_id. If both are present, url wins.
How it works
Fluidtopics (the platform behind both portals) exposes a REST API that the browser SPA uses internally. This package calls that API directly — no browser automation:
Catalog —
GET /api/khub/mapslists every publication; reader URLs are resolved against it.Search —
POST /api/khub/clustered-searchwith product/version/locale filters.TOC —
GET /api/khub/maps/{mapId}/pagesreturns the navigation tree.Content —
GET /api/khub/maps/{mapId}/topics/{contentId}/contentreturns raw HTML, converted to Markdown with markdownify.
Requests are throttled per host and retried once on 401/403/429/5xx.
Note: Only Fluidtopics-based portals are supported. Other platforms (MadCap Flare, Paligo, etc.) would need a different adapter.
Development
python -m pytest -q # offline tests
python -m pytest -m live -q # live smoke tests against the real hosts
ruff check .Created with Claude AI
Available Tools
4 toolsget_tocA
Show the table of contents (1-6 levels via depth) of the publication, or of the subtree under the
topic, in url: an indented outline, one line per node with title and reference.
Pass reader URLs or compact references in the unchanged url parameter. Compact forms: : or :/; stable prefixes tia=docs.tia.siemens.cloud and iox=docs.industrial-operations-x.siemens.cloud. Any allowed host may also use its full hostname as prefix. Tool-generated addresses default to compact references; set reference_format='url' for reader URLs. Allowed hosts: docs.tia.siemens.cloud, docs.industrial-operations-x.siemens.cloud (default: docs.tia.siemens.cloud).
Inputs: url (required), depth, reference_format. Returns: result
list_publicationsA
List documentation publications (up to 50 rows): title, product, version, locale and reference.
Use it to discover valid product and version values; references are valid input to read_page and
get_toc. Tool-generated addresses default to compact references; set reference_format='url' for reader URLs. Pass reader URLs or compact references in the unchanged url parameter. Compact forms: : or :/; stable prefixes tia=docs.tia.siemens.cloud and iox=docs.industrial-operations-x.siemens.cloud. Any allowed host may also use its full hostname as prefix. product (e.g. 'STEP 7', 'WinCC Unified', 'SIMATIC AX') and version (e.g. 'V21', '6.1') are matched against the catalog; call list_publications to see valid values. Allowed hosts: docs.tia.siemens.cloud, docs.industrial-operations-x.siemens.cloud (default: docs.tia.siemens.cloud).
Inputs: host, locale, product, version, +2 more. Returns: result
read_pageA
Read one documentation page as Markdown with a header (publication, version, breadcrumb, source
reference). mode='outline' lists numbered headings with sizes. section takes an outline number or heading
text (e.g. 'Program code', which also matches 'Program code: …') and returns only matching sections.
mode='code' returns only code blocks under their headings and combines with section. Long results end
with the exact arguments to continue (offset, plus section/mode/reference_format when set).
Links to other topics on the same host in a page body follow reference_format; images keep only their alt text.
Pass reader URLs or compact references in the unchanged url parameter. Compact forms: : or :/; stable prefixes tia=docs.tia.siemens.cloud and iox=docs.industrial-operations-x.siemens.cloud. Any allowed host may also use its full hostname as prefix. Tool-generated addresses default to compact references; set reference_format='url' for reader URLs. Allowed hosts: docs.tia.siemens.cloud, docs.industrial-operations-x.siemens.cloud (default: docs.tia.siemens.cloud).
Inputs: url (required), mode, offset, section, +2 more. Returns: result
search_docsA
Full-text search of Siemens documentation. Returns a numbered Markdown list (1-50 hits via limit):
title, publication + version, breadcrumb, excerpt and reference, with the total hit count.
Pass a result's reference to read_page or get_toc. Set scope to a publication or topic reference (same
forms as url) to search only that publication or topic subtree; host and locale then come from the scope
and product/version must be omitted; the header names the scope once and says when a subtree count is
partial. Tool-generated addresses default to compact references; set reference_format='url' for reader URLs. Pass reader URLs or compact references in the unchanged url parameter. Compact forms: : or :/; stable prefixes tia=docs.tia.siemens.cloud and iox=docs.industrial-operations-x.siemens.cloud. Any allowed host may also use its full hostname as prefix. product (e.g. 'STEP 7', 'WinCC Unified', 'SIMATIC AX') and version (e.g. 'V21', '6.1') are matched against the catalog; call list_publications to see valid values. Allowed hosts: docs.tia.siemens.cloud, docs.industrial-operations-x.siemens.cloud (default: docs.tia.siemens.cloud).
Inputs: query (required), host, limit, scope, +4 more. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 4 tools
Each tool occupies a distinct layer of the documentation workflow: catalog discovery (list_publications), full-text search (search_docs), structural navigation (get_toc), and content retrieval (read_page). There is no overlap in purpose, and the descriptions explicitly state how outputs chain together (references from search feed read_page/get_toc).
All names follow a strict verb_noun snake_case pattern: search_docs, read_page, get_toc, list_publications. The verb choices (search/read/get/list) accurately signal the operation type, and there are no stylistic deviations.
Four tools is a tight, well-scoped surface for a read-only documentation server — one tool per stage of the discover-search-navigate-read pipeline, with nothing redundant. No CRUD bloat or lifecycle tools that would not apply to a read-only corpus.
The core loop of finding publications, searching within scopes, inspecting TOC structure, and reading/sectioning pages is fully covered. Minor gaps remain, such as no bulk export, no batch fetch of multiple references, and no dedicated way to enumerate products/versions except indirectly through list_publications output.
Maintenance
Related MCP Connectors
Tailor Platform for AI assistants: search, list and read the platform documentation.
Search 2800+ official TIA Portal chapters: blocks, instructions, data types, constants.
Versioned documentation registry and semantic search for AI tools and coding assistants.
Search and query nTop's knowledge base and engineering guides from AI applications.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with SIEMENS PLC S7-1500/1200 controllers through their JSON-RPC API, supporting authentication, tag browsing, variable read/write operations, alarm management, and diagnostic buffer access.13ISC
- AlicenseAqualityBmaintenanceProvides AI assistants with direct access to Jamf official documentation, enabling them to answer Jamf-related questions by searching, retrieving articles, and browsing product documentation.6361 npm5MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to search, read, and traverse documentation bundles in Open Knowledge Format via MCP tools.931 npm74MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI clients to inspect and modify Siemens PLC projects through the Openness API: browsing block trees, reading and generating ladder logic, creating data blocks and SCL source, importing/exporting, compiling, editing tag tables, and launching, opening, saving, or archiving projects. Changes stay in memory until an explicit save, and write tools refuse to overwrite existing blocks unless told to.MIT