-
Notifications
You must be signed in to change notification settings - Fork 391
Add SAP ABAP Development Tools MCP Server #363
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
vaibhavgoel-github-1986
wants to merge
1
commit into
docker:main
Choose a base branch
from
vaibhavgoel-github-1986:main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 | ||
|
|
||
| ## 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 | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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)" | ||
| } | ||
| ] | ||
| } | ||
| ] |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
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.