6.6 KiB
Siemens Documentation Server on Dalidou
Updated: 2025-12-05 Server: dalidou (ThinkPad W520) Status: OPERATIONAL
Overview
This setup provides authenticated access to Siemens Support Center documentation (NX Open, Simcenter, Teamcenter) through an MCP server that can be used by Claude in Atomizer.
Components
- Siemens Documentation Proxy (port 5000) - Official Siemens proxy for documentation access
- Puppeteer Authentication - Headless browser that handles Siemens SSO login
- MCP Server Tools - Exposed via the dalidou-assistant MCP server
Quick Start
For Claude/Atomizer
The Siemens docs tools are automatically available through the MCP server. Use these tools:
| Tool | Description |
|---|---|
siemens_docs_search |
Search NX Open, Simcenter docs for a topic |
siemens_docs_fetch |
Fetch a specific documentation page by URL |
siemens_auth_status |
Check if authentication session is active |
siemens_login |
Re-login if session expired |
siemens_docs_list |
List available documentation categories |
Example Usage
# Search for NX Open Session class
siemens_docs_search(query="NXOpen Session", product="nx")
# Fetch a specific page
siemens_docs_fetch(url="https://support.sw.siemens.com/en-US/knowledge-base/...")
# Check auth status
siemens_auth_status()
Server Configuration
Documentation Proxy Service
# Service status
ssh root@dalidou "systemctl status siemensdocumentationproxyserver"
# Restart if needed
ssh root@dalidou "systemctl restart siemensdocumentationproxyserver"
# View logs
ssh root@dalidou "cat /srv/siemens-docs/proxy/logs/*.log | tail -50"
Location: /srv/siemens-docs/proxy/
Port: 5000 (HTTP, bound to 0.0.0.0)
API Key: siemens-docs-2024
MCP Server
# Files location
/srv/claude-assistant/
├── mcp-server/
│ └── server.js # Main MCP server (v1.2.0)
├── tools/
│ ├── siemens-auth.js # Puppeteer authentication
│ ├── siemens-docs.js # Documentation fetching
│ ├── weather.js # Weather tools
│ └── gitea.js # Gitea tools
└── vault/
├── siemens-creds.json # Siemens login credentials (secured)
└── siemens-cookies.json # Session cookies
Authentication
The system uses Puppeteer (headless Chrome) to:
- Navigate to
https://customer.sw.siemens.com - Accept cookie consent
- Click "Log In" → redirects to
login.siemens.com - Enter email/username and password
- Save session cookies for reuse
Credentials Storage
Credentials are stored securely on Dalidou:
/srv/claude-assistant/vault/siemens-creds.json # chmod 600
Session Management
- Cookies are saved after successful login
- Session typically lasts several hours
- The tools auto-detect expired sessions and re-login
Troubleshooting
"Session expired" or auth errors
# Force re-login
ssh root@dalidou "cd /srv/claude-assistant && node -e \"import docs from './tools/siemens-docs.js'; await docs.performLogin(); await docs.closeBrowser();\""
"Page not found" errors
The Siemens documentation structure changes. Some URLs may be outdated. Use the search function to find current documentation.
Browser issues
# Kill any stuck Chrome processes
ssh root@dalidou "pkill -f chrome"
# Clear cookies and re-login
ssh root@dalidou "rm /srv/claude-assistant/vault/siemens-cookies.json"
Check all services
# Documentation Proxy
ssh root@dalidou "systemctl status siemensdocumentationproxyserver"
# Test proxy connectivity
ssh root@dalidou "curl -s http://localhost:5000/ | head -5"
# Test authentication
ssh root@dalidou "cd /srv/claude-assistant && node -e \"import docs from './tools/siemens-docs.js'; const r = await docs.checkAuthStatus(); console.log(r); await docs.closeBrowser();\""
Updating Credentials
If your Siemens password changes:
ssh root@dalidou "cat > /srv/claude-assistant/vault/siemens-creds.json << EOF
{
\"username\": \"your.email@example.com\",
\"password\": \"your-new-password\"
}
EOF
chmod 600 /srv/claude-assistant/vault/siemens-creds.json"
Technical Details
Why Puppeteer Instead of Direct API?
Siemens Support Center uses:
- Single Sign-On (SSO) via
login.siemens.com - JavaScript-heavy SPA architecture
- Cookie-based session management
- No public API for documentation access
Puppeteer provides:
- Full browser rendering for SPA content
- Automatic SSO flow handling
- Cookie persistence for session reuse
Documentation Proxy Purpose
The Siemens Documentation Proxy (DocumentationProxy.3.3.1.aol) is designed for:
- Serving documentation in air-gapped/offline environments
- Caching documentation locally
- Providing documentation access without individual logins
However, it still requires valid Siemens credentials for initial setup.
NX Open Python Reference - Validated Access
Status: FULLY OPERATIONAL (Tested 2025-12-05)
Base URL
https://docs.sw.siemens.com/documentation/external/PL20200522120320484/en-US/nx_open_python_ref/nx/1980/nx_open_python_ref/en-US/nxopen_python_ref/
Verified Working Pages
| Page | URL | Status |
|---|---|---|
| Main Index | index.html |
✅ |
| Class Index | classes.html |
✅ |
| Class List | annotated.html |
✅ |
| Class Hierarchy | hierarchy.html |
✅ |
| Functions Index | functions.html |
✅ |
| NXOpen.Session | a03318.html |
✅ |
| NXOpen.Part | a02434.html |
✅ |
| NXOpen.BasePart | a00266.html |
✅ |
| NXOpen.PDM.PdmSession | a50542.html |
✅ |
| NXOpen.CAE.CaeSession | a10510.html |
✅ |
Key Classes Quick Reference
# Main entry points
NXOpen.Session # a03318.html - Main NX session object
NXOpen.Part # a02434.html - Part file object
NXOpen.BasePart # a00266.html - Base part class
# CAE/CAM
NXOpen.CAE.CaeSession # a10510.html - CAE session
NXOpen.CAM.CAMSession # Via Session.CAMSession()
# PDM/Teamcenter
NXOpen.PDM.PdmSession # a50542.html - PDM session
URL Pattern Notes
- Class pages use format:
aXXXXX.html(5-digit ID) - Function pages:
functions.html,functions_a.htmlthroughfunctions_z.html - Namespace pages may return "Access Denied" when accessed directly
- Navigate through Class List (
annotated.html) for best results
Version History
| Date | Version | Changes |
|---|---|---|
| 2025-12-05 | 1.2.1 | Validated full NX Open Python Reference access |
| 2025-12-05 | 1.2.0 | Added Puppeteer-based authentication |
| 2025-12-05 | 1.1.0 | Installed Documentation Proxy, initial setup |