sap-adt-mcp
sap-adt-mcp
Servidor MCP e cliente Python para a API REST do SAP ADT (ABAP Development Tools). Dá ao seu
assistente de IA as mesmas operações que o Eclipse ADT usa — pesquisar o repositório, ler e gravar
código-fonte, ativar, verificar sintaxe e trabalhar com transport requests — falando com os mesmos
endpoints /sap/bc/adt/*.
Documentação técnica completa também em inglês: docs/PROJECT_DOCUMENTATION.md.
O que dá para fazer
Pesquisar e navegar — objetos por curinga (
Z*,ZCL_*), conteúdo de pacotes (inclusive com namespace/ACME/PKG) e metadadosLer e gravar fonte — com bloqueio, atribuição de transport e ativação em uma única chamada; opcionalmente salvando/lendo arquivos locais
Ativar e verificar sintaxe — com mensagens de erro por linha e coluna
Transports — listar, criar, liberar e checar se um objeto precisa de um
Criar objetos — programas, classes, interfaces e pacotes (locais ou transportáveis)
Exportar DDIC em Markdown — tabelas, elementos de dados, domínios e views viram contexto legível para a IA
Funcionar em releases antigas — os media types são negociados por endpoint e o
sap_system_infodiz o que aquele sistema suporta
As credenciais ficam no gerenciador de credenciais do sistema operacional; nenhuma senha é gravada em arquivo do projeto.
Related MCP server: MCP-ADT
Requisitos
Requisito | Mínimo | Verificação |
Python | 3.10+ |
|
Sistema SAP | NetWeaver 7.31 SP04+ com o nó ICF |
|
Cliente MCP | Cursor, Claude Code, Claude Desktop, VS Code ou outro com suporte a MCP | — |
Rede | acesso ao host e porta do SAP | — |
Pré-requisitos do lado SAP (serviços ICF, roles e objetos de autorização) estão detalhados na seção 6 da referência de comandos.
Instalação
Direto do GitHub (recomendada)
pip install git+https://github.com/engoetz/sap-adt-mcpIsso registra dois comandos no PATH:
Comando | Para quê |
| gerenciar conexões pelo terminal (senha em prompt oculto) |
| executar o servidor MCP (stdio) |
Sem instalar nada permanentemente, com uv:
uvx --from git+https://github.com/engoetz/sap-adt-mcp sap-adt-mcpA partir do código-fonte (para desenvolver)
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 -qConfigurar no cliente MCP
Depois da instalação, o comando sap-adt-mcp já está no PATH — não é preciso caminho absoluto:
{
"mcpServers": {
"sap-adt": {
"command": "sap-adt-mcp",
"args": []
}
}
}Onde colocar esse bloco:
Cliente | Arquivo |
Cursor (global) |
|
Cursor (por projeto) |
|
Claude Code |
|
Claude Desktop |
|
Se preferir rodar direto do código-fonte, sem instalar o pacote, troque por
"command": "python", "args": ["/caminho/para/sap-adt-mcp/scripts/run_mcp.py"].
Verificar
No Cursor, o servidor aparece como user-sap-adt em Settings > MCP. Para testar em qualquer
cliente, peça sap_list_environments() — deve devolver a lista de conexões salvas.
Problema | Solução |
Servidor não aparece | Confira o caminho do arquivo de configuração e reabra o cliente |
Servidor em vermelho | Rode |
| O pacote foi instalado em outro ambiente virtual |
| Rode |
| Rode |
Credenciais
Pelo terminal (recomendado)
sap-adt add DEVO comando pergunta host, porta, mandante, usuário, idioma e HTTPS (Enter aceita o valor sugerido) e, por último, a senha — digitada duas vezes, sem eco na tela. Assim ela não entra no histórico do shell nem no histórico da conversa com a 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 senhaNão existe parâmetro
--password: por definição, a senha só entra por prompt. Para automação, a variávelSAP_PASSWORDé aceita.
A senha vai para o keyring do SO (Windows Credential Manager, macOS Keychain, Linux Secret Service).
Os demais parâmetros ficam em ~/.sap-adt/environments.json, fora do projeto.
Pelo chat
sap_save_password(system_id="DEV", host="...", port=8000, client="100", user="username", password="...")
faz o mesmo — mas a senha fica registrada na conversa. Prefira o terminal.
Primeiro 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"
)Fora do cliente MCP, sap-adt test DEV faz o mesmo diagnóstico pelo terminal.
Compatibilidade entre releases
Sistemas mais antigos (ECC, NetWeaver 7.3x) expõem um subconjunto do ADT e nem sempre entendem as mesmas versões de media type. O cliente lida com isso sozinho:
Media types negociados por endpoint, do mais novo ao mais antigo, memorizando o que funcionou
Discovery com alternativas quando
/sap/bc/adt/discoverynão está ativo no SICFTransport enviado nas duas formas (
corrNrna query e headersap-transportrequest)sap_system_infosonda os endpoints e diz quais ferramentas não vão funcionar ali
Detalhes na seção 6.7 da referência.
Ferramentas MCP (25)
Conexão e credenciais
Ferramenta | Descrição |
| Autenticar no sistema SAP (suporta ambientes salvos) |
| Encerrar a conexão atual (permite trocar de sistema) |
| Diagnóstico: quais endpoints ADT o sistema suporta |
| Listar serviços ADT disponíveis |
| Armazenar credenciais no gerenciador de credenciais do SO |
| Remover credenciais salvas |
| Listar ambientes SAP salvos |
Repositório
Ferramenta | Descrição |
| Pesquisar objetos ABAP (CLAS, PROG, INTF, FUGR, TABL) |
| Listar conteúdo de pacotes (suporta namespaces) |
| Obter detalhes de um objeto (nome, tipo, pacote, responsável) |
| Exportar metadados DDIC como Markdown |
Código-fonte
Ferramenta | Descrição |
| Ler código-fonte ABAP (opcional: salvar em arquivo local) |
| Gravar fonte com bloqueio automático, transport e ativação |
| Compilar/ativar objetos |
| Verificação de sintaxe sem ativar |
Transports
Ferramenta | Descrição |
| Verificar status de bloqueio do objeto |
| Listar transport requests abertos |
| Criar novo transport request |
| Liberar um transport request |
| Verificar se objeto necessita de transport |
Criação e exclusão
Ferramenta | Descrição |
| Criar novo programa ABAP |
| Criar nova classe ABAP |
| Criar nova interface ABAP |
| Criar novo pacote ABAP (DEVC), local ou transportável |
| Excluir objeto ABAP (requer |
Parâmetros, exemplos e retornos de cada uma: docs/MCP_COMMAND_REFERENCE.md
Arquitetura
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 ferramentasDependência | Finalidade |
| cliente HTTP da API REST ADT |
| SDK do Model Context Protocol (FastMCP) |
| parsing de XML |
| credenciais no gerenciador do SO |
Desenvolvimento
pip install -e ".[dev]"
python -m pytest tests -qOs testes são offline: nenhum sistema SAP e nenhuma rede são necessários. Eles cobrem resolução de URI, os parsers de XML alimentados com respostas estáticas (incluindo o formato de releases antigas) e o CLI. O CI roda a suíte em Linux e Windows, Python 3.10 e 3.13, e verifica que o pacote constrói.
Contribuições e relatos de problema são bem-vindos pelas
issues. Ao abrir uma issue, não cole hostname,
usuário, mandante ou trechos de código proprietário — descreva o comportamento e, se possível,
inclua a saída de sap_system_info.
Documentação
Documento | Conteúdo |
Referência de comandos: parâmetros, exemplos, pré-requisitos SAP e o manual do CLI | |
Documentação técnica completa (inglês) | |
Documentação técnica completa (português) | |
Regras de trabalho para o assistente que usa as ferramentas |
Licença
Projeto independente, sem afiliação, patrocínio ou endosso da SAP SE. SAP, ABAP e SAP NetWeaver são marcas da SAP SE. A ferramenta apenas consome a API ADT publicamente documentada, com as credenciais do próprio usuário.
This server cannot be deployed
Maintenance
Related MCP Connectors
Read and write KukGit repositories, files, issues and pull requests from an AI assistant.
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…
Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to access SAP ADT APIs for reading, writing, debugging, deploying, and testing ABAP code through natural language or DSL automation.518MIT
- AlicenseCqualityDmaintenanceFacilitates interaction with SAP ABAP systems via ADT APIs, enabling object management, transport handling, and code analysis.100171 npmMIT
- AlicenseAqualityDmaintenanceEnables AI agents to read, write, activate, and transport ABAP code in SAP systems via ABAP ADT REST API, without needing SAP GUI.24541 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to perform ABAP Development Tools operations on SAP ERP (ECC and S/4HANA) systems, including source code editing, object activation, syntax checks, and ABAP unit tests.8 npmMIT