ABAP-ADT-API MCP-Server

Integrations

  • Allows interaction with SAP systems via ABAP Development Tools (ADT) APIs, providing tools for managing ABAP objects, handling transport requests, performing code analysis, and modifying source code in SAP systems.

AVISO LEGAL: ¡Este servidor aún está en fase experimental! ¡Úselo con precaución!

Servidor MCP de la API ABAP-ADT

Descripción

El servidor MCP mcp-abap-abap-adt-api es un servidor de Protocolo de Contexto de Modelo (MCP) diseñado para facilitar la comunicación fluida entre sistemas ABAP y clientes MCP. Es un contenedor para abap-adt-api y proporciona un conjunto de herramientas y recursos para gestionar objetos ABAP, gestionar solicitudes de transporte, realizar análisis de código y más, mejorando la eficiencia y la eficacia de los flujos de trabajo de desarrollo ABAP.

Características

  • Autenticación : autentiquese de forma segura con los sistemas ABAP utilizando la herramienta login .
  • Gestión de objetos : cree, lea, actualice y elimine objetos ABAP sin problemas.
  • Manejo de transporte : administre solicitudes de transporte con herramientas como createTransport y transportInfo .
  • Análisis de código : realiza comprobaciones de sintaxis y recupera sugerencias de finalización de código.
  • Extensibilidad : amplíe fácilmente el servidor con herramientas y recursos adicionales según sea necesario.
  • Gestión de sesiones : gestione el almacenamiento en caché y la finalización de las sesiones mediante dropSession y logout .

Instalación

Instalación mediante herrería

Para instalar ABAP-ADT-API MCP-Server para Claude Desktop automáticamente a través de Smithery :

npx -y @smithery/cli install @mario-andreschak/mcp-abap-abap-adt-api --client claude

Prerrequisitos

  • Node.js : Asegúrate de tener Node.js instalado. Puedes descargarlo desde aquí .
  • Acceso al sistema ABAP : Credenciales y URL para acceder al sistema ABAP.

Pasos

  1. Clonar el repositorio
    git clone https://github.com/mario-andreschak/mcp-abap-abap-adt-api.git cd mcp-abap-abap-adt-api
  2. Instalar dependencias
    npm install
  3. Configurar variables de entornoSe proporciona un archivo .env.example en el directorio raíz como plantilla para las variables de entorno requeridas. Para configurar su entorno:a. Copie el archivo .env.example y cámbiele el nombre a .env :
    cp .env.example .env
    b. Abra el archivo .env y reemplace los valores del marcador de posición con los detalles reales de su conexión a SAP:
    SAP_URL=https://your-sap-server.com:44300 SAP_USER=YOUR_SAP_USERNAME SAP_PASSWORD=YOUR_SAP_PASSWORD SAP_CLIENT=YOUR_SAP_CLIENT SAP_LANGUAGE=YOUR_SAP_LANGUAGE
    Nota: Las variables SAP_CLIENT y SAP_LANGUAGE son opcionales pero recomendadas.Si utiliza certificados autofirmados, también puede configurar:
    NODE_TLS_REJECT_UNAUTHORIZED="0"
    IMPORTANTE: Nunca envíes tu archivo .env al control de versiones. Ya está incluido en .gitignore para evitar envíos accidentales.
  4. Construir el proyecto
    npm run build
  5. Ejecutar el servidor
    npm run start
    (o alternativamente integrar el servidor MCP en VSCode)

Uso

Una vez que el servidor esté en funcionamiento, puede interactuar con él mediante clientes MCP o herramientas compatibles con el Protocolo de Contexto de Modelo (p. ej., Cline ). Para integrar el servidor MCP con Cline, utilice la siguiente configuración de MCP:

"mcp-abap-abap-adt-api": { "command": "node", "args": [ "PATH_TO_YOUR/mcp-abap-abap-adt-api/dist/index.js" ], "disabled": true, "autoApprove": [ ] },

Instrucciones personalizadas

Utilice esta instrucción personalizada para explicar la herramienta a su modelo:

