ARC-1
ARC-1 — Servidor MCP para SAP ADT
ARC-1 (pronunciado arc one [ɑːrk wʌn]) — Servidor MCP preparado para entornos empresariales para sistemas SAP ABAP. Seguro por defecto, desplegable en BTP o local (on-premise), y reforzado con una amplia cobertura de pruebas unitarias, de integración y E2E.
ARC-1 conecta asistentes de IA (Claude, GitHub Copilot, Copilot Studio y cualquier cliente MCP) a sistemas SAP a través de la API REST de ADT. Se distribuye como un paquete npm y una imagen de Docker.
Documentación completa | Guía de configuración | Referencia de herramientas
¿Por qué ARC-1?
Creado para organizaciones que necesitan desarrollo SAP asistido por IA con medidas de seguridad. Inspirado en el trabajo pionero de abap-adt-api, mcp-abap-adt y vibing-steampunk — ARC-1 añade lo necesario para ejecutarse en producción:
Seguridad y controles administrativos
Seguro por defecto — solo lectura, sin SQL libre, sin vista previa de tablas, sin transportes de forma predeterminada. Utilice
--profile developero flags explícitos para habilitar capacidades.Listas de permitidos/bloqueados de operaciones — controle exactamente qué tipos de operaciones (lectura, escritura, búsqueda, consulta, activación, transporte) están permitidas.
Restricciones de paquetes — limite las operaciones de escritura de la IA (crear, actualizar, eliminar) a paquetes específicos con comodines (
--allowed-packages "Z*,$TMP"). Las operaciones de lectura no están restringidas por paquete; utilice la autorización nativa de SAP para el control de acceso a nivel de lectura.Control de acceso a datos — habilite la vista previa de datos de tablas (
--block-data=false) o SQL de forma libre (--block-free-sql=false).Seguridad de transporte — requiera asignaciones de transporte, restrinja a transportes específicos o haga que los transportes sean de solo lectura. Las operaciones de actualización/eliminación utilizan automáticamente el número de corrección de bloqueo cuando no se proporciona un transporte explícito.
Perfiles de seguridad — roles preconfigurados:
viewer,viewer-data,viewer-sql,developer,developer-data,developer-sql.Escrituras restringidas a
$TMPcuando están habilitadas — solo objetos locales/temporales; escribir en paquetes transportables requiere--allowed-packagesexplícito.
Autenticación
Clave de API — token Bearer simple para despliegues internos.
OIDC / JWT — Entra ID, Keycloak o cualquier proveedor de OpenID Connect.
OAuth 2.0 — inicio de sesión basado en navegador para BTP ABAP Environment.
XSUAA — autenticación nativa de SAP BTP con proxy de token automático para clientes MCP.
Propagación de identidad (Principal Propagation) — identidad por usuario reenviada a través de Cloud Connector (cada acción de SAP se ejecuta como el usuario real, no como una cuenta técnica).
Despliegue en BTP Cloud Foundry
Despliegue ARC-1 como una aplicación Cloud Foundry en SAP BTP con integración completa de la plataforma:
Servicio de Destinos (Destination Service) — conéctese a sistemas SAP a través de destinos gestionados.
Cloud Connector — alcance sistemas locales (on-premise) a través del proxy de conectividad.
Propagación de identidad — identidad de usuario reenviada de extremo a extremo mediante certificados X.509.
Proxy OAuth XSUAA — los clientes MCP se autentican mediante OAuth estándar, ARC-1 gestiona el intercambio de tokens de BTP.
Registro de auditoría — eventos estructurados a stderr, archivo o al servicio de registro de auditoría de BTP.
Eficiencia de tokens
11 herramientas basadas en intenciones (~5K tokens de esquema) en lugar de más de 200 herramientas individuales — mantiene pequeña la ventana de contexto del LLM.
Lectura/edición a nivel de método — lea o actualice un solo método de clase, no todo el código fuente (hasta 20 veces menos tokens).
Compresión de contexto —
SAPContextdevuelve contratos de API pública de todas las dependencias en una sola llamada (compresión de 7-30x).
Caché de objetos integrada
Caché de fuente automática — cada lectura de objeto SAP se almacena en caché en memoria (stdio) o SQLite (http-streamable). Las lecturas repetidas devuelven resultados al instante sin llamar a SAP.
Caché de grafo de dependencias — resolución de dependencias de
SAPContextindexada por hash de fuente; los objetos sin cambios omiten todas las llamadas ADT en ejecuciones posteriores.Precalentamiento — inicie con
ARC1_CACHE_WARMUP=truepara preindexar todos los objetos personalizados al inicio, permitiendo la búsqueda de dependencias inversas (SAPContext(action="usages")).Invalidación de escritura — cuando
SAPWritemodifica un objeto, su entrada en caché se elimina automáticamente; la siguiente lectura obtiene la fuente actualizada.
Consulte docs/caching.md para la documentación completa.
Pruebas
Más de 1.367 pruebas unitarias (53 archivos de prueba unitaria, HTTP simulado).
~160 pruebas de integración contra sistemas SAP reales, con razones explícitas de omisión cuando faltan credenciales o fixtures.
~70 pruebas E2E que ejecutan llamadas reales a herramientas MCP contra un servidor ARC-1 en ejecución y un sistema SAP real.
Ciclo de vida CRUD y carriles de humo (smoke lanes) de BTP incluidos (
test:integration:crud,test:integration:btp:smoke).Matriz de CI en Node
22y24; integración + E2E ejecutados enpushamainy PRs internos.Telemetría de fiabilidad + cobertura publicados como señales informativas de CI (no bloqueantes).
Herramientas refinadas para el uso en el mundo real
Las 11 herramientas están diseñadas a partir de comentarios de interacción real con LLMs:
Herramienta | Qué hace |
SAPRead | Lee código fuente ABAP, datos de tablas, vistas CDS, extensiones de metadatos (DDLX), enlaces de servicio (SRVB), clases de mensajes, objetos BOR, aplicaciones UI5/Fiori desplegadas (BSP, BSP_DEPLOY). El formato estructurado para clases devuelve metadatos + includes descompuestos como JSON |
SAPSearch | Búsqueda de objetos + búsqueda de texto completo en código fuente en todo el sistema |
SAPWrite | Crea/actualiza/elimina código fuente ABAP y metadatos DDIC con bloqueo/desbloqueo automático (PROG, CLAS, INTF, FUNC, INCL, DDLS, DDLX, BDEF, SRVD, DOMA, DTEL). Creación por lotes para flujos de trabajo de múltiples objetos (p. ej., pila RAP o dominio+elemento de datos en una sola llamada) |
SAPActivate | Activa objetos ABAP — individual o por lotes (esencial para pilas RAP). Publica/despublica enlaces de servicio OData (SRVB) |
SAPNavigate | Ir a la definición, buscar referencias, autocompletado de código |
SAPQuery | Ejecuta SQL de ABAP con sugerencias de tabla no encontrada |
SAPTransport | Gestión de transporte CTS (listar, crear, liberar) |
SAPContext | Contexto de dependencia comprimido — una llamada reemplaza N llamadas de SAPRead |
SAPLint | Lint de ABAP local (ajustes preestablecidos conscientes del sistema, corrección automática, validación previa a la escritura) |
SAPDiagnose | Verificación de sintaxis, pruebas unitarias ABAP, calidad de código ATC, volcados cortos (short dumps), trazas de perfilador |
SAPManage | Sondeo de características — detecta qué admite el sistema antes de actuar |
Las definiciones de herramientas se adaptan automáticamente al sistema de destino (BTP vs local), eliminando tipos no disponibles y ajustando las descripciones para que el LLM nunca intente operaciones no admitidas.
Detección de características
ARC-1 sondea el sistema SAP al inicio y adapta su comportamiento:
Detecta HANA, abapGit, RAP/CDS, AMDP, UI5 y disponibilidad de transporte.
Autodetecta sistemas BTP vs locales.
Asigna la versión de SAP_BASIS a la versión correcta del lenguaje ABAP.
Cada característica puede forzarse a encendido/apagado o dejarse en autodetección.
Inicio rápido
npx arc-1@latest --url https://your-sap-host:44300 --user YOUR_USERPara Docker, despliegue en BTP, configuración de cliente (Claude Desktop, Claude Code, VS Code, Copilot Studio) y todos los métodos de autenticación, consulte la Guía de configuración.
Documentación
La documentación completa está disponible en marianfoo.github.io/arc-1.
Guía | Descripción |
Opciones de despliegue, métodos de autenticación, configuración de cliente | |
Referencia completa de las 11 herramientas | |
Arquitectura del sistema con diagramas | |
Referencia de despliegue en Docker | |
Todos los métodos de autenticación | |
Despliegue en Cloud Foundry en SAP BTP | |
Patrones de flujo de trabajo de agentes y mejores prácticas |
Desarrollo
npm ci && npm run build && npm testConsulte CLAUDE.md para conocer la estructura del código base, los comandos de prueba y las pautas de contribución.
Créditos
Proyecto | Autor | Contribución |
oisee | Servidor MCP original en Go — punto de partida de ARC-1 | |
Marcello Urbani | Biblioteca ADT en TypeScript, referencia definitiva de API | |
Mario Andreschak | Primer servidor MCP para ABAP ADT | |
Lars Hvam | Analizador/linter de ABAP (utilizado a través de @abaplint/core) |
Licencia
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