ADT MCP Server

Um servidor MCP para ABAP Development Tools (ADT) que expõe várias ferramentas de leitura de repositório ABAP por meio de uma interface padronizada.

Documentação

Servidor ADT MCP

Este repositório fornece um servidor Model Context Protocol (MCP) para ABAP Development Tools (ADT), expondo diversas ferramentas de leitura do repositório ABAP (programa, classe, função, include, interface, estrutura, tabela, where-used, etc.) por meio de uma interface MCP padronizada.

🆕 Agora inclui suporte a SAP BTP (Business Technology Platform) com autenticação JWT e utilitários de service key!

📚 Início Rápido: Consulte QUICK_START.md para instruções imediatas de configuração.

🔌 Conexões de Cliente: Consulte MCP_CLIENT_CONNECTIONS.md para conectar-se ao Cline, Claude Desktop e outros clientes MCP.

📖 Documentação: A documentação completa está disponível na pasta doc/.


Pré-requisitos

  • Python 3.9+
  • pip (o instalador de pacotes Python)
  • Um sistema SAP ABAP em execução com serviços ADT habilitados
  • Um arquivo .env na raiz do projeto com suas configurações de conexão SAP (veja abaixo)

Configuração

  1. Clone o repositório

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

    Observação: O servidor MCP agora pode ser executado a partir de qualquer diretório, não apenas do diretório do projeto. Consulte REMOTE_CONNECTION_GUIDE.md para detalhes.

    Opções de Transporte: O servidor suporta múltiplos protocolos de transporte: STDIO (padrão), SSE e Streamable HTTP.

  2. Crie e ative um ambiente virtual

    python -m venv .venv
    source .venv/bin/activate   # Linux/macOS
    .\.venv\Scripts\activate  # Windows
    
  3. Instale as dependências

    pip install mcp "mcp[cli]"
    

    Em seguida, instale:

    pip install -r requirements.txt
    
  4. Configure as variáveis de ambiente

    Copie o exemplo .env.example para .env e preencha com suas credenciais SAP:

    Para Sistemas On-Premise (Autenticação 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 (Autenticação 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)
    

    💡 Dica: Use os utilitários BTP incluídos para gerar arquivos .env automaticamente a partir de service keys!

🚀 Integração BTP

Este servidor agora inclui suporte abrangente a SAP BTP com:

  • Autenticação por Token JWT para sistemas ABAP BTP
  • Análise e parsing de Service Keys
  • Geração automática de .env a partir de service keys BTP
  • Utilitário CLI para gerenciamento fácil de configuração

Configuração Rápida do BTP

  1. Baixe sua service key no cockpit BTP
  2. Gere o arquivo .env usando o utilitário CLI:
    python btp_env_generator.py --service-key service-key.json --username your-user@company.com --prompt-password
    
  3. Use o arquivo .env gerado em seu projeto

Para detalhes completos da integração BTP, consulte BTP_INTEGRATION_GUIDE.md.

Ferramentas Disponíveis

Ferramentas do Repositório ABAP

  • get_program_source_mcp – Recupera o código-fonte do programa ABAP
  • get_class_source_mcp – Recupera o código-fonte da classe ABAP
  • get_function_group_source_mcp – Recupera o código-fonte do grupo de funções
  • get_function_source_mcp – Recupera o código-fonte do módulo de função
  • get_include_source_mcp – Recupera o código-fonte do include
  • get_interface_source_mcp – Recupera o código-fonte da interface
  • get_structure_source_mcp – Recupera a definição da estrutura
  • get_table_source_mcp – Recupera a definição da tabela
  • get_table_contents_mcp – Busca dados da tabela (máximo de linhas padrão: 100)
  • get_package_structure_mcp – Recupera metadados do pacote
  • get_type_info_mcp – Recupera informações de tipo
  • get_transaction_properties_mcp – Recupera propriedades da transação
  • get_search_objects_mcp – Busca rápida por objetos do repositório
  • get_usage_references_mcp – Recupera referências where-used para qualquer objeto
  • get_cds_source_mcp – Recupera o código-fonte da visão CDS
  • get_metadata_extension_source_mcp – Recupera o código-fonte da extensão de metadados
  • get_sql_query_mcp – Executa consultas SQL freestyle
  • get_enhancements_mcp – Descobre implementações de enhancement

🆕 Ferramentas BTP

  • generate_env_from_service_key_file_mcp – Gera .env a partir do arquivo de service key
  • generate_env_from_service_key_json_mcp – Gera .env a partir do JSON da service key
  • parse_btp_service_key_mcp – Analisa e faz parsing de service keys
  • get_btp_connection_status_mcp – Verifica a configuração BTP atual

Solução de Problemas

Erro "MCP error -32000: Connection closed"

Se você receber este erro ao conectar a partir de outro diretório:

  1. Certifique-se de usar o caminho completo para o servidor:

    python /full/path/to/mcp-adt/mcp_server.py
    
  2. Verifique a configuração do cliente MCP:

    {
      "mcpServers": {
        "adt-server": {
          "command": "python",
          "args": ["/full/path/to/mcp-adt/mcp_server.py"]
        }
      }
    }
    
  3. Execute o teste de conexão:

    python /path/to/mcp-adt/test_remote_connection.py
    
  4. Verifique os logs:

    • O arquivo de log é criado no diretório do projeto: mcp_server.log
    • Verifique se há erros de importação ou configuração

Outros Problemas Comuns

  • ModuleNotFoundError: Certifique-se de que todas as dependências estejam instaladas: pip install -r requirements.txt
  • Problemas com o arquivo .env: O arquivo é pesquisado automaticamente no diretório do projeto
  • Problemas de permissão: No Linux/macOS, você pode precisar de chmod +x mcp_server.py

Para informações detalhadas, consulte REMOTE_CONNECTION_GUIDE.md

Licença

MIT