Skip to main content
Glama
vchinnu

SAP RCA MCP Server

by vchinnu

SAP RCA MCP Server

Python-MCP-Server, der KI-Agenten die Durchführung von Root Cause Analysis auf SAP-Systemen ermöglicht, indem er Azure Log Analytics-Daten abfragt.

Architektur

AI Agent (Azure AI Foundry / Claude / Copilot Studio)
    │  MCP Tool Calls
    ▼
FastMCP Server (server.py)
    ├── get_schema        → schema_registry.py  (table/column metadata)
    ├── execute_query     → la_client.py         (validated KQL execution)
    ├── analyze_results   → domain_knowledge.py  (SAP error classification)
    └── run_full_rca      → rca_orchestrator.py  (8-step automated workflow)
    │
    ▼
Azure Log Analytics (read-only KQL queries via Managed Identity)

Related MCP server: exception-mcp-server

Die 4 Tools

Tool

Zweck

get_schema

Gibt exakte Spaltennamen, Typen, Zeitspalte, SID-Spalte und KQL-Hinweise für registrierte Tabellen zurück. Rufen Sie dies zuerst auf.

execute_query

Validiert eine agentengenerierte KQL-Abfrage (Read-only-Schutz) und führt sie dann aus.

analyze_results

Wendet SAP-Domänenwissen an, um Rohzeilen zu klassifizieren: Fehlerkategorien, Schweregrad, Empfehlungen.

run_full_rca

Führt automatisch alle 8 RCA-Schritte aus und gibt einen konsolidierten JSON-Bericht zurück.

Voraussetzungen

  • Python 3.11+

  • Azure CLI (az) installiert

  • Zugriff auf den Azure Log Analytics-Arbeitsbereich (Workspace-ID erforderlich)

  • Rolle Log Analytics Reader Ihrem Konto zugewiesen (oder Managed Identity)

Einrichtung

# 1. Clone / navigate to this folder
cd C:\Users\padmajat\Documents\AMS-Agentic-RCA\MCP

# 2. Create virtual environment
python -m venv .venv
.venv\Scripts\activate          # Windows
# source .venv/bin/activate     # Linux/macOS

# 3. Install dependencies
pip install -r requirements.txt

# 4. Configure
copy .env.example .env
# Edit .env and fill in AZURE_LOG_ANALYTICS_WORKSPACE_ID and AZURE_TENANT_ID

# 5. Authenticate (local development)
az login

Konfiguration (.env)

AZURE_LOG_ANALYTICS_WORKSPACE_ID=<your-workspace-guid>
AZURE_TENANT_ID=<your-tenant-id>

Bei Azure mit Managed Identity wird nur die Workspace-ID benötigt – lassen Sie alle AZURE_CLIENT_*-Felder leer.

Ausführung

stdio-Modus (Claude Desktop, MCP Inspector, Azure AI Foundry lokal)

python server.py
# or:
mcp dev server.py

SSE/HTTP-Modus (Azure App Service-Bereitstellung)

pip install uvicorn
uvicorn server:mcp --host 0.0.0.0 --port 8000

Der SSE-Endpunkt lautet: http://localhost:8000/sse

Verbindung zu Claude Desktop

Fügen Sie zu claude_desktop_config.json hinzu:

{
  "mcpServers": {
    "sap-rca": {
      "command": "python",
      "args": ["C:/Users/padmajat/Documents/AMS-Agentic-RCA/MCP/server.py"],
      "env": {
        "AZURE_LOG_ANALYTICS_WORKSPACE_ID": "<your-workspace-id>",
        "AZURE_TENANT_ID": "<your-tenant-id>"
      }
    }
  }
}

Verbindung zu Azure AI Foundry

Fügen Sie in Azure AI Foundry eine MCP-Verbindung hinzu, die auf https://<your-app-service>.azurewebsites.net/sse zeigt.

Beispiel für eine Agenten-Konversation

Fokussierter Abfrage-Workflow:

Agent → get_schema(["SapNetweaver_ShortDumps_CL"])
Agent → execute_query("SapNetweaver_ShortDumps_CL | where serverTimestamp_t > ago(4h) | where SID_s == 'CHA' | take 100")
Agent → analyze_results(results, "short_dumps", context="SID=CHA, last 4h")

Vollständig automatisierte RCA:

