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