Skip to main content
Glama
vchinnu

SAP RCA MCP Server

by vchinnu

SAP RCA MCP Server

Servidor MCP en Python que permite a los agentes de IA realizar análisis de causa raíz en sistemas SAP consultando datos de Azure Log Analytics.

Arquitectura

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

Las 4 herramientas

Herramienta

Propósito

get_schema

Devuelve los nombres de columna exactos, tipos, columna de tiempo, columna SID y sugerencias KQL para las tablas registradas. Llama a esto primero.

execute_query

Valida una consulta KQL generada por el agente (protección de solo lectura) y luego la ejecuta.

analyze_results

Aplica conocimiento de dominio de SAP para clasificar filas sin procesar: categorías de error, severidad, recomendaciones.

run_full_rca

Ejecuta los 8 pasos de RCA automáticamente y devuelve un informe JSON consolidado.

Requisitos previos

  • Python 3.11+

  • Azure CLI (az) instalado

  • Acceso al área de trabajo de Azure Log Analytics (se necesita el ID del área de trabajo)

  • Rol Log Analytics Reader asignado a tu cuenta (o identidad administrada)

Configuración

# 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

Configuración (.env)

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

En Azure con identidad administrada, solo se necesita el ID del área de trabajo: deja todos los campos AZURE_CLIENT_* en blanco.

Ejecución

Modo stdio (Claude Desktop, MCP Inspector, Azure AI Foundry local)

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

Modo SSE/HTTP (despliegue en Azure App Service)

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

El endpoint SSE será: http://localhost:8000/sse

Conectar a Claude Desktop

Añade a claude_desktop_config.json:

{
  "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>"
      }
    }
  }
}

Conectar a Azure AI Foundry

En Azure AI Foundry, añade una conexión MCP que apunte a: https://<your-app-service>.azurewebsites.net/sse

Ejemplo de conversación con el agente

Flujo de trabajo de consulta enfocada:

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")

RCA automatizado completo:

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

Tablas registradas

Actualmente registradas (1 de 7):

Tabla

Origen SAP

Estado

SapNetweaver_ShortDumps_CL

ST22 ABAP Short Dumps

✅ Registrada

SapNetweaver_SysLogs_CL

SM21 System Log

⏳ Esperando CSV de esquema

SapNetweaver_BatchJobs_CL

SM37 Batch Jobs

⏳ Esperando CSV de esquema

SapNetweaver_GetSystemInstanceList_CL

Instance Availability

⏳ Esperando CSV de esquema

SapNetweaver_GetProcessList_CL

Process Availability

⏳ Esperando CSV de esquema

Prometheus_OSExporter_CL

OS Metrics

⏳ Esperando CSV de esquema

Prometheus_HaClusterExporter_CL

HA Cluster

⏳ Esperando CSV de esquema

Añadir un nuevo esquema de tabla

  1. Proporciona el CSV de esquema (columnas + descripción) — mismo formato que SchemaforMCP-Details.csv.

  2. Añade una nueva entrada a schema_registry.py siguiendo la entrada existente de SapNetweaver_ShortDumps_CL como plantilla.

  3. Si la tabla necesita lógica de análisis específica del dominio, añade una función _analyze_<type>() a tools/analyze_results.py.

  4. Añade una plantilla KQL a _KQL_TEMPLATES en tools/rca_orchestrator.py.

  5. Reinicia el servidor — no se necesitan otros cambios.

Notas de seguridad

  • execute_query bloquea todos los comandos de gestión de KQL (.ingest, .drop, .set, etc.)

  • run_full_rca utiliza plantillas KQL parametrizadas — los valores de SID se validan antes de la sustitución

  • Todas las credenciales se cargan desde variables de entorno — sin secretos en el código

  • En Azure, usa identidad administrada; no almacenes AZURE_CLIENT_SECRET en la configuración de App Service


⚠ Preguntas pendientes (Acción requerida)

Antes de que el servidor pueda conectarse a tu área de trabajo, debes proporcionar:

#

Qué

Dónde encontrarlo

Archivo a actualizar

1

ID del área de trabajo de Log Analytics

Azure Portal → Área de trabajo de Log Analytics → Información general → ID del área de trabajo

.env

2

ID de inquilino de Azure

Azure Portal → Microsoft Entra ID → Información general → ID de inquilino

.env

3

Columna de tiempo para SapNetweaver_ShortDumps_CL

El CSV que proporcionaste muestra serverTimestamp_t. La documentación del agente muestra timestamp_t. Por favor, confirma qué nombre de columna es correcto en tu área de trabajo (consulta Log Analytics → Tablas → ShortDumps).

schema_registry.py línea con "time_column"

4

Presencia de la columna SID_s

¿Está presente SID_s en tu tabla de ShortDumps? (Algunos espacios de trabajo usan sapsid_s en su lugar.)

schema_registry.py campo "sid_column"

5

Esquemas de las 6 tablas restantes

Proporciona los CSV de esquema (mismo formato que SchemaforMCP-Details.csv) para las tablas restantes para habilitar el RCA completo de 8 pasos

entradas de schema_registry.py

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