Skip to main content
Glama
RaghavOfficialGit

MCP ABAP Server

README.md
# 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

## Installation

1. Clone or download this repository
2. Install dependencies:
```bash
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`:

```javascript
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:
```bash
npm start
```

Or for development with auto-restart:
```bash
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:
  ```json
  {"Package": "ZDEV", "Objtype": "CLAS"}
  ```

- Get programs with pagination:
  ```json
  {"Objtype": "PROG", "$skip": 2, "$top": 8}
  ```

- Search by description:
  ```json
  {"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:

```json
{
  "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:
```bash
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

TDQS

B3.4/5.0

Scored across 2 tools

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