Skip to main content
Glama
engoetz

sap-adt-mcp

by engoetz

sap-adt-mcp

tests license python

Servidor MCP y cliente Python para la API REST de SAP ADT (ABAP Development Tools). Da a tu asistente de IA las mismas operaciones que usa Eclipse ADT — buscar en el repositorio, leer y escribir código fuente, activar, verificar sintaxis y trabajar con solicitudes de transporte — hablando con los mismos endpoints /sap/bc/adt/*.

Documentación técnica completa también en inglés: docs/PROJECT_DOCUMENTATION.md.


Lo que se puede hacer

  • Buscar y navegar — objetos por comodín (Z*, ZCL_*), contenido de paquetes (incluido con namespace /ACME/PKG) y metadatos

  • Leer y escribir fuente — con bloqueo, asignación de transporte y activación en una sola llamada; opcionalmente guardando/leyendo archivos locales

  • Activar y verificar sintaxis — con mensajes de error por línea y columna

  • Transportes — listar, crear, liberar y comprobar si un objeto necesita uno

  • Crear objetos — programas, clases, interfaces y paquetes (locales o transportables)

  • Exportar DDIC en Markdown — tablas, elementos de datos, dominios y vistas se convierten en contexto legible para la IA

  • Funcionar en releases antiguos — los media types se negocian por endpoint y sap_system_info indica qué soporta ese sistema

Las credenciales quedan en el administrador de credenciales del sistema operativo; ninguna contraseña se guarda en archivos del proyecto.


Related MCP server: mcp-abap-abap-adt-api

Requisitos

Requisito

Mínimo

Verificación

Python

3.10+

python --version

Sistema SAP

NetWeaver 7.31 SP04+ con el nodo ICF /sap/bc/adt activo

sap-adt test <ID>

Cliente MCP

Cursor, Claude Code, Claude Desktop, VS Code u otro con soporte MCP

Red

acceso al host y puerto del SAP

Los requisitos previos del lado SAP (servicios ICF, roles y objetos de autorización) se detallan en la sección 6 de la referencia de comandos.


Instalación

Directamente desde GitHub (recomendada)

pip install git+https://github.com/engoetz/sap-adt-mcp

Esto registra dos comandos en el PATH:

Comando

Para qué

sap-adt

gestionar conexiones desde el terminal (contraseña en prompt oculto)

sap-adt-mcp

ejecutar el servidor MCP (stdio)

Sin instalar nada permanentemente, con uv:

uvx --from git+https://github.com/engoetz/sap-adt-mcp sap-adt-mcp

Desde el código fuente (para desarrollar)

git clone https://github.com/engoetz/sap-adt-mcp
cd sap-adt-mcp
python -m venv .venv && .venv/Scripts/activate   # Linux/macOS: source .venv/bin/activate
pip install -e ".[dev]"
python -m pytest tests -q

Configurar en el cliente MCP

Después de la instalación, el comando sap-adt-mcp ya está en el PATH — no hace falta ruta absoluta:

{
  "mcpServers": {
    "sap-adt": {
      "command": "sap-adt-mcp",
      "args": []
    }
  }
}

Dónde colocar este bloque:

Cliente

Archivo

Cursor (global)

~/.cursor/mcp.json — Windows: C:\Users\<usuário>\.cursor\mcp.json

Cursor (por proyecto)

.cursor/mcp.json en la raíz del proyecto — hay una plantilla en .cursor/mcp.json.example

Claude Code

claude mcp add sap-adt -- sap-adt-mcp

Claude Desktop

claude_desktop_config.json

Si prefieres ejecutarlo directamente desde el código fuente, sin instalar el paquete, cámbialo por "command": "python", "args": ["/caminho/para/sap-adt-mcp/scripts/run_mcp.py"].

Verificar

En Cursor, el servidor aparece como user-sap-adt en Settings > MCP. Para probar en cualquier cliente, pide sap_list_environments() — debe devolver la lista de conexiones guardadas.

Problema

Solución

El servidor no aparece

Comprueba la ruta del archivo de configuración y reabre el cliente

Servidor en rojo

Ejecuta sap-adt-mcp en el terminal y mira el error; normalmente es el Python equivocado en el PATH

ModuleNotFoundError: sap_adt

El paquete se instaló en otro entorno virtual

No password available

Ejecuta sap-adt password <ID>

Missing connection parameter(s)

Ejecuta sap-adt add <ID> para crear la conexión


Credenciales

Desde el terminal (recomendado)

sap-adt add DEV

El comando pregunta host, puerto, mandante, usuario, idioma y HTTPS (Enter acepta el valor sugerido) y, por último, la contraseña — escrita dos veces, sin eco en pantalla. Así no entra en el historial del shell ni en el historial de la conversación con la IA.

sap-adt list                      # conexões salvas e se têm senha
sap-adt edit DEV --port 8020      # alterar campos sem tocar na senha
sap-adt password DEV              # trocar apenas a senha
sap-adt test DEV                  # conectar e sondar os endpoints ADT
sap-adt delete DEV                # remover conexão e senha

No existe el parámetro --password: por definición, la contraseña solo se introduce por prompt. Para automatización, se acepta la variable SAP_PASSWORD.

La contraseña va al keyring del SO (Windows Credential Manager, macOS Keychain, Linux Secret Service). Los demás parámetros quedan en ~/.sap-adt/environments.json, fuera del proyecto.

Desde el chat

sap_save_password(system_id="DEV", host="...", port=8000, client="100", user="username", password="...") hace lo mismo — pero la contraseña queda registrada en la conversación. Prefiere el terminal.


Primer uso

sap_connect(system_id="DEV")
sap_system_info()                       # o que este sistema suporta (rode em release antiga)

sap_search(query="Z*", object_type="CLAS")
sap_read_source(object_name="ZCL_MINHA_CLASSE", object_type="CLAS")

sap_write_source(
    object_name="ZCL_MINHA_CLASSE",
    object_type="CLAS",
    source_code="...",
    transport_request="DEVK900123"
)

Fuera del cliente MCP, sap-adt test DEV hace el mismo diagnóstico desde el terminal.


Compatibilidad entre releases

Los sistemas más antiguos (ECC, NetWeaver 7.3x) exponen un subconjunto del ADT y no siempre entienden las mismas versiones de media type. El cliente lo gestiona solo:

  • Media types negociados por endpoint, del más nuevo al más antiguo, memorizando lo que funcionó

  • Discovery con alternativas cuando /sap/bc/adt/discovery no está activo en SICF

  • Transporte enviado de las dos formas (corrNr en la query y header sap-transportrequest)

  • sap_system_info sondea los endpoints e indica qué herramientas no funcionarán allí

Detalles en la sección 6.7 de la referencia.


Herramientas MCP (25)

Conexión y credenciales

Herramienta

Descripción

sap_connect

Autenticar en el sistema SAP (admite entornos guardados)

sap_disconnect

Cerrar la conexión actual (permite cambiar de sistema)

sap_system_info

Diagnóstico: qué endpoints ADT soporta el sistema

sap_discovery

Listar servicios ADT disponibles

sap_save_password

Almacenar credenciales en el administrador de credenciales del SO

sap_delete_password

Eliminar credenciales guardadas

sap_list_environments

Listar entornos SAP guardados

Repositorio

Herramienta

Descripción

sap_search

Buscar objetos ABAP (CLAS, PROG, INTF, FUGR, TABL)

sap_browse_package

Listar contenido de paquetes (admite namespaces)

sap_object_metadata

Obtener detalles de un objeto (nombre, tipo, paquete, responsable)

sap_export_ddic_markdown

Exportar metadatos DDIC como Markdown

Código fuente

Herramienta

Descripción

sap_read_source

Leer código fuente ABAP (opcional: guardar en archivo local)

sap_write_source

Escribir fuente con bloqueo automático, transporte y activación

sap_activate

Compilar/activar objetos

sap_syntax_check

Verificación de sintaxis sin activar

Transportes

Herramienta

Descripción

sap_check_lock

Verificar el estado de bloqueo del objeto

sap_list_transports

Listar solicitudes de transporte abiertas

sap_create_transport

Crear una nueva solicitud de transporte

sap_release_transport

Liberar una solicitud de transporte

sap_transport_check

Verificar si el objeto necesita transporte

Creación y eliminación

Herramienta

Descripción

sap_create_program

Crear un nuevo programa ABAP

sap_create_class

Crear una nueva clase ABAP

sap_create_interface

Crear una nueva interfaz ABAP

sap_create_package

Crear un nuevo paquete ABAP (DEVC), local o transportable

sap_delete_object

Eliminar objeto ABAP (requiere confirm='DELETE')

Parámetros, ejemplos y retornos de cada una: docs/MCP_COMMAND_REFERENCE.md


Arquitectura

Cliente MCP  →  servidor MCP (stdio/JSON-RPC)  →  cliente REST ADT  →  SAP /sap/bc/adt/*
src/sap_adt/
├── client.py            # HTTP: autenticação, CSRF, sessões stateful, negociação de media type
├── credential_store.py  # ~/.sap-adt/environments.json + keyring do SO
├── repository.py        # pesquisa, navegação de pacotes, metadados
├── source.py            # leitura/escrita de fonte com bloqueio
├── activation.py        # ativação e verificação de sintaxe
├── transport.py         # transport requests (CTS)
├── ddic_export.py       # DDIC → Markdown
├── cli.py               # comando `sap-adt`
├── models.py            # dataclasses
├── exceptions.py        # hierarquia de exceções
└── mcp_server.py        # servidor MCP com as 25 ferramentas

Dependencia

Finalidad

requests

cliente HTTP de la API REST ADT

mcp

SDK del Model Context Protocol (FastMCP)

lxml

parsing de XML

keyring

credenciales en el administrador del SO


Desarrollo

pip install -e ".[dev]"
python -m pytest tests -q

Las pruebas son offline: no se necesita ningún sistema SAP ni red. Cubren la resolución de URI, los parsers de XML alimentados con respuestas estáticas (incluido el formato de releases antiguos) y el CLI. El CI ejecuta la suite en Linux y Windows, Python 3.10 y 3.13, y verifica que el paquete compila.

Las contribuciones y los informes de problemas son bienvenidos a través de las issues. Al abrir una issue, no pegues hostname, usuario, mandante ni fragmentos de código propietario — describe el comportamiento y, si es posible, incluye la salida de sap_system_info.


Documentación

Documento

Contenido

docs/MCP_COMMAND_REFERENCE.md

Referencia de comandos: parámetros, ejemplos, requisitos previos de SAP y el manual del CLI

docs/PROJECT_DOCUMENTATION.md

Documentación técnica completa (inglés)

docs/PROJECT_DOCUMENTATION_PT-BR.md

Documentación técnica completa (portugués)

AGENTS.md

Reglas de trabajo para el asistente que usa las herramientas


Licencia

Apache-2.0.

Proyecto independiente, sin afiliación, patrocinio ni respaldo de SAP SE. SAP, ABAP y SAP NetWeaver son marcas de SAP SE. La herramienta solo consume la API ADT documentada públicamente, con las credenciales del propio usuario.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    C
    quality
    C
    maintenance
    Facilitates interaction with SAP ABAP systems via ADT APIs, enabling object management, transport handling, and code analysis.
    100
    148
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables AI agents to read, write, activate, and transport ABAP code in SAP systems via ABAP ADT REST API, without needing SAP GUI.
    4
    24

View all related MCP servers

Related MCP Connectors

  • Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

  • Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…

  • Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.

View all MCP Connectors

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/engoetz/sap-adt-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server