Deixe o Claude ler, escrever, testar e verificar ABAP nos seus sistemas SAP.

abap-adt-mcp é um servidor Model Context Protocol. Execute-o ao lado do Claude Desktop, do Claude Code ou de qualquer outro host MCP, aponte-o para um ou mais sistemas SAP, e o modelo passa a ter os mesmos endpoints REST do ADT que o Eclipse usa: pesquisar objetos, ler e editar código-fonte, criar ordens de transporte, ativar, executar ABAP Unit e ATC, ler dumps, consultar tabelas.

npx -y abap-adt-mcp Instale em três passos
173 ferramentas, 16 conjuntosS/4HANA Cloud e on-premiseNode.js 22.12+MIT

Instalação em três passos.

Você precisa de Node.js 22.12 ou mais recente, de acesso ao sistema SAP (no S/4HANA Cloud, a função de negócio de desenvolvedor que seu usuário já tem para o Eclipse ADT; on-premise, o serviço /sap/bc/adt ativo na SICF) e de um navegador Chromium para o SSO por navegador. A versão completa, com caminhos do Windows e os logs do host, está no README.

Descreva seus sistemas SAP

Um arquivo, ~/.abap-adt-mcp/systems.json, uma entrada por sistema. A chave é o nome que você usará nos chats. Esta entrada completa de S/4HANA Cloud com SSO por navegador começa somente leitura; remova a linha policy quando estiver pronto para escrever, e o modelo passa a criar, editar e ativar dentro das suas autorizações SAP.

{
  "DEV": {
    "url": "https://myXXXXXX.s4hana.cloud.sap",
    "client": "080",
    "authType": "sso",
    "default": true,
    "policy": { "readOnly": true }
  }
}

Registre o servidor no seu host

No Claude Code é uma linha. O Claude Desktop recebe o JSON em Settings, Developer, Edit Config, depois um reinício. O mesmo mapa funciona no Cursor e no Cline; o VS Code chama-o de servers.

claude mcp add abap-adt-mcp \
  -e SAP_SYSTEMS_FILE=$HOME/.abap-adt-mcp/systems.json \
  -- npx -y abap-adt-mcp
{
  "mcpServers": {
    "abap-adt-mcp": {
      "command": "npx",
      "args": ["-y", "abap-adt-mcp"],
      "env": {
        "SAP_SYSTEMS_FILE": "/Users/me/.abap-adt-mcp/systems.json",
        "MCP_TOOLSETS": "focused"
      }
    }
  }
}

Diga olá

Abra um chat novo. O modelo chama listSystems, login (uma janela do navegador aparece uma vez para SSO), searchObject e getObjectSource. Quando o código-fonte voltar, está pronto.

Liste meus sistemas SAP, faça login no DEV e mostre o código-fonte da classe CL_ABAP_CHAR_UTILITIES.

Se nada aparecer no host, leia o log MCP dele: spawn npx ENOENT significa Node.js ausente; nenhuma janela do navegador significa que nenhum Chromium foi encontrado (SAP_BROWSER_PATH indica um); on-premise, /sap/bc/adt precisa estar ativo na SICF. A lista de solução de problemas tem o resto.

O que pedir ao modelo.

O servidor é uma caixa de ferramentas de onde o modelo escolhe: peça em linguagem natural e ele decide a sequência. As ferramentas de escrita bloqueiam e desbloqueiam sozinhas, activate=true ativa na mesma chamada, e todo erro é JSON com kind, hint e as próximas ferramentas a tentar.

