Skip to main content
Glama
vchinnu

SAP RCA MCP Server

by vchinnu

SAP RCA MCP Server

Python MCP-сервер, который позволяет ИИ-агентам выполнять анализ первопричин в системах SAP, запрашивая данные Azure Log Analytics.

Архитектура

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

4 инструмента

Инструмент

Назначение

get_schema

Возвращает точные имена столбцов, типы, столбец времени, столбец SID и подсказки KQL для зарегистрированных таблиц. Вызывайте это первым.

execute_query

Проверяет сгенерированный агентом KQL-запрос (защита от записи), затем выполняет его.

analyze_results

Применяет знания предметной области SAP для классификации необработанных строк: категории ошибок, серьезность, рекомендации.

run_full_rca

Автоматически выполняет все 8 шагов RCA и возвращает консолидированный JSON-отчет.

Предварительные требования

  • Python 3.11+

  • Установлен Azure CLI (az)

  • Доступ к рабочей области Azure Log Analytics (требуется идентификатор рабочей области)

  • Роль Log Analytics Reader, назначенная вашей учетной записи (или управляемое удостоверение)

Настройка

# 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

Конфигурация (.env)

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

В Azure с управляемым удостоверением нужен только идентификатор рабочей области — оставьте все поля AZURE_CLIENT_* пустыми.

Запуск

режим stdio (Claude Desktop, MCP Inspector, локальный Azure AI Foundry)

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

режим SSE/HTTP (развертывание в Azure App Service)

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

Конечная точка SSE будет: http://localhost:8000/sse

Подключение к Claude Desktop

Добавьте в 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>"
      }
    }
  }
}

Подключение к Azure AI Foundry

В Azure AI Foundry добавьте MCP-подключение, указывающее на: https://<your-app-service>.azurewebsites.net/sse

Пример диалога с агентом

Сфокусированный рабочий процесс запросов:

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:

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

Зарегистрированные таблицы

Сейчас зарегистрировано (1 из 7):

Table

SAP Source

Status

SapNetweaver_ShortDumps_CL

ST22 ABAP короткие дампы

✅ Зарегистрирована

SapNetweaver_SysLogs_CL

SM21 системный журнал

⏳ Ожидает CSV-схему

SapNetweaver_BatchJobs_CL

SM37 пакетные задания

⏳ Ожидает CSV-схему

SapNetweaver_GetSystemInstanceList_CL

Доступность экземпляра

⏳ Ожидает CSV-схему

SapNetweaver_GetProcessList_CL

Доступность процесса

⏳ Ожидает CSV-схему

Prometheus_OSExporter_CL

Метрики ОС

⏳ Ожидает CSV-схему

Prometheus_HaClusterExporter_CL

Кластер HA

⏳ Ожидает CSV-схему

Добавление новой схемы таблицы

  1. Предоставьте CSV-схему (столбцы + описание) — тот же формат, что и SchemaforMCP-Details.csv.

  2. Добавьте новую запись в schema_registry.py, используя существующую запись SapNetweaver_ShortDumps_CL в качестве шаблона.

  3. Если таблице требуется специфичная для домена логика анализа, добавьте функцию _analyze_<type>() в tools/analyze_results.py.

  4. Добавьте KQL-шаблон в _KQL_TEMPLATES в tools/rca_orchestrator.py.

  5. Перезапустите сервер — других изменений не требуется.

Замечания по безопасности

  • execute_query блокирует все команды управления KQL (.ingest, .drop, .set и т.д.)

  • run_full_rca использует параметризованные KQL-шаблоны — значения SID проверяются перед подстановкой

  • Все учетные данные загружаются из переменных окружения — никаких секретов в коде

  • В Azure используйте управляемое удостоверение; не храните AZURE_CLIENT_SECRET в конфигурации App Service


⚠ Открытые вопросы (требуется действие)

Прежде чем сервер сможет подключиться к вашей рабочей области, вам необходимо предоставить:

#

Что

Где найти

Файл для обновления

1

Идентификатор рабочей области Log Analytics

Портал Azure → Рабочая область Log Analytics → Обзор → Идентификатор рабочей области

.env

2

Идентификатор клиента Azure

Портал Azure → Microsoft Entra ID → Обзор → Идентификатор клиента

.env

3

Столбец времени для SapNetweaver_ShortDumps_CL

Предоставленный CSV показывает serverTimestamp_t. Документация агента показывает timestamp_t. Подтвердите, какое имя столбца правильно в вашей рабочей области (проверьте Log Analytics → Таблицы → ShortDumps).

строка schema_registry.py с "time_column"

4

Наличие столбца SID_s

Присутствует ли SID_s в вашей таблице ShortDumps? (Некоторые рабочие области используют sapsid_s вместо этого.)

поле "sid_column" в schema_registry.py

5

Оставшиеся 6 схем таблиц

Предоставьте CSV-схемы (тот же формат, что и SchemaforMCP-Details.csv) для оставшихся таблиц, чтобы включить полный 8-шаговый RCA

записи в 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