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

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

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