PedidoFerramentas que o modelo usa
"Explique o que o método GET_DATA de ZCL_ORDER_SERVICE faz."searchObject, getMethodSource
"Onde a tabela ZTABLE ainda é usada, e por quais programas?"whereUsed, sourceTextSearch, grepPackage
"Adicione uma verificação de nulo no início de GET_DATA, ative e execute os testes unitários."resolveTransport, syntaxCheckCode, editObjectSource, unitTestRun, objectDiff
"Crie a classe ZCL_HELLO no pacote ZDEMO que imprime Hello World, com um teste unitário."validateNewObject, resolveTransport, createObject, setObjectSource, createTestInclude, unitTestRun
"Execute o ATC no pacote ZFIN e aplique todo quickfix que for seguro."createAtcRun, atcWorklists, atcQuickfixProposals, atcApplyQuickfix, atcSummary
"O que mudou na ordem de transporte DEVK900123? É seguro liberar?"transportDetails, transportUnifiedDiff
"Por que aconteceu o último dump do usuário DEVELOPER? Proponha uma correção."dumps, dumpDetails, getObjectSource
"ZCL_ORDER_SERVICE está pronta para ABAP Cloud? Quais objetos SAP a bloqueiam?"apiReleaseState, createAtcRun
"Selecione as dez linhas mais recentes de ZTABLE onde STATUS = 'X'."runQuery (quando o destino permitir dados)

Seis fluxos prontos também viajam como prompts MCP: create-object, safe-edit, review-transport, fix-atc, clean-core-check, debug-dump. Cada um nomeia as ferramentas em ordem e diz onde para e pergunta.

As salvaguardas vivem no servidor, não no host.

O bloco policy de um destino é avaliado no servidor antes da chamada SAP da ferramenta, independentemente do que o host aprova. As recusas voltam como kind: "policyDenied" nomeando a barreira. Um destino sem policy é totalmente gravável dentro das suas autorizações SAP e não lê dados de tabelas até você permitir.

{ "kind": "policyDenied", "gate": "readOnly", "destination": "PRD", "hint": "PRD é readOnly; a escrita foi recusada antes de qualquer chamada SAP" }

Além disso: segredos ficam em ${env:VAR}, o TLS permanece ligado por destino, toda chamada vai para um log de auditoria com ferramenta, destino, resultado e barreira, e as mensagens de erro passam por redação. Conteúdo vindo do SAP é entrada não confiável; use um host que pergunte antes de chamadas destrutivas.

Chave da policyEfeito
readOnlySó ferramentas de leitura executam. Toda escrita de código, runSnippet, unitTestRun e execuções do ATC são recusadas.
allowedPackagesEscritas só dentro destes padrões de pacote (["Z*", "$*"]); leituras nunca são barradas.
deniedTablesPadrões recusados em tableContents, em todo FROM/JOIN de runQuery, e procurados no ABAP escrito.
allowDataPreviewDesligado salvo indicação. Abre linhas de tabela por nome.
allowFreeSqlDesligado salvo indicação. Abre runQuery; implica a pré-visualização de dados.
deniedToolsNomes, padrões ou toolset:git recusados neste destino; as ferramentas continuam listadas.
allowedTransportsTodo argumento de transporte precisa corresponder; criar ordens é recusado.

Veja funcionar nos problemas que você tem de verdade.

Um dump às três da manhã, vinte e sete achados do ATC numa sexta-feira, uma ordem de transporte que ninguém quer liberar, uma classe que ainda precisa do seu teste, código que tem de sobreviver ao S/4HANA Cloud. Escolha o que mais parece a sua semana.

Seu sistema SAP agora aceita prompts.Hosts, servidor e sistemas em um diagrama, quatro capacidades, a recusa em PRD, a linha de instalação.
Um dump às 03:12.dumps, dumpDetails, a linha, a correção, ativada e testada.
27 achados do ATC em ZFIN.19 quickfixes determinísticos aplicados, isenções pedidas com um aprovador humano.
DEVK900123 pode ser liberada?Diff unificado, um mandante fixo no código, corrigido, testado, liberada só com a sua palavra.
Classe nova. Teste novo. Uma frase.Validar, transporte, criar, ativar, testar; a mesma frase em PRD é recusada.
Vai rodar no S/4HANA Cloud?apiReleaseState classifica cada objeto SAP, nomeia o sucessor, depois a reescrita.

173 ferramentas, 16 conjuntos.