## mcp-abap-abap-adt-api Server This server provides tools for interacting with an SAP system via ADT (ABAP Development Tools) APIs. It allows you to retrieve information about ABAP objects, modify source code, and manage transports. **Key Tools and Usage:** * **`searchObject`:** Finds ABAP objects based on a query string (e.g., class name). * `query`: (string, required) The search term. * Returns the object's URI. Example: `/sap/bc/adt/oo/classes/zcl_invoice_xml_gen_model` * **`transportInfo`:** Retrieves transport information for a given object. * `objSourceUrl`: (string, required) The object's URI (obtained from `searchObject`). * Returns transport details, including the transport request number (`TRKORR` or `transportInfo.LOCKS.HEADER.TRKORR` in the JSON response). * **`lock`:** Locks an ABAP object for editing. * `objectUrl`: (string, required) The object's URI. * Returns a `lockHandle`, which is required for subsequent modifications. * **`unLock`:** Unlocks a previously locked ABAP object. * `objectUrl`: (string, required) The object's URI. * `lockHandle`: (string, required) The lock handle obtained from the `lock` operation. * **`setObjectSource`:** Modifies the source code of an ABAP object. * `objectSourceUrl`: (string, required) The object's URI *with the suffix `/source/main`*. Example: `/sap/bc/adt/oo/classes/zcl_invoice_xml_gen_model/source/main` * `lockHandle`: (string, required) The lock handle obtained from the `lock` operation. * `source`: (string, required) The complete, modified ABAP source code. * `transport`: (string, optional) The transport request number. * **`syntaxCheckCode`:** Performs a syntax check on a given ABAP source code. * `code`: (string, required) The ABAP source code to check. * `url`: (string, optional) The URL of the object. * `mainUrl`: (string, optional) The main URL. * `mainProgram`: (string, optional) The main program. * `version`: (string, optional) The version. * Returns syntax check results, including any errors. * **`activate`:** Activates an ABAP object. (See notes below on activation/unlocking.) * `object`: The object to be activated. * **`getObjectSource`:** Retrieves the source code of an ABAP object. * `objectSourceUrl`: (string, required) The object's URI *with the suffix `/source/main`*. **Workflow for Modifying ABAP Code:** 1. **Find the object URI:** Use `searchObject`. 2. **Read the original source code:** Use `getObjectSource` (with the `/source/main` suffix). 3. **Clone and Modify the source code locally:** (e.g., `write_to_file` for creating a local copy, and using `read_file`, `replace_in_file` for modifying this local copy). 4. **Get transport information:** Use `transportInfo`. 5. **Lock the object:** Use `lock`. 6. **Set the modified source code:** Use `setObjectSource` (with the `/source/main` suffix). 7. **Perform a syntax check:** Use `syntaxCheckCode`. 8. **Activate** the object, Use `activate`.. 9. **unLock the object:** Use `unLock`. **Important Notes:** * **File Handling:** SAP is completly de-coupled from the local file system. Reading source code will only return the code as tool result - it has no effect on file. Files are not synchronized with SAP but merely a local copy for our reference. FYI: It's not strictly necessary for you to create local copies of source codes, as they have no effect on SAP, but it helps us track changes. * **File Handling:** The local filenames you will use will not contain any paths, but only a filename! It's preferable to use a pattern like "[ObjectName].[ObjectType].abap". (e.g., SAPMV45A.prog.abap for a ABAP Program SAPMV45A, CL_IXML.clas.abap for a Class CL_IXML) * **URL Suffix:** Remember to add `/source/main` to the object URI when using `setObjectSource` and `getObjectSource`. * **Transport Request:** Obtain the transport request number (e.g., from `transportInfo` or from the user) and include it in relevant operations. * **Lock Handle:** The `lockHandle` obtained from the `lock` operation is crucial for `setObjectSource` and `unLock`. Ensure you are using a valid `lockHandle`. If a lock fails, you may need to re-acquire the lock. Locks can expire or be released by other users. * **Activation/Unlocking Order:** The exact order of `activate` and `unLock` operations might need clarification. Refer to the tool descriptions or ask the user. It appears `activate` can be used without unlocking first. * **Error Handling:** The tools return JSON responses. Check for error messages within these responses. ## Efficient Database Access SAP systems contain vast amounts of data. It's crucial to write ABAP code that accesses the database efficiently to minimize performance impact and network traffic. Avoid selecting entire tables or using broad `WHERE` clauses when you only need specific data. * **Use `WHERE` clauses:** Always use `WHERE` clauses in your `SELECT` statements to filter the data retrieved from the database. Select only the specific rows you need. * **`UP TO 1 ROWS`:** If you only need a single record, use the `SELECT SINGLE` statement, if you can guarantee that you can provide ALL the key fields for the `SELECT SINGLE` statement. Otherwise, use the `SELECT` statement with the `UP TO 1 ROWS` addition. This tells the database to stop searching after finding the first matching record, improving performance. Example: ```abap SELECT vgbel FROM vbrp WHERE vbeln = @me->lv_vbeln INTO @DATA(lv_vgbel) UP TO 1 ROWS. EXIT. " Exit any loop after this. ENDSELECT. ``` ## Checking Table and Structure Definitions When working with ABAP objects, you may encounter errors related to unknown field names or incorrect table usage. You can use the following tools to inspect table and structure definitions: * **`GetTable`:** Use this tool to retrieve the structure of an ABAP Dictionary table, including its field names and data types. This is helpful for verifying the correct fields to use in your `SELECT` statements. * If you need to inspect an include structure, you may need to use `searchObject` to find the include and then use `GetTypeInfo` or `GetStructure`. You may get a 404 error and try again with `GetStructure` * **`GetStructure`:** Use this tool to retrieve the structure of an ABAP Dictionary structure, including its field names and data types. This is helpful for verifying the correct fields to use in your `SELECT` statements. * If you need to inspect an include structure, you may need to use `searchObject` to find the include and then use `GetTypeInfo` or `GetStructure`.

