Skip to main content
Glama
RaghavOfficialGit

MCP ABAP Server

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

  1. Clone or download this repository

  2. Install dependencies:

npm install

Configuration

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 start

Or for development with auto-restart:

npm run dev

Available 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 name

  • Objdesc (string): Object description (partial match)

  • Transport (string): Transport request number

  • Createby (string): Created by username

  • Lastupdated (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

  1. Download this MCP server to a local directory

  2. Navigate to the directory in terminal/command prompt

  3. 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.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux: ~/.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

  1. Authentication Errors: Verify your OAuth credentials are correct and the token URL is accessible

  2. Network Issues: Ensure you can access the SAP BTP endpoints from your network

  3. 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 start

Security 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 tools
get_object_typesB

Get list of available object types with descriptions

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
$topNoMaximum number of records to return (for pagination)
$skipNoNumber of records to skip (for pagination)
ObjdescNoObject description (partial match)
ObjnameNoObject name (program name, class name, function module name)
ObjtypeNoObject type (e.g., "CLAS" for classes, "PROG" for programs, "FUNC" for function modules)
PackageNoDevelopment package (e.g., "ZDEV")
CreatebyNoCreated by username (e.g., "HALURI")
TransportNoTransport request number (e.g., "HMFK900264")
LastupdatedNoLast updated date in YYYYMMDD format (e.g., "20260128")

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 2 tool updatesv1.0.0
    • First observedget_object_types
    • First observedquery_abap_objects

TDQS

B3.4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

Both tool names follow the same verb_noun snake_case pattern (query_abap_objects, get_object_types), making the naming predictable and consistent.

Tool Count3/5

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.

Completeness3/5

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

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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
    -
  • F
    license
    A
    quality
    D
    maintenance
    Enables 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.
    11
    12
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables querying and manipulating SAP ABAP/DDIC objects via ADT REST, including search, source management, table data preview, and CRUD operations.
    -

Latest Blog Posts

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