MCP ABAP Server
Provides tools for querying ABAP programs, classes, function modules, and other objects from SAP systems using OAuth 2.0 authentication.
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., "@MCP ABAP ServerShow all classes 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.
MCP ABAP Server
A Model Context Protocol (MCP) server for querying ABAP programs, classes, function modules, and other objects from SAP systems using OAuth 2.0 authentication.
Features
OAuth 2.0 Authentication: Secure token-based authentication with SAP BTP
Flexible Querying: Search ABAP objects by various criteria
Pagination Support: Handle large result sets efficiently
Multiple Object Types: Support for classes, programs, function modules, tables, and more
Related MCP server: SAP OData MCP Server
Installation
Clone or download this repository
Install dependencies:
npm installConfiguration
The server comes pre-configured with the SAP BTP credentials. If you need to modify them, edit the OAUTH_CONFIG object in index.js:
const OAUTH_CONFIG = {
tokenUrl: 'https://your-authentication-url/oauth/token',
clientId: 'your-client-id',
clientSecret: 'your-client-secret',
apiUrl: 'https://your-api-url/odata/v4/catalog/ObjlistSet'
};Usage
Running the Server
Start the MCP server:
npm startOr for development with auto-restart:
npm run devAvailable Tools
1. query_abap_objects
Query ABAP objects with various filters.
Parameters:
Package(string): Development package (e.g., "ZDEV")Objtype(string): Object type (e.g., "CLAS", "PROG", "FUNC")Objname(string): Object nameObjdesc(string): Object description (partial match)Transport(string): Transport request numberCreateby(string): Created by usernameLastupdated(string): Last updated date in YYYYMMDD format$skip(number): Number of records to skip$top(number): Maximum number of records to return
Examples:
Get all classes in package ZDEV:
{"Package": "ZDEV", "Objtype": "CLAS"}Get programs with pagination:
{"Objtype": "PROG", "$skip": 2, "$top": 8}Search by description:
{"Objdesc": "Custom Application", "$top": 10}
2. get_object_types
Get a list of available object types with their descriptions.
Parameters: None
Microsoft Copilot Integration
Step 1: Install Node.js
Ensure you have Node.js (v16 or higher) installed on your system.
Step 2: Install the MCP Server
Download this MCP server to a local directory
Navigate to the directory in terminal/command prompt
Run:
npm install
Step 3: Configure Claude Desktop or MCP-compatible Client
Create or edit your MCP client configuration file (usually located at:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/claude/claude_desktop_config.json
Add the following configuration:
{
"mcpServers": {
"abap-server": {
"command": "node",
"args": ["C:\\path\\to\\your\\mcp-abap-server\\index.js"],
"env": {}
}
}
}Important: Replace C:\\path\\to\\your\\mcp-abap-server\\index.js with the actual path to your index.js file.
Step 4: Restart Your MCP Client
Restart Claude Desktop or your MCP-compatible client to load the new server.
Step 5: Use in Microsoft Copilot or Claude
Once configured, you can query ABAP objects using natural language:
Examples:
"Show me all classes in the ZDEV package"
"List the first 10 programs in package ZDEV"
"Find objects created by user HALURI"
"Get all function modules updated on 20260128"
"Show me objects in transport HMFK900264"
The MCP server will automatically translate these requests into API calls and return the results.
Object Types Reference
Code | Description |
CLAS | Class |
PROG | Program |
FUNC | Function Module |
TABL | Table |
VIEW | View |
DEVC | Package |
FUGR | Function Group |
INTF | Interface |
DTEL | Data Element |
DOMA | Domain |
Troubleshooting
Common Issues
Authentication Errors: Verify your OAuth credentials are correct and the token URL is accessible
Network Issues: Ensure you can access the SAP BTP endpoints from your network
Permission Issues: Make sure your OAuth client has the necessary permissions to access the API
Debug Mode
To enable debug logging, set the environment variable:
DEBUG=mcp-abap-server npm startSecurity Notes
The OAuth client secret is stored in the source code for simplicity
For production use, consider using environment variables or a secure configuration management system
Ensure proper network security measures are in place when accessing SAP systems
License
MIT License
Available Tools
2 toolsget_object_typesB
Get list of available object types with descriptions
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. 'Get list' clearly implies a read-only operation, but it does not specify output format, ordering, pagination, or whether any authorization is needed. It is adequate for a simple list operation but not richly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence with no filler. The action and result ('list ... with descriptions') are front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless list tool, the description conveys the core behavior, but there is no output schema to document return structure and no mention of how the object types connect to the sibling query_abap_objects. Slightly more context would make it fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters and the schema confirms this with 100% coverage, so there is nothing for the description to add about parameter meaning. The no-parameter case naturally earns the baseline of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Get list') and resource ('available object types'), and notes the output includes descriptions. It does not explicitly contrast with the sibling query_abap_objects, but the resource naming is distinct enough that the purpose is reasonably clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to call this tool versus query_abap_objects, nor any context such as how the returned object types relate to querying ABAP objects. The agent must infer the tool's place in a workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_abap_objectsC
Query ABAP programs, classes, function modules, and other objects from SAP system
| Name | Required | Description | Default |
|---|---|---|---|
| $top | No | Maximum number of records to return (for pagination) | |
| $skip | No | Number of records to skip (for pagination) | |
| Objdesc | No | Object description (partial match) | |
| Objname | No | Object name (program name, class name, function module name) | |
| Objtype | No | Object type (e.g., "CLAS" for classes, "PROG" for programs, "FUNC" for function modules) | |
| Package | No | Development package (e.g., "ZDEV") | |
| Createby | No | Created by username (e.g., "HALURI") | |
| Transport | No | Transport request number (e.g., "HMFK900264") | |
| Lastupdated | No | Last updated date in YYYYMMDD format (e.g., "20260128") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only query but does not mention return shape, pagination behavior, matching semantics, performance limits, or any side effects. This is a minimal disclosure for a tool that queries an external SAP system.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or repetition. It efficiently communicates the core purpose without wasting tokens.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with nine optional parameters, no output schema, no annotations, and a sibling tool, the description is too sparse. It omits key operational context such as how pagination works, what the response looks like, whether filters are combined, and when to prefer get_object_types.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all nine parameters. The tool description itself adds no parameter-level meaning beyond the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action (Query) and a specific resource (ABAP programs, classes, function modules, and other objects from SAP system). It distinguishes the tool from get_object_types in intent, but it does not explicitly differentiate it or name the sibling, so it stops just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus get_object_types, when to use filters, or how to handle pagination. The extent of guidance is the sentence itself, which merely restates what the tool does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v1.0.0- First observed
get_object_types - First observed
query_abap_objects
TDQS
The two tools have distinct purposes: one discovers available object types and the other queries actual ABAP objects. There is no overlap or ambiguity between them.
Both tool names follow the same verb_noun snake_case pattern (query_abap_objects, get_object_types), making the naming predictable and consistent.
With only two tools, the server feels minimal but not absurdly so. It covers a basic query and type discovery flow, yet a broader ABAP server would likely need more tools.
The surface provides basic querying and type discovery, but lacks obvious operations like retrieving detailed object metadata or source code. It is a workable but minimal set for ABAP exploration.
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 Connectors
Run SOQL queries to explore and retrieve Salesforce data. Access accounts, contacts, opportunities…
Run SOQL queries against your Salesforce org to retrieve records and insights. Explore objects, fi…
- BasedashOAuthcom.basedash
Governed BI MCP. Ask questions of live company data and list workspace sources via OAuth.
Remote MCP for 1,500+ APIs. Vault-managed credentials; OAuth or API key. Search, load, and execute.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables interaction with SAP ABAP systems through ABAP Development Tools (ADT), providing access to repository objects, source code, where-used analysis, and SQL queries with support for both on-premise and BTP systems.3-
- FlicenseAqualityDmaintenanceEnables AI assistants to integrate with SAP systems via OData REST APIs for querying entity sets, performing CRUD operations, and executing function imports. It features automatic service discovery, CSRF token management, and smart connection handling without requiring the SAP RFC SDK.1112-
- FlicenseNot gradedqualityBmaintenanceEnables SAP ABAP development workflows including ADT login, object search, read, create, update, activate, delete, and OData service publishing.1-
- FlicenseNot gradedqualityCmaintenanceEnables querying and manipulating SAP ABAP/DDIC objects via ADT REST, including search, source management, table data preview, and CRUD operations.-
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/RaghavOfficialGit/MCP---ABAP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server