Contribuyendo

¡Agradecemos sus contribuciones! Siga estos pasos para contribuir:

  1. Bifurcar el repositorio
  2. Crear una nueva rama
    git checkout -b feature/your-feature-name
  3. Confirme sus cambios
    git commit -m "Add some feature"
  4. Empujar hacia la rama
    git push origin feature/your-feature-name
  5. Abrir una solicitud de extracción

Licencia

Este proyecto está licenciado bajo la licencia MIT .

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Un servidor de protocolo de contexto de modelo que facilita la comunicación entre sistemas ABAP y clientes MCP, proporcionando herramientas para administrar objetos ABAP, manejar solicitudes de transporte y realizar análisis de código para mejorar los flujos de trabajo de desarrollo de ABAP.

  1. Description
    1. Features
      1. Installation
        1. Installing via Smithery
        2. Prerequisites
        3. Steps
      2. Usage
        1. Custom Instruction
          1. Contributing
            1. License

              Related MCP Servers

              • -
                security
                A
                license
                -
                quality
                MCP Server simplifies the implementation of the Model Context Protocol by providing a user-friendly API to create custom tools and manage server workflows efficiently.
                Last updated -
                4
                3
                TypeScript
                MIT License
              • -
                security
                F
                license
                -
                quality
                A Model Context Protocol server built with mcp-framework that allows users to create and manage custom tools for processing data, integrating with the Claude Desktop via CLI.
                Last updated -
                48
                4
                TypeScript
                • Apple
              • A
                security
                A
                license
                A
                quality
                A server that bridges the Model Context Protocol (MCP) with SAP ABAP systems, allowing tools like Cline to retrieve ABAP source code, table structures, and other development artifacts.
                Last updated -
                13
                5
                TypeScript
                MIT License
                • Apple
                • Linux
              • -
                security
                -
                license
                -
                quality
                A specialized server that helps users create new Model Context Protocol (MCP) servers by providing tools and templates for scaffolding projects with various capabilities.
                Last updated -
                1
                TypeScript

              View all related MCP servers

              ID: p1uxnf0htn