Esquemas de ferramentas custam contexto. MCP_TOOLSETS=focused publica as 114 ferramentas de desenvolvimento do dia a dia; all acrescenta debugger, traces, abapGit, RAP, serviços, refatoração e discovery. A referência por ferramenta, com parâmetros e anotações de leitura/destrutiva, está em docs/TOOLS.md.

  • core6 · destinos, saúde, sessão
  • source16 · ler, escrever, bloquear, diff
  • objects27 · pesquisar, navegar, criar, ativar
  • transports18 · ordens de transporte
  • analysis16 · sintaxe, completação, apiReleaseState, runSnippet
  • tests4 · ABAP Unit
  • atc14 · execuções, quickfixes, isenções
  • data10 · DDIC, tableContents, runQuery
  • runtime3 · feeds, dumps
  • discovery7 · descoberta ADT, detalhes de features
  • refactoring8 · renomear, extrair método, mudar pacote
  • rap8 · geração RAP
  • services4 · serviços de negócio
  • git10 · abapGit
  • debugger13 · breakpoints, pilha, variáveis
  • traces9 · traces de SQL e de runtime

● no preset focused (114 ferramentas). As outras 59 vêm com MCP_TOOLSETS=all.

Este servidor

  • Muitos destinos a partir de um processo, stdio ou HTTP
  • Policies aplicadas no servidor, log de auditoria, redação
  • Lê e pesquisa código, escreve código, bloqueios, dumps, dados, onde-usado, debugger, abapGit
  • Composições como resolveTransport, editObjectSource, grepPackage, apiReleaseState, runSnippet, objectDiff

ADT MCP Server oficial da SAP

  • Vem com o ADT para VS Code e Eclipse sob a chave abap-adt
  • Cria, ativa, testa, verifica e transporta
  • Não lê nem pesquisa código, não escreve código, não bloqueia, não mostra dumps
  • Os dois podem ser registrados lado a lado: chaves e nomes de ferramentas não colidem. docs/ROUTING.md mapeia os nomes.

Os serviços REST do ADT são os que o Eclipse usa e não estão publicados no SAP Business Accelerator Hub; a SAP API Policy os chama de internos. Se a SAP aceita o seu uso é uma pergunta para o seu contato na SAP. docs/API-POLICY.md tem a política seção por seção e uma configuração conservadora.

Outras formas de instalar.

Plugin do Claude Code

O repositório é o seu próprio marketplace de plugins. Dois comandos registram o servidor e carregam as duas skills, fixadas na release com que vêm.

/plugin marketplace add williansaez/abap-adt-mcp
/plugin install abap-adt-mcp@abap-adt-mcp

Contêiner

Construído a partir de node:22-alpine, roda como o usuário sem privilégios node, publicado no GHCR a cada release. O SSO por navegador precisa de um navegador local; destinos basic e oauth funcionam dentro do contêiner.

docker run -i --rm \
  -v "$PWD/systems.json:/config/systems.json:ro" \
  -e SAP_SYSTEMS_FILE=/config/systems.json \
  ghcr.io/williansaez/abap-adt-mcp:latest

Versão fixada

npx -y abap-adt-mcp busca a release mais nova a cada início. Para um rollout controlado, fixe-a e verifique a atestação de proveniência que a publicação confiável anexa.

npx -y abap-adt-mcp@2.7.0
npm audit signatures

A partir do código

Um systems.json ao lado do checkout é lido automaticamente. Aponte o host para dist/index.js.

git clone https://github.com/williansaez/abap-adt-mcp.git
cd abap-adt-mcp && npm ci && npm run build

Modos de autenticação: sso (usuários nomeados do S/4HANA Cloud, uma janela do navegador uma vez), sso2 (on-premise sem navegador por um provedor local de tíquete confiável), basic (usuários on-premise e Communication Users), oauth (clientes não assistidos). Detalhes em docs/AUTH.md.

A um prompt da sua primeira ativação.

Node.js, um systems.json, uma linha no seu host. O primeiro chat já lê uma classe; as salvaguardas decidem o que ele pode escrever.

npx -y abap-adt-mcp Ler o README no GitHub