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-abap-abap-adt-api
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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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.448MIT
- AlicenseCqualityCmaintenanceEnables interaction with SAP ABAP systems through ADT APIs, allowing management of ABAP objects, transport requests, and code analysis via natural language.100148MIT
- AlicenseCqualityCmaintenanceFacilitates interaction with SAP ABAP systems via ADT APIs, enabling object management, transport handling, and code analysis.100148MIT
- FlicenseAqualityCmaintenanceEnables AI agents to read, write, activate, and transport ABAP code in SAP systems via ABAP ADT REST API, without needing SAP GUI.424
Related MCP Connectors
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…
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/engoetz/sap-adt-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server