Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)
Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
DIESER MCP SERVER DIENT NUR FÜR "EDUCATIONAL PURPOSES"! EINE AKTIVE VERWENDUNG IST NICHT GESTATTET AUFGRUND DATENSCHUTZRECHTLICHER BEDENKEN!
BEAM MCP Server
MCP Server für die Deutsche Bahn Enterprise Architektur Plattform BEAM (http://db.de/beam). Ermöglicht den direkten Zugriff auf BEAM-Daten über die LeanIX GraphQL API — ohne Browser-Navigation.
Ansprechpartner
| Kontakt | |
|---|---|
| Team DT-BETA | DBS.BS.INFRA.DS4E.DT-BETA@deutschebahn.com |
Lizenz
DB Inner Source License (DBISL) - DB Systel GmbH
Voraussetzungen
- Node.js >= 18
- Microsoft Edge (für automatischen Browser-Login)
- Zugang zu BEAM (DB-Netz oder VPN)
Installation
cd beam-mcp
npm install
npm run build
Konfiguration
Optional: Kopiere .env.example nach .env um die Standard-URLs anzupassen:
cp .env.example .env
Umgebungsvariablen
| Variable | Beschreibung | Standard |
|---|---|---|
BEAM_BASE_URL |
Basis-URL der BEAM-Instanz | https://db.leanix.net |
BEAM_LOGIN_URL |
Login-URL für automatischen Browser-Login | http://db.de/beam |
BEAM_WORKSPACE |
Workspace-Name | beam |
BEAM_HEADLESS |
Browser-Login im Headless-Modus (true/false). Bei Anmeldeproblemen auf false setzen, um den Browser sichtbar zu starten. |
true |
Authentifizierung
Das BEAM-Token wird sicher im OS-Keychain gespeichert:
- macOS: Keychain Access (via
securityCLI) - Windows: DPAPI-verschlüsselte Datei in
%LOCALAPPDATA%/beam-mcp/
Automatischer Browser-Login (empfohlen)
Beim ersten Aufruf eines Tools ohne gültiges Token startet der Server automatisch einen Microsoft Edge Browser, navigiert zu BEAM und meldet sich über "BEAM: DB User" an. Das Token wird anschließend im OS-Keychain gespeichert und für alle weiteren Anfragen (auch nach Server-Neustart) wiederverwendet.
Falls der automatische Login fehlschlägt, kann der Browser mit BEAM_HEADLESS=false sichtbar gestartet werden, um das Problem zu diagnostizieren.
Der Login kann auch manuell ausgelöst werden:
npm run login
Oder über das Tool beam_get_token im MCP-Client.
Token-Lebensdauer
BEAM-Tokens sind zeitlich begrenzt gültig. Der Server prüft die Gültigkeit automatisch und löst bei Bedarf einen neuen Login aus. Bei einem 401-Fehler wird das gespeicherte Token aus dem Keychain gelöscht und ein neuer Login getriggert.
Integration
Kiro
In .kiro/settings/mcp.json:
{
"mcpServers": {
"beam-mcp": {
"command": "node",
"args": ["/pfad/zu/beam-mcp/dist/index.js"],
"env": {
"BEAM_BASE_URL": "https://db.leanix.net",
"BEAM_WORKSPACE": "beam",
"BEAM_HEADLESS": "true"
}
}
}
}
OpenCode
In .opencode/opencode.json:
{
"mcp": {
"beam-mcp": {
"enabled": true,
"type": "local",
"command": ["node", "/pfad/zu/beam-mcp/dist/index.js"],
"environment": {
"BEAM_BASE_URL": "https://db.leanix.net",
"BEAM_WORKSPACE": "beam",
"BEAM_HEADLESS": "true"
}
}
}
}
Verfügbare Tools
Alle Tools verwenden das Prefix beam_ um Namenskonflikte mit anderen MCP-Servern zu vermeiden.
beam_get_token
Meldet sich bei BEAM an und speichert das Token im OS-Keychain. Nur nötig, wenn kein gültiges Token vorhanden ist oder das Token abgelaufen ist.
Parameter: keine
Annotations: readOnlyHint: false | idempotentHint: true
Beispiel:
beam_get_token()
Ausgabe:
✓ BEAM Login erfolgreich!
Benutzer: florian.hofmann@deutschebahn.com
Token gültig bis: 20.04.2026, 11:30:00
Token im Keychain gespeichert.
beam_search_factsheets
Sucht nach BEAM Fact Sheets anhand von Name, Beam-ID oder Freitext.
Parameter:
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
query |
String | ✓ | Suchbegriff, Beam-ID (z.B. A-106614) oder Name |
type |
Enum | — | Einschränkung auf Fact-Sheet-Typ (siehe unten) |
Mögliche Typen:
Application— AnwendungBusinessCapability— DomäneITComponent— IT-KomponenteInterface— IntegrationDataObject— Datenobjekt
Annotations: readOnlyHint: true | idempotentHint: true
Beispiele:
beam_search_factsheets(query: "A-106614")
beam_search_factsheets(query: "RiM", type: "Application")
beam_search_factsheets(query: "Personaleinsatz", type: "BusinessCapability")
beam_get_factsheet
Ruft vollständige Details eines BEAM Fact Sheets ab.
Parameter:
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
id |
String | ✓ | Beam-ID (z.B. A-106614) oder UUID |
Unterstützte Fact-Sheet-Typen:
- Anwendungen (
Application) - Domänen (
BusinessCapability) - IT-Komponenten (
ITComponent)
Annotations: readOnlyHint: true | idempotentHint: true
Beispiele:
beam_get_factsheet(id: "A-106614")
beam_get_factsheet(id: "33cb34f7-d6fe-481e-a650-8ca42884c4eb")
beam_get_factsheet(id: "P.F.05.05.04")
Ausgabe (Anwendung):
## A-106614 - Fahrendes Personal RiM
Typ: Anwendung
Status: Bestätigt
Alias: RiM; Rail in Motion; Rim; rim
Lebenszyklus: Ausgliederungsphase
Beschreibung:
Mit "Fahrendes Personal RiM" wird Fahrpersonalen und Triebfahrzeugführern...
Tags: Bordservice, Mobile Solutions Bordpersonale
### Domänen
• P.F.05.05.04 - Informationen bereitstellen | Supporttyp: Führend
### IT-Komponenten
• Enterprise Cloud Managed
### Nachfolger
• MERKUR (ID: 8c92a72a-...)
beam_get_domain_applications
Listet alle Anwendungen einer BEAM-Domäne auf, gruppiert nach Supporttyp.
Parameter:
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
domain |
String | ✓ | Domänen-ID (z.B. P.F.05.05.04), Name oder UUID |
Annotations: readOnlyHint: true | idempotentHint: true
Beispiele:
beam_get_domain_applications(domain: "P.F.05.05.04")
beam_get_domain_applications(domain: "Informationen bereitstellen")
beam_get_diagram
Ruft Diagramme einer BEAM-Anwendung ab. Listet verfügbare Diagramme auf, zeigt eine lesbare Zusammenfassung (Systeme, Schnittstellen) und kann das Diagramm als .drawio-Datei speichern.
Parameter:
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
application |
String | ✓ | Anwendungsname, Beam-ID (z.B. A-109410) oder UUID |
diagram_name |
String | — | Name oder Teil des Diagrammnamens zum Abrufen |
save_path |
String | — | Dateipfad zum Speichern als .drawio-Datei |
Annotations: readOnlyHint: false (kann Dateien schreiben) | idempotentHint: true
Beispiele:
Diagramme auflisten:
beam_get_diagram(application: "KEP_KEO_Revision")
Diagramm lesen:
beam_get_diagram(application: "KEP_KEO_Revision", diagram_name: "System Context")
Diagramm als draw.io speichern:
beam_get_diagram(application: "KEP_KEO_Revision", diagram_name: "System Context", save_path: "./kep-system-context.drawio")
Ausgabe (Lesen):
## A-109410 - KEP_KEO_Revision - System Context
Typ: freedraw
Beschreibung: Systemkontextdiagramm zu "Anwendung zur Integration..."
### Systeme/Akteure (10)
• A-109410 - KEP_KEO_Revision [Software System] — Kraftwerkseinsatzoptimierung
• A-107939 - ETRM_Marktdatendatenbank [Software System] — Energiemarktrelevante Daten
...
### Schnittstellen/Verbindungen (12)
• Auswahl gewählter Produktionsvolumen für D und D+1
• Marktpreise
...
Ausgabe (Speichern):
✓ Diagramm gespeichert: /pfad/zu/kep-system-context.drawio
Die Datei kann direkt in draw.io geöffnet werden.
Hinweise:
- Die
.drawio-Datei enthält das originale mxGraph-XML aus BEAM und kann direkt in draw.io (Desktop oder Web) geöffnet werden. - Die lesbare Zusammenfassung extrahiert automatisch C4-Modell-Elemente (Systeme, Personen) und Schnittstellen.
Fehlerbehandlung
Alle Tools geben bei Fehlern strukturierte Fehlermeldungen mit isError: true zurück:
| Fehler | Meldung | Lösung |
|---|---|---|
| 401/403 | Authentifizierung fehlgeschlagen | beam_get_token aufrufen |
| 404 | Nicht gefunden | ID oder Suchbegriff prüfen |
| 429 | Rate-Limit erreicht | Kurz warten, erneut versuchen |
Große Antworten werden automatisch auf 25.000 Zeichen gekürzt mit einem Hinweis auf spezifischere Filter.
Architektur
beam-mcp/
├── src/
│ ├── index.ts # MCP Server, Tool-Registrierung (registerTool), Error-Handling
│ ├── api.ts # BEAM GraphQL API Client, Diagramm-Export
│ ├── auth.ts # Authentifizierung (Keychain + Playwright Login)
│ └── keychain.ts # OS-Keychain Abstraktionsschicht (macOS/Windows)
├── dist/ # Kompilierter JavaScript-Code (nach npm run build)
├── .env.example # Vorlage für optionale Konfiguration
├── package.json
└── tsconfig.json
Datenfluss
Kiro / OpenCode / KI-Assistent
│
▼
beam-mcp-server (MCP über stdio)
│
├─► auth.ts ──► keychain.ts ──► OS-Keychain (Token lesen/schreiben)
│ └─► Playwright Edge Login (falls kein gültiges Token)
│
└─► api.ts ──► BEAM GraphQL API (https://db.leanix.net/services/pathfinder/v1/graphql)
└─► BEAM Bookmarks API (Diagramme)
Hinweise
- Das Token läuft nach einigen Stunden ab. Der Server erkennt dies automatisch und löst einen neuen Login aus.
- Der Browser-Login benötigt Zugang zu
http://db.de/beam(DB-Netz oder VPN). - Alle internen Variablen- und Feldnamen folgen der LeanIX API-Konvention; die Anzeige ist auf BEAM-Terminologie gemappt.
- Der Server ist read-only — es werden keine Daten in BEAM verändert (außer
.drawio-Dateien lokal speichern). - Alle Tools nutzen
registerToolmit Annotations (readOnlyHint,destructiveHint,idempotentHint,openWorldHint). - Tool-Namen verwenden das
beam_-Prefix zur Vermeidung von Namenskonflikten. - Keine Secrets in Dateien — Token wird ausschließlich im OS-Keychain gespeichert.