Skip to main content
Glama
engoetz

sap-adt-mcp

by engoetz

sap-adt-mcp

tests license python

MCP-сервер и Python-клиент для REST API SAP ADT (ABAP Development Tools). Он предоставляет вашему ИИ-ассистенту те же операции, которые использует Eclipse ADT — поиск по репозиторию, чтение и запись исходного кода, активацию, проверку синтаксиса и работу с транспортными запросами — общаясь с теми же эндпоинтами /sap/bc/adt/*.

Полная техническая документация также доступна на английском: docs/PROJECT_DOCUMENTATION.md.


Возможности

  • Поиск и навигация — объекты по маске (Z*, ZCL_*), содержимое пакетов (включая пространства имён /ACME/PKG) и метаданные

  • Чтение и запись исходников — с блокировкой, назначением транспорта и активацией в одном вызове; опционально сохранение/чтение локальных файлов

  • Активация и проверка синтаксиса — с сообщениями об ошибках с указанием строки и столбца

  • Транспорты — просмотр, создание, выпуск и проверка необходимости транспорта для объекта

  • Создание объектов — программ, классов, интерфейсов и пакетов (локальных или транспортируемых)

  • Экспорт DDIC в Markdown — таблицы, элементы данных, домены и представления превращаются в читаемый для ИИ контекст

  • Работа в старых релизах — media types согласовываются для каждого эндпоинта, а sap_system_info сообщает, что поддерживает данная система

Учётные данные хранятся в менеджере учётных данных операционной системы; ни один пароль не записывается в файлы проекта.


Related MCP server: MCP-ADT

Требования

Требование

Минимум

Проверка

Python

3.10+

python --version

Система SAP

NetWeaver 7.31 SP04+ с активным узлом ICF /sap/bc/adt

sap-adt test <ID>

MCP-клиент

Cursor, Claude Code, Claude Desktop, VS Code или другой с поддержкой MCP

—

Сеть

доступ к хосту и порту SAP

—

Предварительные требования на стороне SAP (сервисы ICF, роли и объекты авторизации) подробно описаны в разделе 6 справочника команд.


Установка

Прямо из GitHub (рекомендуется)

pip install git+https://github.com/engoetz/sap-adt-mcp

Это регистрирует две команды в PATH:

Команда

Назначение

sap-adt

управление подключениями через терминал (пароль вводится скрыто)

sap-adt-mcp

запуск MCP-сервера (stdio)

Ничего не устанавливая постоянно, с помощью uv:

uvx --from git+https://github.com/engoetz/sap-adt-mcp sap-adt-mcp

Из исходного кода (для разработки)

git clone https://github.com/engoetz/sap-adt-mcp
cd sap-adt-mcp
python -m venv .venv && .venv/Scripts/activate   # Linux/macOS: source .venv/bin/activate
pip install -e ".[dev]"
python -m pytest tests -q

Настройка в MCP-клиенте

После установки команда sap-adt-mcp уже находится в PATH — абсолютный путь не нужен:

{
  "mcpServers": {
    "sap-adt": {
      "command": "sap-adt-mcp",
      "args": []
    }
  }
}

Куда поместить этот блок:

Клиент

Файл

Cursor (глобально)

~/.cursor/mcp.json — Windows: C:\Users\<usuário>\.cursor\mcp.json

Cursor (для проекта)

.cursor/mcp.json в корне проекта — есть шаблон в .cursor/mcp.json.example

Claude Code

claude mcp add sap-adt -- sap-adt-mcp

Claude Desktop

claude_desktop_config.json

Если вы предпочитаете запускать прямо из исходного кода, не устанавливая пакет, замените на "command": "python", "args": ["/caminho/para/sap-adt-mcp/scripts/run_mcp.py"].

Проверка

В Cursor сервер отображается как user-sap-adt в Settings > MCP. Чтобы проверить в любом клиенте, вызовите sap_list_environments() — он должен вернуть список сохранённых подключений.

Проблема

Решение

Сервер не отображается

Проверьте путь к файлу конфигурации и перезапустите клиент

Сервер отображается красным

Запустите sap-adt-mcp в терминале и посмотрите ошибку; обычно это неправильный Python в PATH

ModuleNotFoundError: sap_adt

Пакет был установлен в другое виртуальное окружение

No password available

Выполните sap-adt password <ID>

Missing connection parameter(s)

Выполните sap-adt add <ID>, чтобы создать подключение


Учётные данные

Через терминал (рекомендуется)

sap-adt add DEV

Команда запрашивает хост, порт, мандант, пользователя, язык и HTTPS (Enter принимает предложенное значение) и, наконец, пароль — вводится дважды, без эха на экране. Так он не попадает ни в историю shell, ни в историю разговора с ИИ.

sap-adt list                      # conexões salvas e se têm senha
sap-adt edit DEV --port 8020      # alterar campos sem tocar na senha
sap-adt password DEV              # trocar apenas a senha
sap-adt test DEV                  # conectar e sondar os endpoints ADT
sap-adt delete DEV                # remover conexão e senha

Параметра --password не существует: по определению пароль вводится только через запрос. Для автоматизации принимается переменная SAP_PASSWORD.

Пароль сохраняется в системном хранилище ключей (Windows Credential Manager, macOS Keychain, Linux Secret Service). Остальные параметры находятся в ~/.sap-adt/environments.json, вне проекта.

Через чат

sap_save_password(system_id="DEV", host="...", port=8000, client="100", user="username", password="...") делает то же самое — но пароль остаётся записанным в разговоре. Предпочитайте терминал.


Первое использование

sap_connect(system_id="DEV")
sap_system_info()                       # o que este sistema suporta (rode em release antiga)

sap_search(query="Z*", object_type="CLAS")
sap_read_source(object_name="ZCL_MINHA_CLASSE", object_type="CLAS")

sap_write_source(
    object_name="ZCL_MINHA_CLASSE",
    object_type="CLAS",
    source_code="...",
    transport_request="DEVK900123"
)

Вне MCP-клиента sap-adt test DEV выполняет ту же диагностику через терминал.


Совместимость между релизами

Более старые системы (ECC, NetWeaver 7.3x) предоставляют подмножество ADT и не всегда понимают те же версии media type. Клиент обрабатывает это автоматически:

  • Согласование media types для каждого эндпоинта, от новых к старым, с запоминанием того, что сработало

  • Discovery с альтернативами, когда /sap/bc/adt/discovery не активен в SICF

  • Транспорт отправляется двумя способами (corrNr в query и заголовок sap-transportrequest)

  • sap_system_info проверяет эндпоинты и сообщает, какие инструменты там не будут работать

Подробнее в разделе 6.7 справочника.


Инструменты MCP (25)

Подключение и учётные данные

Инструмент

Описание

sap_connect

Аутентификация в системе SAP (поддерживаются сохранённые среды)

sap_disconnect

Завершить текущее подключение (позволяет сменить систему)

sap_system_info

Диагностика: какие эндпоинты ADT поддерживает система

sap_discovery

Список доступных сервисов ADT

sap_save_password

Сохранить учётные данные в менеджере учётных данных ОС

sap_delete_password

Удалить сохранённые учётные данные

sap_list_environments

Список сохранённых сред SAP

Репозиторий

Инструмент

Описание

sap_search

Поиск объектов ABAP (CLAS, PROG, INTF, FUGR, TABL)

sap_browse_package

Список содержимого пакетов (поддерживаются пространства имён)

sap_object_metadata

Получить сведения об объекте (имя, тип, пакет, ответственный)

sap_export_ddic_markdown

Экспорт метаданных DDIC в формате Markdown

Исходный код

Инструмент

Описание

sap_read_source

Чтение исходного кода ABAP (опционально: сохранение в локальный файл)

sap_write_source

Запись исходного кода с автоматической блокировкой, транспортом и активацией

sap_activate

Компиляция/активация объектов

sap_syntax_check

Проверка синтаксиса без активации

Транспорты

Инструмент

Описание

sap_check_lock

Проверить статус блокировки объекта

sap_list_transports

Список открытых транспортных запросов

sap_create_transport

Создать новый транспортный запрос

sap_release_transport

Выпустить транспортный запрос

sap_transport_check

Проверить, требуется ли объекту транспорт

Создание и удаление

Инструмент

Описание

sap_create_program

Создать новую программу ABAP

sap_create_class

Создать новый класс ABAP

sap_create_interface

Создать новый интерфейс ABAP

sap_create_package

Создать новый пакет ABAP (DEVC), локальный или транспортируемый

sap_delete_object

Удалить объект ABAP (требуется confirm='DELETE')

Параметры, примеры и возвращаемые значения для каждого инструмента: docs/MCP_COMMAND_REFERENCE.md


Архитектура

Cliente MCP  →  servidor MCP (stdio/JSON-RPC)  →  cliente REST ADT  →  SAP /sap/bc/adt/*
src/sap_adt/
├── client.py            # HTTP: autenticação, CSRF, sessões stateful, negociação de media type
├── credential_store.py  # ~/.sap-adt/environments.json + keyring do SO
├── repository.py        # pesquisa, navegação de pacotes, metadados
├── source.py            # leitura/escrita de fonte com bloqueio
├── activation.py        # ativação e verificação de sintaxe
├── transport.py         # transport requests (CTS)
├── ddic_export.py       # DDIC → Markdown
├── cli.py               # comando `sap-adt`
├── models.py            # dataclasses
├── exceptions.py        # hierarquia de exceções
└── mcp_server.py        # servidor MCP com as 25 ferramentas

Зависимость

Назначение

requests

HTTP-клиент для REST API ADT

mcp

SDK Model Context Protocol (FastMCP)

lxml

разбор XML

keyring

учётные данные в менеджере ОС


Разработка

pip install -e ".[dev]"
python -m pytest tests -q

Тесты офлайн: не требуются ни система SAP, ни сеть. Они покрывают разрешение URI, XML-парсеры на статических ответах (включая формат старых релизов) и CLI. CI запускает набор тестов в Linux и Windows, Python 3.10 и 3.13, и проверяет, что пакет собирается.

Вклад и сообщения о проблемах приветствуются через issues. Открывая issue, не вставляйте hostname, пользователя, мандант или фрагменты проприетарного кода — опишите поведение и, если возможно, приложите вывод sap_system_info.


Документация

Документ

Содержание

docs/MCP_COMMAND_REFERENCE.md

Справочник команд: параметры, примеры, предварительные требования SAP и руководство по CLI

docs/PROJECT_DOCUMENTATION.md

Полная техническая документация (английский)

docs/PROJECT_DOCUMENTATION_PT-BR.md

Полная техническая документация (португальский)

AGENTS.md

Правила работы для ассистента, использующего инструменты


Лицензия

Apache-2.0.

Независимый проект, без аффилиации, спонсорства или одобрения со стороны SAP SE. SAP, ABAP и SAP NetWeaver являются товарными знаками SAP SE. Инструмент лишь использует публично документированный API ADT, с учётными данными самого пользователя.

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Facilitates interaction with SAP ABAP systems via ADT APIs, enabling object management, transport handling, and code analysis.
    100
    139 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to read, write, activate, and transport ABAP code in SAP systems via ABAP ADT REST API, without needing SAP GUI.
    24
    0
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to perform ABAP Development Tools operations on SAP ERP (ECC and S/4HANA) systems, including source code editing, object activation, syntax checks, and ABAP unit tests.
    8 npm
    MIT