Agent → run_full_rca(sid="CHA", time_range_hours=4, issue_description="Multiple batch job failures")
← Returns complete 8-step RCA report

Registrierte Tabellen

Derzeit registriert (1 von 7):

Tabelle

SAP-Quelle

Status

SapNetweaver_ShortDumps_CL

ST22 ABAP Short Dumps

✅ Registriert

SapNetweaver_SysLogs_CL

SM21 Systemprotokoll

⏳ Wartet auf Schema-CSV

SapNetweaver_BatchJobs_CL

SM37 Batch-Jobs

⏳ Wartet auf Schema-CSV

SapNetweaver_GetSystemInstanceList_CL

Instanzverfügbarkeit

⏳ Wartet auf Schema-CSV

SapNetweaver_GetProcessList_CL

Prozessverfügbarkeit

⏳ Wartet auf Schema-CSV

Prometheus_OSExporter_CL

OS-Metriken

⏳ Wartet auf Schema-CSV

Prometheus_HaClusterExporter_CL

HA-Cluster

⏳ Wartet auf Schema-CSV

Hinzufügen eines neuen Tabellenschemas

  1. Stellen Sie die Schema-CSV (Spalten + Beschreibung) bereit – gleiches Format wie SchemaforMCP-Details.csv.

  2. Fügen Sie einen neuen Eintrag in schema_registry.py hinzu, wobei Sie den vorhandenen Eintrag SapNetweaver_ShortDumps_CL als Vorlage verwenden.

  3. Wenn die Tabelle domänenspezifische Analyselogik benötigt, fügen Sie eine _analyze_<type>()-Funktion zu tools/analyze_results.py hinzu.

  4. Fügen Sie eine KQL-Vorlage zu _KQL_TEMPLATES in tools/rca_orchestrator.py hinzu.

  5. Starten Sie den Server neu – keine weiteren Änderungen erforderlich.

Sicherheitshinweise

  • execute_query blockiert alle KQL-Verwaltungsbefehle (.ingest, .drop, .set usw.)

  • run_full_rca verwendet parametrisierte KQL-Vorlagen – SID-Werte werden vor der Substitution validiert

  • Alle Anmeldeinformationen werden aus Umgebungsvariablen geladen – keine Geheimnisse im Code

  • Verwenden Sie auf Azure Managed Identity; speichern Sie AZURE_CLIENT_SECRET nicht in der App Service-Konfiguration


⚠ Offene Fragen (Aktion erforderlich)

Bevor der Server eine Verbindung zu Ihrem Arbeitsbereich herstellen kann, müssen Sie Folgendes bereitstellen:

#

Was

Wo zu finden

Zu aktualisierende Datei

1

Log Analytics Workspace ID

Azure-Portal → Log Analytics-Arbeitsbereich → Übersicht → Workspace-ID

.env

2

Azure Tenant ID

Azure-Portal → Microsoft Entra ID → Übersicht → Tenant ID

.env

3

Zeitspalte für SapNetweaver_ShortDumps_CL

Die von Ihnen bereitgestellte CSV zeigt serverTimestamp_t. Die Agent-Dokumentation zeigt timestamp_t. Bitte bestätigen Sie, welcher Spaltenname in Ihrem Arbeitsbereich korrekt ist (prüfen Sie Log Analytics → Tabellen → ShortDumps).

schema_registry.py Zeile mit "time_column"

4

Vorhandensein der Spalte SID_s

Ist SID_s in Ihrer ShortDumps-Tabelle vorhanden? (Einige Arbeitsbereiche verwenden stattdessen sapsid_s.)

schema_registry.py Feld "sid_column"

5

Verbleibende 6 Tabellenschemata

Stellen Sie Schema-CSVs (gleiches Format wie SchemaforMCP-Details.csv) für die verbleibenden Tabellen bereit, um die vollständige 8-Schritte-RCA zu ermöglichen

schema_registry.py Einträge

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to query and analyze data in Azure Data Explorer, Log Analytics, and Microsoft Sentinel using Kusto Query Language (KQL) through tools, resources, and prompts.
    6
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to discover, inspect, and call SAP RFC-enabled function modules (BAPIs/RFCs) with configurable read/write policies, transaction support, audit logging, and ABAP source retrieval.
    6
    1
    MIT