ARC-1
ARC-1 — SAP ADT MCP Server
ARC-1 (произносится arc one [ɑːrk wʌn]) — готовый к промышленной эксплуатации MCP-сервер для систем SAP ABAP. Безопасен по умолчанию, развертывается в BTP или локально (on-premise), усилен обширным покрытием модульными, интеграционными и E2E-тестами.
ARC-1 подключает ИИ-ассистентов (Claude, GitHub Copilot, Copilot Studio и любой MCP-клиент) к системам SAP через ADT REST API. Поставляется как npm-пакет и Docker-образ.
Полная документация | Руководство по настройке | Справочник инструментов
Почему ARC-1?
Создан для организаций, которым необходима разработка в SAP с помощью ИИ и встроенными средствами контроля. Вдохновлен новаторскими работами abap-adt-api, mcp-abap-adt и vibing-steampunk — ARC-1 добавляет функции, необходимые для работы в продакшене:
Безопасность и административный контроль
Безопасность по умолчанию — только чтение, никакого произвольного SQL, предварительного просмотра таблиц или переносов «из коробки». Используйте
--profile developerили явные флаги для включения возможностей.Списки разрешенных/запрещенных операций — точный контроль того, какие типы операций (чтение, запись, поиск, запрос, активация, перенос) разрешены.
Ограничения пакетов — ограничение операций записи ИИ (создание, обновление, удаление) конкретными пакетами с использованием масок (
--allowed-packages "Z*,$TMP"). Операции чтения не ограничиваются пакетами — используйте встроенную авторизацию SAP для контроля доступа на уровне чтения.Контроль доступа к данным — включение предварительного просмотра данных таблиц (
--block-data=false) или произвольного SQL (--block-free-sql=false).Безопасность переносов — требование назначения переносов, ограничение конкретными переносами или перевод переносов в режим «только чтение». Операции обновления/удаления автоматически используют номер коррекции блокировки, если не указан явный перенос.
Профили безопасности — предустановленные роли:
viewer,viewer-data,viewer-sql,developer,developer-data,developer-sql.Запись ограничена
$TMPпри включении — только локальные/временные объекты; запись в переносимые пакеты требует явного указания--allowed-packages.
Аутентификация
API-ключ — простой Bearer-токен для внутренних развертываний.
OIDC / JWT — Entra ID, Keycloak или любой провайдер OpenID Connect.
OAuth 2.0 — вход через браузер для BTP ABAP Environment.
XSUAA — нативная аутентификация SAP BTP с автоматическим проксированием токенов для MCP-клиентов.
Principal Propagation — идентификация пользователя передается через Cloud Connector (каждое действие в SAP выполняется от имени реального пользователя, а не технической учетной записи).
Развертывание в BTP Cloud Foundry
Развертывайте ARC-1 как приложение Cloud Foundry в SAP BTP с полной интеграцией с платформой:
Destination Service — подключение к системам SAP через управляемые назначения (destinations).
Cloud Connector — доступ к локальным системам через прокси-сервер соединений.
Principal Propagation — идентификация пользователя передается сквозным образом через сертификаты X.509.
XSUAA OAuth proxy — MCP-клиенты проходят аутентификацию через стандартный OAuth, ARC-1 обрабатывает обмен токенами BTP.
Журналирование аудита — структурированные события в stderr, файл или службу аудита BTP.
Эффективность токенов
11 инструментов на основе намерений (~5 тыс. токенов схемы) вместо 200+ отдельных инструментов — это позволяет поддерживать небольшое контекстное окно LLM.
Чтение/редактирование на уровне методов — чтение или обновление одного метода класса, а не всего исходного кода (до 20 раз меньше токенов).
Сжатие контекста —
SAPContextвозвращает контракты публичных API всех зависимостей за один вызов (сжатие в 7-30 раз).
Встроенное кэширование объектов
Автоматическое кэширование исходного кода — каждое чтение объекта SAP кэшируется в памяти (stdio) или SQLite (http-streamable). Повторные чтения возвращаются мгновенно без обращения к SAP.
Кэширование графа зависимостей — разрешение зависимостей
SAPContextпо хешу исходного кода; неизмененные объекты пропускают все вызовы ADT при последующих запусках.Предварительный прогрев — запустите с
ARC1_CACHE_WARMUP=trueдля предварительной индексации всех пользовательских объектов при старте, что позволит выполнять обратный поиск зависимостей (SAPContext(action="usages")).Инвалидация при записи — когда
SAPWriteизменяет объект, его запись в кэше автоматически удаляется; следующее чтение получает свежий исходный код.
См. docs/caching.md для получения полной документации.
Тестирование
1367+ модульных тестов (53 файла модульных тестов, мокирование HTTP).
~160 интеграционных тестов против реальных систем SAP с явными причинами пропуска, если отсутствуют учетные данные или фикстуры.
~70 E2E-тестов, которые выполняют реальные вызовы инструментов MCP к работающему серверу ARC-1 и реальной системе SAP.
Жизненный цикл CRUD и дымовые тесты BTP включены (
test:integration:crud,test:integration:btp:smoke).CI-матрица на Node
22и24; интеграционные + E2E-тесты запускаются приpushвmainи внутренних PR.Телеметрия надежности + покрытие публикуются как информационные сигналы CI (не блокирующие).
Инструменты, адаптированные для реального использования
11 инструментов разработаны на основе обратной связи от реального взаимодействия с LLM:
Инструмент | Что он делает |
SAPRead | Чтение исходного кода ABAP, данных таблиц, CDS-представлений, расширений метаданных (DDLX), привязок сервисов (SRVB), классов сообщений, объектов BOR, развернутых приложений UI5/Fiori (BSP, BSP_DEPLOY). Структурированный формат для классов возвращает метаданные + декомпозированные инклюды в виде JSON |
SAPSearch | Поиск объектов + полнотекстовый поиск исходного кода по всей системе |
SAPWrite | Создание/обновление/удаление исходного кода ABAP и метаданных DDIC с автоматической блокировкой/разблокировкой (PROG, CLAS, INTF, FUNC, INCL, DDLS, DDLX, BDEF, SRVD, DOMA, DTEL). Пакетное создание для рабочих процессов с несколькими объектами (например, стек RAP или домен+элемент данных за один вызов) |
SAPActivate | Активация объектов ABAP — одиночная или пакетная (необходимо для стеков RAP). Публикация/отмена публикации привязок OData-сервисов (SRVB) |
SAPNavigate | Переход к определению, поиск ссылок, автодополнение кода |
SAPQuery | Выполнение ABAP SQL с предложениями при отсутствии таблицы |
SAPTransport | Управление переносами CTS (список, создание, выпуск) |
SAPContext | Сжатый контекст зависимостей — один вызов заменяет N вызовов SAPRead |
SAPLint | Локальный линтинг ABAP (пресеты с учетом системы, автоисправление, проверка перед записью) |
SAPDiagnose | Проверка синтаксиса, модульные тесты ABAP, качество кода ATC, дампы, профилировщик |
SAPManage | Зондирование функций — определение того, что поддерживает система, перед выполнением действий |
Определения инструментов автоматически адаптируются к целевой системе (BTP или on-premise), удаляя недоступные типы и корректируя описания, чтобы LLM никогда не пыталась выполнить неподдерживаемые операции.
Определение функций
ARC-1 опрашивает систему SAP при запуске и адаптирует свое поведение:
Обнаруживает HANA, abapGit, RAP/CDS, AMDP, UI5 и доступность переносов.
Автоматически определяет системы BTP или on-premise.
Сопоставляет версию SAP_BASIS с правильной версией языка ABAP.
Каждую функцию можно принудительно включить/выключить или оставить в режиме автоопределения.
Быстрый старт
npx arc-1@latest --url https://your-sap-host:44300 --user YOUR_USERИнформацию о Docker, развертывании в BTP, настройке клиентов (Claude Desktop, Claude Code, VS Code, Copilot Studio) и всех методах аутентификации см. в Руководстве по настройке.
Документация
Полная документация доступна по адресу marianfoo.github.io/arc-1.
Руководство | Описание |
Варианты развертывания, методы аутентификации, настройка клиента | |
Полный справочник по всем 11 инструментам | |
Архитектура системы со схемами | |
Справочник по развертыванию Docker | |
Все методы аутентификации | |
Развертывание Cloud Foundry в SAP BTP | |
Паттерны рабочих процессов агентов и лучшие практики |
Разработка
npm ci && npm run build && npm testСм. CLAUDE.md для ознакомления со структурой кодовой базы, командами тестирования и правилами внесения вклада.
Авторы
Проект | Автор | Вклад |
oisee | Оригинальный Go MCP-сервер — отправная точка ARC-1 | |
Marcello Urbani | TypeScript ADT-библиотека, эталонный справочник API | |
Mario Andreschak | Первый MCP-сервер для ABAP ADT | |
Lars Hvam | Парсер/линтер ABAP (используется через @abaplint/core) |
Лицензия
MIT
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/marianfoo/arc-1'
If you have feedback or need assistance with the MCP directory API, please join our Discord server