sap-adt-mcp
Provides tools for interacting with SAP's ADT (ABAP Development Tools) REST API, enabling search and navigation of repository objects, reading and writing ABAP source code, activation and syntax checking, transport request management, object creation/deletion, and DDIC metadata export as Markdown.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sap-adt-mcpsearch for all classes with ZCL_* in package ZDEV"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
sap-adt-mcp
MCP server and Python client for the SAP ADT (ABAP Development Tools) REST API. It gives your AI assistant the same operations that Eclipse ADT uses — searching the repository, reading and writing source code, activating, checking syntax, and working with transport requests — by talking to the same /sap/bc/adt/* endpoints.
Full technical documentation also in English: docs/PROJECT_DOCUMENTATION.md.
What you can do
Search and browse — objects by wildcard (
Z*,ZCL_*), package contents (including namespaces like/ACME/PKG), and metadataRead and write source — with locking, transport assignment, and activation in a single call; optionally saving/reading local files
Activate and check syntax — with error messages by line and column
Transports — list, create, release, and check whether an object needs one
Create objects — programs, classes, interfaces, and packages (local or transportable)
Export DDIC as Markdown — tables, data elements, domains, and views become readable context for the AI
Work on older releases — media types are negotiated per endpoint and
sap_system_infotells you what that system supports
Credentials are stored in the operating system credential manager; no password is ever written to a project file.
Related MCP server: mcp-abap-abap-adt-api
Requirements
Requirement | Minimum | Check |
Python | 3.10+ |
|
SAP system | NetWeaver 7.31 SP04+ with the ICF node |
|
MCP client | Cursor, Claude Code, Claude Desktop, VS Code, or another with MCP support | — |
Network | access to the SAP host and port | — |
SAP-side prerequisites (ICF services, roles, and authorization objects) are detailed in section 6 of the command reference.
Installation
Directly from GitHub (recommended)
pip install git+https://github.com/engoetz/sap-adt-mcpThis registers two commands on your PATH:
Command | Purpose |
| manage connections from the terminal (password in hidden prompt) |
| run the MCP server (stdio) |
To run without permanently installing anything, using uv:
uvx --from git+https://github.com/engoetz/sap-adt-mcp sap-adt-mcpFrom source code (for development)
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 -qSetting up in the MCP client
After installation, the sap-adt-mcp command is already on the PATH — no absolute path needed:
{
"mcpServers": {
"sap-adt": {
"command": "sap-adt-mcp",
"args": []
}
}
}Where to place this block:
Client | File |
Cursor (global) |
|
Cursor (per project) |
|
Claude Code |
|
Claude Desktop |
|
If you prefer to run directly from source without installing the package, replace it with
"command": "python", "args": ["/caminho/para/sap-adt-mcp/scripts/run_mcp.py"].
Verify
In Cursor, the server appears as user-sap-adt under Settings > MCP. To test in any client, call
sap_list_environments() — it should return the list of saved connections.
Problem | Solution |
Server does not appear | Check the configuration file path and reopen the client |
Server in red | Run |
| The package was installed in a different virtual environment |
| Run |
| Run |
Credentials
Via terminal (recommended)
sap-adt add DEVThe command asks for host, port, client, user, language, and HTTPS (Enter accepts the suggested value) and, finally, the password — entered twice, with no echo on screen. This way it doesn't end up in the shell history or the AI conversation history.
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 senhaThere is no
--passwordparameter: by design, the password is only entered via prompt. For automation, theSAP_PASSWORDenvironment variable is accepted.
The password goes to the OS keyring (Windows Credential Manager, macOS Keychain, Linux Secret Service).
The other parameters are stored in ~/.sap-adt/environments.json, outside the project.
Via chat
sap_save_password(system_id="DEV", host="...", port=8000, client="100", user="username", password="...")
does the same thing — but the password stays in the conversation log. Prefer the terminal.
First use
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"
)Outside the MCP client, sap-adt test DEV performs the same diagnostics from the terminal.
Cross-release compatibility
Older systems (ECC, NetWeaver 7.3x) expose a subset of ADT and don't always understand the same media type versions. The client handles this on its own:
Negotiated media types per endpoint, from newest to oldest, remembering what worked
Discovery with fallbacks when
/sap/bc/adt/discoveryis not active in SICFTransport sent in both forms (
corrNrin the query andsap-transportrequestheader)sap_system_infoprobes the endpoints and tells you which tools won't work there
Details in section 6.7 of the reference.
MCP tools (25)
Connection and credentials
Tool | Description |
| Authenticate against the SAP system (supports saved environments) |
| Close the current connection (allows switching systems) |
| Diagnostics: which ADT endpoints the system supports |
| List available ADT services |
| Store credentials in the OS credential manager |
| Remove saved credentials |
| List saved SAP environments |
Repository
Tool | Description |
| Search ABAP objects (CLAS, PROG, INTF, FUGR, TABL) |
| List package contents (supports namespaces) |
| Get details of an object (name, type, package, owner) |
| Export DDIC metadata as Markdown |
Source code
Tool | Description |
| Read ABAP source code (optional: save to a local file) |
| Write source with automatic locking, transport, and activation |
| Compile/activate objects |
| Syntax check without activating |
Transports
Tool | Description |
| Check object lock status |
| List open transport requests |
| Create a new transport request |
| Release a transport request |
| Check whether an object requires a transport |
Creation and deletion
Tool | Description |
| Create a new ABAP program |
| Create a new ABAP class |
| Create a new ABAP interface |
| Create a new ABAP package (DEVC), local or transportable |
| Delete ABAP object (requires |
Parameters, examples, and return values for each one: docs/MCP_COMMAND_REFERENCE.md
Architecture
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 ferramentasDependency | Purpose |
| HTTP client for the ADT REST API |
| Model Context Protocol SDK (FastMCP) |
| XML parsing |
| credentials in the OS credential manager |
Development
pip install -e ".[dev]"
python -m pytest tests -qThe tests are offline: no SAP system and no network are required. They cover URI resolution, the XML parsers fed with static responses (including the format from older releases), and the CLI. CI runs the suite on Linux and Windows, Python 3.10 and 3.13, and verifies that the package builds.
Contributions and bug reports are welcome via issues. When
opening an issue, do not paste hostnames, usernames, clients, or proprietary code snippets — describe the
behavior and, if possible, include the output of sap_system_info.
Documentation
Document | Content |
Command reference: parameters, examples, SAP prerequisites, and the CLI manual | |
Complete technical documentation (English) | |
Complete technical documentation (Portuguese) | |
Working rules for the assistant that uses the tools |
License
Independent project, with no affiliation, sponsorship, or endorsement from SAP SE. SAP, ABAP, and SAP NetWeaver are trademarks of SAP SE. The tool only consumes the publicly documented ADT API, using the user's own credentials.
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