Skip to main content
Glama

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 developer o 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 $TMP cuando están habilitadas — solo objetos locales/temporales; escribir en paquetes transportables requiere --allowed-packages explí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 contextoSAPContext devuelve 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 SAPContext indexada por hash de fuente; los objetos sin cambios omiten todas las llamadas ADT en ejecuciones posteriores.

  • Precalentamiento — inicie con ARC1_CACHE_WARMUP=true para preindexar todos los objetos personalizados al inicio, permitiendo la búsqueda de dependencias inversas (SAPContext(action="usages")).

  • Invalidación de escritura — cuando SAPWrite modifica 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 22 y 24; integración + E2E ejecutados en push a main y 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_USER

Para 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

Guía de configuración

Opciones de despliegue, métodos de autenticación, configuración de cliente

Referencia de herramientas

Referencia completa de las 11 herramientas

Arquitectura

Arquitectura del sistema con diagramas

Guía de Docker

Referencia de despliegue en Docker

Autenticación empresarial

Todos los métodos de autenticación

Despliegue en BTP

Despliegue en Cloud Foundry en SAP BTP

Patrones de uso de IA

Patrones de flujo de trabajo de agentes y mejores prácticas

Desarrollo

npm ci && npm run build && npm test

Consulte 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

vibing-steampunk

oisee

Servidor MCP original en Go — punto de partida de ARC-1

abap-adt-api

Marcello Urbani

Biblioteca ADT en TypeScript, referencia definitiva de API

mcp-abap-adt

Mario Andreschak

Primer servidor MCP para ABAP ADT

abaplint

Lars Hvam

Analizador/linter de ABAP (utilizado a través de @abaplint/core)

Licencia

MIT

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - A tier

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