mcp-abap-abap-adt-api
MCP-сервер для SAP ABAP: агент ищет объекты, читает и правит исходники, проверяет синтаксис и ведет транспорты через ADT
- 211 ★ репозитория
- Последний коммит
- MIT
Широкий доступ
Почему такой уровень
- Инструменты `setObjectSource`, `activate` и транспортов меняют код и объекты в SAP в пределах прав пользователя
- Пароль или токен SAP лежит в конфигурации клиента, а инструменты Git просят SAP обратиться к удаленному репозиторию с переданными учетными данными
Установка
- Работает в
Ручная установка
npm ci && npm run buildВыполняется в клонированном репозитории, нужен Node.js 22.22.2 или новее.
Доступ и проверки
Как мы проверяемШирокий доступИнструмент может менять данные, выполнять команды или работать с секретами.
- Инструменты `setObjectSource`, `activate` и транспортов меняют код и объекты в SAP в пределах прав пользователя
- Пароль или токен SAP лежит в конфигурации клиента, а инструменты Git просят SAP обратиться к удаленному репозиторию с переданными учетными данными
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
mcp-abap-abap-adt-api оборачивает библиотеку abap-adt-api и отдает агенту 127 инструментов ABAP Development Tools плюс `readResultPage` для больших ответов. Агент ищет объекты (`searchObject`), читает исходники (`getObjectSource`), блокирует объект, записывает новую версию (`setObjectSource`), проверяет синтаксис (`syntaxCheckCode`), активирует и ведет транспортные запросы. Есть также запросы к данным, отладка, рефакторинг, работа с Git и анализ кода. Все вызовы идут в одну сессию SAP, которой владеет локальный клиент по stdio. Права определяют авторизации пользователя SAP: сервер не добавляет своих ограничений на чтение и запись. Ответы больше 64 КиБ возвращаются страницами: сервер выдает `resultId`, следующий сдвиг и срок жизни, а `readResultPage` собирает исходный результат. Схемы входных данных выведены из деклараций abap-adt-api 8.4.3, неизвестные аргументы отклоняются. Снимок последнего прочитанного исходника можно сразу отдать на проверку синтаксиса без повторной передачи кода.
Для кого. ABAP-разработчикам и администраторам SAP, которые ведут разработку в системе через агента: правят исходники классов и программ, проверяют синтаксис, привязывают изменения к транспортам.
Подходит, если
- Класс или программу ABAP надо поправить по описанию: агент находит объект через `searchObject`, читает исходник, блокирует и записывает новую версию
- До активации хочется проверить синтаксис: `syntaxCheckCode` берет последний прочитанный или записанный исходник, если не передавать `code`
- Изменение должно попасть в транспортный запрос: `transportInfo` возвращает номер запроса для объекта
- Выгрузка из SAP большая, и клиент обрывает ответ: `readResultPage` собирает JSON из страниц
- Перед работой на реальной системе проверяют доступ только чтением: `npm run verify:live` с `SAP_LIVE_TEST=1` выполняет проверку входа и обнаружения
Не подходит, если
- Нужен HTTP-сервер или вход через OAuth для нескольких пользователей: пакет работает по stdio и рассчитан на одного доверенного оператора
- Нужна изоляция на уровне ОС: процесс сервера ничем не ограничен, доступ задают лишь права пользователя SAP
- Сертификат SAP выпущен частным центром, а настроить `NODE_EXTRA_CA_CERTS` нельзя: проверку TLS отключить не получится
- Несколько агентов должны работать с SAP параллельно: сессия одна, и перекрывающие вызовы получают ошибку занятости
Пример запроса к агенту
Найди в SAP класс ZCL_INVOICE_XML_GEN_MODEL, прочитай исходник и покажи, где формируется заголовок XML, ничего не записываяMCP
- Транспорт
- stdio
- Авторизация
- API-ключ
Переменные окружения
SAP_URLобязательная- Адрес системы SAP в виде origin без пути, параметров и учетных данных
SAP_USERобязательная- Пользователь SAP
SAP_PASSWORDобязательная, секрет- Пароль пользователя SAP; вместо него можно задать SAP_BEARER_TOKEN
SAP_BEARER_TOKENсекрет- Статический токен авторизованного брокера вместо пароля
SAP_CLIENT- Номер клиента SAP
SAP_LANGUAGE- Язык входа в SAP
SAP_REQUEST_TIMEOUT_MS- Таймаут запроса, от 100 до 120000 мс, по умолчанию 60000
Ограничения
- Релиз в npm не опубликован: сервер собирают из исходников командами `npm ci` и `npm run build`, нужен Node.js 22.22.2 или новее (либо 24.15.0 и новее).
- Запросы к SAP ограничены таймаутом: по умолчанию 60 секунд, `SAP_REQUEST_TIMEOUT_MS` принимает значения от 100 до 120000. Редиректы и прокси из окружения сервер не использует.
- Живая проверка в README рассчитана на чтение: запись, отладку, Git и транспорты автор советует проверять на системе разработки.
- Адрес `SAP_URL` указывается как origin без пути и параметров.
Как отключить. Уберите запись `abap-adt` из конфигурации MCP-клиента и перезапустите клиент. Сессию SAP снимают инструменты `logout` или `dropSession`, а локальную сборку удаляют вместе с папкой репозитория.
Частые вопросы
Как подключить mcp-abap-abap-adt-api к Claude Code или Cursor?
Соберите проект (`npm ci`, затем `npm run build`) и добавьте в конфигурацию клиента сервер с командой `node` и абсолютным путем к `dist/index.js`. В блок `env` впишите `SAP_URL`, `SAP_USER`, `SAP_PASSWORD`, `SAP_CLIENT` и `SAP_LANGUAGE`.
Какие переменные окружения нужны для входа в SAP?
Обязательны `SAP_URL` и учетные данные: `SAP_USER` с `SAP_PASSWORD` либо статический токен авторизованного брокера в `SAP_BEARER_TOKEN`. Файл `.env` подгружается только если путь к нему задан в `SAP_ENV_FILE`.
Почему healthcheck отвечает нормально, а SAP недоступен?
`healthcheck` показывает локальную конфигурацию и состояние восстановления сессии, но не проверяет соединение с SAP. Для проверки входа служит `npm run verify:live` с `SAP_LIVE_TEST=1`.
В каком порядке агент меняет исходник ABAP?
Ищет объект через `searchObject`, читает исходник с суффиксом `/source/main`, узнает транспорт через `transportInfo`, блокирует объект через `lock`, записывает код через `setObjectSource` и проверяет `syntaxCheckCode`. Затем остаются `activate` и `unLock`.
Работает ли сервер с адресом SAP по HTTP?
По умолчанию нужен HTTPS с проверкой сертификата. HTTP на loopback разрешен для тестовых стендов, а для частной сети надо задать `SAP_ALLOW_HTTP=1`: тогда учетные данные идут по сети в открытом виде.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
MCP-серверыMCP-сервер превращает операции OpenAPI в инструменты агента и отправляет реальные запросы к указанному REST API.
MCP-сервер, который дает агенту читать файлы, искать по коду и запускать команды в рабочей папке
MCP-сервер Ref: поиск по документации API и библиотек, который отдает агенту только нужные куски страниц
MCP-сервер, который индексирует код через tree-sitter и отдает агенту отдельные функции и классы вместо целых файлов
Внешняя обработка 1С с MCP и REST API: запросы, метаданные, журнал регистрации и выполнение кода без изменения конфигурации
Справочники по прошивкам для агента: регистры, Modbus и SCPI с цитатой и страницей, а при отсутствии данных отказ без выдумки
Коротко о README
Верхняя часть страницы посвящена сборке, конфигурацию MCP-клиента и переменные окружения, потом правила сессии, лимиты и защитные границы. Дальше идут проверки приемки (сборка, тесты, stdio, пакет, Docker) и список связанных запросов на слияние. Нижняя половина осталась от прежних версий: инструкция для модели с перечнем ключевых инструментов и пошаговый сценарий правки кода.