get_program_source_mcpLABSCO SUMMARY
Where-used is the tool that earns this its place.
Reading a program's source is convenient; finding every object that references a table before you change it is the thing you cannot do any other way outside the IDE. Everything is read-only, which is the right shape for a system where a wrong write is a production incident. The BTP utilities are a small kindness — a service key becomes a working configuration without hand-copying fields.
What it is
A server over ABAP Development Tools. It reads the repository of a running SAP system: source for every object type, table definitions and contents, where-used lists, enhancement implementations, and freestyle SQL. On-premise systems authenticate with a username and password; BTP systems use a JWT.
What you get
- get_program_source_mcp, get_class_source_mcp, get_include_source_mcp and get_interface_source_mcp
- get_function_group_source_mcp and get_function_source_mcp for function groups and modules
- get_structure_source_mcp, get_table_source_mcp and get_type_info_mcp for definitions
- get_table_contents_mcp for actual rows, capped at 100 by default
- get_cds_source_mcp and get_metadata_extension_source_mcp for CDS views and their annotations
- get_usage_references_mcp — where-used for any object, which is the search you cannot do by grepping
- get_search_objects_mcp, get_package_structure_mcp and get_transaction_properties_mcp
- get_enhancements_mcp to find enhancement implementations, and get_sql_query_mcp for freestyle SQL
- parse_btp_service_key_mcp, generate_env_from_service_key_file_mcp, generate_env_from_service_key_json_mcp and get_btp_connection_status_mcp for the BTP path
Requirements
A running SAP ABAP system with ADT services enabled, and Python 3.9 or newer with a virtual environment. On-premise means SAP_AUTH_TYPE set to basic with SAP_URL, SAP_CLIENT, SAP_USER and SAP_PASS; BTP means SAP_AUTH_TYPE set to jwt with SAP_URL and SAP_JWT_TOKEN, and a bundled generator turns a downloaded service key into that file for you. Transports include stdio, SSE and Streamable HTTP. Register it with the full path to the server file — a relative one is the usual cause of a connection that closes immediately.
Setup effort
Build from source — git clone https://github.com/YahorNovik/mcp-adt.git
USE CASES
Reading code in a system you do not have Eclipse open for
Fetch the program, class or function module source by name and work from it directly.
Finding out what breaks if you change something
Pull the where-used references for the object before touching it.
Understanding a table before you query it
Read the definition, then look at a sample of the actual rows.
Answering a data question without building a report
Run the SQL directly and read the result.
Tracking down custom logic in standard code
List the enhancement implementations rather than searching for them by convention.
Connecting to a BTP system for the first time
Parse the downloaded service key into a working configuration, then confirm the connection.
22 tools
Listed in project docs. Your client may show a different list.
get_class_source_mcpget_function_group_source_mcpget_function_source_mcpget_include_source_mcpget_interface_source_mcpget_structure_source_mcpget_table_source_mcpget_table_contents_mcpget_package_structure_mcpget_type_info_mcpget_transaction_properties_mcpget_search_objects_mcpget_usage_references_mcpget_cds_source_mcpget_metadata_extension_source_mcpget_sql_query_mcpget_enhancements_mcpgenerate_env_from_service_key_file_mcpgenerate_env_from_service_key_json_mcpparse_btp_service_key_mcpget_btp_connection_status_mcpBEFORE YOU INSTALL
What to know first
Tools you get
22 tools named in the project's documentation.
Requires
- Python 3.9+
- A running SAP ABAP system with ADT services enabled
- SAP_URL in your environment (the .env file)
- On-premise: SAP_AUTH_TYPE=basic with SAP_CLIENT, SAP_USER and SAP_PASS — or BTP: SAP_AUTH_TYPE=jwt with SAP_JWT_TOKEN
Where it runs
All 3 documented setups run the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/YahorNovik/mcp-adt.git
cd mcp-adt
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtCopy the example .env.example to .env and add your SAP credentials
For the Cline SSE setup, start the server in SSE mode first and leave it running (it listens on http://127.0.0.1:8000):
.venv/bin/python mcp_server.py --transport sseMCP Clients
Claude Desktop
{
"mcpServers": {
"adt-server": {
"command": "<YOUR_PATH_TO_MCP_ADT>/.venv/bin/python",
"args": [
"<YOUR_PATH_TO_MCP_ADT>/mcp_server.py"
],
"env": {
"PYTHONPATH": "<YOUR_PATH_TO_MCP_ADT>"
}
}
}
}The configuration on this page does not set SAP_PASS, SAP_JWT_TOKEN, SAP_URL, SAP_CLIENT and SAP_USER; the project's instructions put them in a .env file. Check which folder the server reads that file from before you rely on it.
Cline — SSE
{
"mcpServers": {
"mcp-adt-python-sse": {
"type": "sse",
"autoApprove": [],
"disabled": false,
"timeout": 60,
"url": "http://127.0.0.1:8000/sse",
"transportType": "sse"
}
}
}Cline — stdio
{
"mcpServers": {
"adt-server": {
"command": "<YOUR_PATH_TO_MCP_ADT>/.venv/bin/python",
"args": [
"<YOUR_PATH_TO_MCP_ADT>/mcp_server.py"
],
"cwd": "<YOUR_PATH_TO_MCP_ADT>"
}
}
}The configuration on this page does not set SAP_PASS, SAP_JWT_TOKEN, SAP_URL, SAP_CLIENT and SAP_USER; the project's instructions put them in a .env file. Check which folder the server reads that file from before you rely on it.