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: CloudWatch Log Analyst MCP

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

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vchinnu/AMS-MCPV2'

If you have feedback or need assistance with the MCP directory API, please join our Discord server