Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions servers/sap-adt-mcp-server/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# SAP ABAP Development Tools MCP Server

AI-powered Model Context Protocol server for SAP ABAP Development Tools (ADT).

## Features

- **Object Management**: Create, search, read, modify, and delete SAP objects (ABAP classes, programs, CDS views, etc.)
- **Source Code Operations**: Get and update source code with lock/unlock support
- **Development Tools**: Syntax checking, code formatting with SAP Pretty Printer
- **Testing**: Run ABAP unit tests and create test includes
- **Transport Management**: List transports, create transport requests, and assign objects
- **18 Tools Available**: Complete ADT workflow automation

## Documentation

For full documentation, visit: https://github.com/vaibhavgoel-github-1986/sap-adt-mcp-server
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am getting a 404.


## Configuration

Requires SAP system credentials:
- **HOSTNAME**: SAP host URL (e.g., https://your-sap-system.com:44300)
- **USERNAME**: SAP username
- **PASSWORD**: SAP password (stored as secret)
- **CLIENT**: SAP client number (default: 110)
- **LANGUAGE**: Language code (default: EN)

## Supported Object Types

- ABAP Programs (PROG/P)
- ABAP Classes (CLAS/OC)
- ABAP Interfaces (INTF/OI)
- Function Groups (FUGR/F)
- CDS Views (DDLS/DF)
- Database Tables (TABL/DT)
- And more...

## License

MIT License - See LICENSE file for details
58 changes: 58 additions & 0 deletions servers/sap-adt-mcp-server/server.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: sap-adt-mcp-server
image: mcp/sap-adt-mcp-server
type: server
meta:
category: development
tags:
- sap
- abap
- development
- adt
- enterprise
about:
title: SAP ABAP Development Tools
description: AI-powered SAP ABAP Development Tools for creating, modifying, and managing SAP objects via ADT endpoints. Supports CDS views, ABAP classes, programs, transports, and more.
icon: https://avatars.githubusercontent.com/u/222140758?s=200&v=4
source:
project: https://github.com/vaibhavgoel-github-1986/sap-adt-mcp-server
commit: 9f20f042ed7ac7e5f064c95ea74d04aa42b958d9
config:
description: Configure SAP system connection via ADT
secrets:
- name: sap-adt-mcp-server.password
env: PASSWORD
example: <YOUR_SAP_PASSWORD>
env:
- name: HOSTNAME
example: https://sap.com:44300
value: '{{sap-adt-mcp-server.hostname}}'
- name: USERNAME
example: your_username
value: '{{sap-adt-mcp-server.username}}'
- name: CLIENT
example: "110"
value: '{{sap-adt-mcp-server.client}}'
- name: LANGUAGE
example: EN
value: '{{sap-adt-mcp-server.language}}'
parameters:
type: object
properties:
hostname:
type: string
description: SAP host URL (e.g., https://your-sap-system.com:44300)
username:
type: string
description: SAP username
client:
type: string
description: SAP client number (default 110)
default: "110"
language:
type: string
description: Language code (default EN)
default: EN
required:
- hostname
- username
- password
294 changes: 294 additions & 0 deletions servers/sap-adt-mcp-server/tools.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,294 @@
[
{
"name": "connect_to_sap",
"description": "Initialize connection to SAP system via ADT. Must be called before using any other tools.",
"arguments": [
{
"name": "sap_host",
"type": "string",
"desc": "SAP host URL (e.g., https://your-sap-system.com)"
},
{
"name": "username",
"type": "string",
"desc": "SAP username"
},
{
"name": "password",
"type": "string",
"desc": "SAP password"
},
{
"name": "client",
"type": "string",
"desc": "SAP client number (default: 110)"
}
]
},
{
"name": "search_object",
"description": "Search for SAP objects by name or pattern.",
"arguments": [
{
"name": "query",
"type": "string",
"desc": "Search query (object name or pattern, e.g., ZCL_*, Z_MY_PROG)"
},
{
"name": "max_results",
"type": "integer",
"desc": "Maximum number of results to return (default: 10)"
}
]
},
{
"name": "get_object_source",
"description": "Get source code of an SAP object.",
"arguments": [
{
"name": "object_uri",
"type": "string",
"desc": "URI of the object"
},
{
"name": "version",
"type": "string",
"desc": "Version to retrieve - 'active' or 'inactive' (default: active)"
}
]
},
{
"name": "get_object_structure",
"description": "Get the structure of an SAP object (includes, methods, attributes, etc.).",
"arguments": [
{
"name": "object_uri",
"type": "string",
"desc": "URI of the object (e.g., /sap/bc/adt/oo/classes/zcl_my_class)"
}
]
},
{
"name": "create_object",
"description": "Create a new SAP object using ADT endpoints.",
"arguments": [
{
"name": "object_type",
"type": "string",
"desc": "Type of object to create (e.g., PROG/P, CLAS/OC, INTF/OI, FUGR/F, TABL/DT, DDLS/DF)"
},
{
"name": "name",
"type": "string",
"desc": "Name of the object to create (e.g., Z_MY_PROGRAM, ZCL_MY_CLASS)"
},
{
"name": "package",
"type": "string",
"desc": "Parent package or function group (e.g., $TMP for local objects, or ZPACKAGE)"
},
{
"name": "description",
"type": "string",
"desc": "Description of the object"
}
]
},
{
"name": "get_creatable_object_types",
"description": "Get list of all SAP object types that can be created via ADT.",
"arguments": []
},
{
"name": "lock_object",
"description": "Lock an SAP object for editing. Must be called before modifying object source code.",
"arguments": [
{
"name": "object_uri",
"type": "string",
"desc": "URI of the object (obtained from search_object)"
}
]
},
{
"name": "unlock_object",
"description": "Unlock an SAP object after editing.",
"arguments": [
{
"name": "object_uri",
"type": "string",
"desc": "URI of the object"
},
{
"name": "lock_handle",
"type": "string",
"desc": "Lock handle obtained from lock_object"
}
]
},
{
"name": "set_object_source",
"description": "Update source code of an SAP object. Object must be locked first using lock_object.",
"arguments": [
{
"name": "object_uri",
"type": "string",
"desc": "URI of the object"
},
{
"name": "source_code",
"type": "string",
"desc": "New source code"
},
{
"name": "lock_handle",
"type": "string",
"desc": "Lock handle from lock_object"
}
]
},
{
"name": "activate_object",
"description": "Activate an SAP object after modifications.",
"arguments": [
{
"name": "object_name",
"type": "string",
"desc": "Name of the object"
},
{
"name": "object_uri",
"type": "string",
"desc": "URI of the object"
}
]
},
{
"name": "delete_object",
"description": "Delete an SAP object. Object must be locked first.",
"arguments": [
{
"name": "object_uri",
"type": "string",
"desc": "URI of the object"
},
{
"name": "lock_handle",
"type": "string",
"desc": "Lock handle from lock_object"
}
]
},
{
"name": "syntax_check",
"description": "Perform syntax check on ABAP source code.",
"arguments": [
{
"name": "object_uri",
"type": "string",
"desc": "URI of the object"
},
{
"name": "include_uri",
"type": "string",
"desc": "URI of the include (usually same as object_uri for simple objects)"
},
{
"name": "source_code",
"type": "string",
"desc": "Source code to check"
},
{
"name": "version",
"type": "string",
"desc": "Version to check - 'active' or 'inactive' (default: inactive)"
}
]
},
{
"name": "format_source_code",
"description": "Format ABAP source code using SAP's pretty printer.",
"arguments": [
{
"name": "source_code",
"type": "string",
"desc": "ABAP source code to format"
}
]
},
{
"name": "run_unit_test",
"description": "Run ABAP unit tests for a given object.",
"arguments": [
{
"name": "object_uri",
"type": "string",
"desc": "URI of the object (e.g., /sap/bc/adt/oo/classes/zcl_my_class)"
}
]
},
{
"name": "create_unit_test_include",
"description": "Create a test class include for a given ABAP class.",
"arguments": [
{
"name": "class_name",
"type": "string",
"desc": "Name of the ABAP class (e.g., ZCL_MY_CLASS)"
},
{
"name": "lock_handle",
"type": "string",
"desc": "Lock handle from lock_sap_object"
}
]
},
{
"name": "transport_check",
"description": "Perform a transport check for an SAP object. Returns structured data with available transport requests and object metadata.",
"arguments": [
{
"name": "object_uri",
"type": "string",
"desc": "URI of the object to check (e.g., /sap/bc/adt/oo/classes/zcl_test/source/main)"
}
]
},
{
"name": "list_transports",
"description": "List transport requests from SAP system. Fetches transport requests based on user's saved configuration in Eclipse ADT.",
"arguments": [
{
"name": "targets",
"type": "boolean",
"desc": "Include target system information (default: True)"
}
]
},
{
"name": "create_transport_and_assign",
"description": "Create a new transport request and assign an object to it. Creates a new workbench transport request for transporting object modifications.",
"arguments": [
{
"name": "devclass",
"type": "string",
"desc": "Development class/package (e.g., ZSAP_LLM_API)"
},
{
"name": "request_text",
"type": "string",
"desc": "Description for the transport (e.g., 'Bug fix for API')"
},
{
"name": "ref",
"type": "string",
"desc": "Reference URI of the object (e.g., /sap/bc/adt/oo/classes/zcl_test/source/main)"
},
{
"name": "operation",
"type": "string",
"desc": "Operation type (optional, usually empty)"
}
]
}
]