ADT MCP Server

Un servidor MCP para ABAP Development Tools (ADT) que expone varias herramientas de lectura del repositorio ABAP a través de una interfaz estandarizada.

Documentación

Servidor ADT MCP

Este repositorio proporciona un servidor de Protocolo de Contexto de Modelo (MCP) para Herramientas de Desarrollo ABAP (ADT), exponiendo varias herramientas de lectura del repositorio ABAP (programa, clase, función, include, interfaz, estructura, tabla, where-used, etc.) a través de una interfaz MCP estandarizada.

🆕 ¡Ahora incluye soporte para SAP BTP (Plataforma de Tecnología de Negocios) con autenticación JWT y utilidades de claves de servicio!

📚 Inicio rápido: Consulte QUICK_START.md para instrucciones de configuración inmediatas.

🔌 Conexiones de clientes: Consulte MCP_CLIENT_CONNECTIONS.md para conectarse a Cline, Claude Desktop y otros clientes MCP.

📖 Documentación: La documentación completa está disponible en la carpeta doc/.


Requisitos previos

  • Python 3.9+
  • pip (el instalador de paquetes de Python)
  • Un sistema SAP ABAP en ejecución con servicios ADT habilitados
  • Un archivo .env en la raíz del proyecto con su configuración de conexión SAP (ver más abajo)

Configuración

  1. Clonar el repositorio

    git clone https://github.com/<your-org>/<your-repo>.git
    cd <your-repo>
    

    Nota: El servidor MCP ahora puede ejecutarse desde cualquier directorio, no solo desde el directorio del proyecto. Consulte REMOTE_CONNECTION_GUIDE.md para más detalles.

    Opciones de transporte: El servidor admite múltiples protocolos de transporte: STDIO (predeterminado), SSE y HTTP Streamable.

  2. Crear y activar un entorno virtual

    python -m venv .venv
    source .venv/bin/activate   # Linux/macOS
    .\.venv\Scripts\activate  # Windows
    
  3. Instalar dependencias

    pip install mcp "mcp[cli]"
    

    Luego instale:

    pip install -r requirements.txt
    
  4. Configurar variables de entorno

    Copie el ejemplo .env.example a .env y complete sus credenciales SAP:

    Para sistemas On-Premise (Autenticación básica)

    SAP_AUTH_TYPE=basic
    SAP_URL=https://my.sap.system:443
    SAP_CLIENT=100
    SAP_USER=YOUR_USER
    SAP_PASS=YOUR_PASS
    SAP_VERIFY_SSL=true
    
    # Optional timeout configuration (in seconds)
    SAP_TIMEOUT_DEFAULT=45                 # Default timeout (45 seconds)
    SAP_TIMEOUT_CSRF=15                    # CSRF token timeout (15 seconds)
    SAP_TIMEOUT_LONG=60                    # Long operations timeout (60 seconds)
    

    Para sistemas BTP (Autenticación JWT)

    SAP_AUTH_TYPE=jwt
    SAP_URL=https://your-system.abap.region.hana.ondemand.com
    SAP_JWT_TOKEN=eyJhbGciOiJSUzI1NiIsImp...
    SAP_VERIFY_SSL=true
    
    # Optional timeout configuration (in seconds)
    SAP_TIMEOUT_DEFAULT=45                 # Default timeout (45 seconds)
    SAP_TIMEOUT_CSRF=15                    # CSRF token timeout (15 seconds)
    SAP_TIMEOUT_LONG=60                    # Long operations timeout (60 seconds)
    

    💡 Consejo: ¡Use las utilidades BTP incluidas para generar archivos .env automáticamente a partir de claves de servicio!

🚀 Integración BTP

Este servidor ahora incluye soporte integral para SAP BTP con:

  • Autenticación de token JWT para sistemas ABAP BTP
  • Análisis de claves de servicio y análisis
  • Generación automática de .env a partir de claves de servicio BTP
  • Utilidad CLI para una fácil gestión de configuración

Configuración rápida de BTP

  1. Descargue su clave de servicio desde el cockpit de BTP
  2. Genere el archivo .env usando la utilidad CLI:
    python btp_env_generator.py --service-key service-key.json --username your-user@company.com --prompt-password
    
  3. Use el archivo .env generado en su proyecto

Para detalles completos de integración BTP, consulte BTP_INTEGRATION_GUIDE.md.

Herramientas disponibles

Herramientas del repositorio ABAP

  • get_program_source_mcp – Recuperar código fuente de programa ABAP
  • get_class_source_mcp – Recuperar código fuente de clase ABAP
  • get_function_group_source_mcp – Recuperar código fuente de grupo de funciones
  • get_function_source_mcp – Recuperar código fuente de módulo de funciones
  • get_include_source_mcp – Recuperar código fuente de include
  • get_interface_source_mcp – Recuperar código fuente de interfaz
  • get_structure_source_mcp – Recuperar definición de estructura
  • get_table_source_mcp – Recuperar definición de tabla
  • get_table_contents_mcp – Obtener datos de tabla (máximo de filas predeterminado 100)
  • get_package_structure_mcp – Recuperar metadatos de paquete
  • get_type_info_mcp – Recuperar información de tipo
  • get_transaction_properties_mcp – Recuperar propiedades de transacción
  • get_search_objects_mcp – Búsqueda rápida de objetos del repositorio
  • get_usage_references_mcp – Recuperar referencias where-used para cualquier objeto
  • get_cds_source_mcp – Recuperar código fuente de vista CDS
  • get_metadata_extension_source_mcp – Recuperar código fuente de extensión de metadatos
  • get_sql_query_mcp – Ejecutar consultas SQL de estilo libre
  • get_enhancements_mcp – Descubrir implementaciones de mejoras

🆕 Herramientas BTP

  • generate_env_from_service_key_file_mcp – Generar .env desde archivo de clave de servicio
  • generate_env_from_service_key_json_mcp – Generar .env desde JSON de clave de servicio
  • parse_btp_service_key_mcp – Analizar y examinar claves de servicio
  • get_btp_connection_status_mcp – Verificar configuración BTP actual

Solución de problemas

Error "MCP error -32000: Connection closed"

Si recibe este error al conectarse desde otro directorio:

  1. Asegúrese de usar la ruta completa al servidor:

    python /full/path/to/mcp-adt/mcp_server.py
    
  2. Verifique la configuración del cliente MCP:

    {
      "mcpServers": {
        "adt-server": {
          "command": "python",
          "args": ["/full/path/to/mcp-adt/mcp_server.py"]
        }
      }
    }
    
  3. Ejecute la prueba de conexión:

    python /path/to/mcp-adt/test_remote_connection.py
    
  4. Revise los registros:

    • El archivo de registro se crea en el directorio del proyecto: mcp_server.log
    • Verifique si hay errores de importación o configuración

Otros problemas comunes

  • ModuleNotFoundError: Asegúrese de que todas las dependencias estén instaladas: pip install -r requirements.txt
  • Problemas con el archivo .env: El archivo se busca automáticamente en el directorio del proyecto
  • Problemas de permisos: En Linux/macOS puede necesitar chmod +x mcp_server.py

Para información detallada consulte REMOTE_CONNECTION_GUIDE.md

Licencia

MIT