Initial commit: Server configurations and license management
This commit is contained in:
248
docs/SIEMENS-DOCS-SERVER.md
Normal file
248
docs/SIEMENS-DOCS-SERVER.md
Normal file
@@ -0,0 +1,248 @@
|
||||
# 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
|
||||
|
||||
1. **Siemens Documentation Proxy** (port 5000) - Official Siemens proxy for documentation access
|
||||
2. **Puppeteer Authentication** - Headless browser that handles Siemens SSO login
|
||||
3. **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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
1. Navigate to `https://customer.sw.siemens.com`
|
||||
2. Accept cookie consent
|
||||
3. Click "Log In" → redirects to `login.siemens.com`
|
||||
4. Enter email/username and password
|
||||
5. Save session cookies for reuse
|
||||
|
||||
### Credentials Storage
|
||||
|
||||
Credentials are stored securely on Dalidou:
|
||||
```bash
|
||||
/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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```python
|
||||
# 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.html` through `functions_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 |
|
||||
Reference in New Issue
Block a user