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.
Каждую функцию можно принудительно включить/выключить или оставить в режиме автоопределения.
Related MCP server: SAP ERP MCP Server by CData
Быстрый старт
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
Maintenance
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
- AlicenseNot gradedqualityFmaintenanceMCP Server for Nutanix Prism Central14MIT
- AlicenseNot gradedqualityDmaintenanceThis read-only MCP Server allows you to connect to SAP ERP data from Claude Desktop through CData JDBC Drivers. For full CRUD support, check out our MCP Server for SAP ERP (https://www.cdata.com/drivers/sap/download/mcp).6MIT
- AlicenseNot gradedqualityDmaintenanceThis read-only MCP Server allows you to connect to SAP Business One data from Claude Desktop through CData JDBC Drivers. For full CRUD support, check out the first managed MCP platform: CData Connect AI (https://www.cdata.com/ai/).14MIT
- AlicenseAqualityAmaintenanceABAP Development Tools MCP server with comprehensive tooling and documentation for SAP systems1001,08577MIT
Related MCP Connectors
MEOK MCP Hardening MCP — automated security red-team for any MCP server. Maps OWASP LLM Top 10
MCP Server for agents to onboard, pay, and provision services autonomously with InFlow
MCP server for fcc-ecfs
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/arc-mcp/arc-1'
If you have feedback or need assistance with the MCP directory API, please join our Discord server