diff --git a/servers/sap-adt-mcp-server/readme.md b/servers/sap-adt-mcp-server/readme.md new file mode 100644 index 000000000..b261dcd26 --- /dev/null +++ b/servers/sap-adt-mcp-server/readme.md @@ -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 + +## 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 diff --git a/servers/sap-adt-mcp-server/server.yaml b/servers/sap-adt-mcp-server/server.yaml new file mode 100644 index 000000000..6ec623dac --- /dev/null +++ b/servers/sap-adt-mcp-server/server.yaml @@ -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: + 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 diff --git a/servers/sap-adt-mcp-server/tools.json b/servers/sap-adt-mcp-server/tools.json new file mode 100644 index 000000000..f506a87cf --- /dev/null +++ b/servers/sap-adt-mcp-server/tools.json @@ -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)" + } + ] + } +]