SAP OData MCP Server
A Model Context Protocol (MCP) server for integrating SAP systems with AI assistants like Claude using OData REST APIs. This server provides tools for connecting to SAP OData services, querying entity sets, executing CRUD operations, and calling OData functions.
Features
- SAP OData Connectivity: Connect to SAP systems via OData REST APIs
- Smart Connection Handling: Properly handles SAP OData URL structures and 404 responses
- Service Discovery: Automatically discover available OData services via catalog or common service testing
- Entity Set Queries: Query any OData entity set with filtering, sorting, and pagination
- CRUD Operations: Create, Read, Update, and Delete operations on OData entities
- Function Imports: Execute OData function imports and custom functions
- CSRF Token Handling: Automatic CSRF token management for secure operations
- Modular Architecture: Clean, maintainable TypeScript codebase with separation of concerns
Prerequisites
- Node.js 18+
- SAP system with OData services enabled
- Network access to SAP OData endpoints
- SAP user credentials with appropriate authorizations
⚠️ Advantage: No SAP RFC SDK installation required! Uses standard HTTP/REST APIs.
Installation
Quick Setup
- Create the project:
mkdir sap-odata-mcp-server
cd sap-odata-mcp-server
mkdir src
Copy the source files from the artifacts to your
src/directory:src/index.ts- Entry pointsrc/server.ts- MCP server setupsrc/handlers.ts- Request handlerssrc/odata-client.ts- SAP OData clientsrc/tool-definitions.ts- Tool definitionssrc/types.ts- TypeScript types
Copy configuration files:
package.json- Dependencies and scriptstsconfig.json- TypeScript configuration.env.example- Environment variables template
Install dependencies:
npm install
- Configure environment:
cp .env.example .env
# Edit .env with your SAP details
- Build the project:
npm run build
Configuration
Environment Variables
Create a .env file with your SAP system details:
# Required SAP OData Configuration
SAP_ODATA_BASE_URL=https://your-sap-host:8000/sap/opu/odata/sap/
SAP_USERNAME=your-sap-username
SAP_PASSWORD=your-sap-password
# Optional Configuration
SAP_CLIENT=100
SAP_TIMEOUT=30000
SAP_VALIDATE_SSL=false # for development with self-signed certificates
SAP_ENABLE_CSRF=true
Claude Desktop Integration
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"sap-odata": {
"command": "node",
"args": ["/full/path/to/your/sap-odata-mcp-server/dist/index.js"],
"env": {
"SAP_ODATA_BASE_URL": "https://your-sap-host:8000/sap/opu/odata/sap/",
"SAP_USERNAME": "your-username",
"SAP_PASSWORD": "your-password",
"SAP_CLIENT": "100",
"SAP_VALIDATE_SSL": "false"
}
}
}
}
Available Tools
1. sap_connect
Connect to SAP OData service.
Parameters:
baseUrl(required): SAP OData service base URLusername(required): SAP usernamepassword(required): SAP passwordclient(optional): SAP client numbertimeout(optional): Request timeout in milliseconds (default: 30000)validateSSL(optional): Validate SSL certificates (default: true)enableCSRF(optional): Enable CSRF token handling (default: true)
2. sap_get_services
Get list of available OData services with intelligent discovery.
3. sap_get_service_metadata
Get metadata for a specific OData service.
Parameters:
serviceName(required): Name of the OData service
4. sap_query_entity_set
Query an OData entity set with filtering, sorting, and pagination.
Parameters:
serviceName(required): Name of the OData serviceentitySet(required): Name of the entity setselect(optional): Array of fields to selectfilter(optional): OData filter expressionorderby(optional): OData orderby expressiontop(optional): Number of records to returnskip(optional): Number of records to skipexpand(optional): Navigation properties to expand
5. sap_get_entity
Get a specific entity by its key values.
Parameters:
serviceName(required): Name of the OData serviceentitySet(required): Name of the entity setkeyValues(required): Object with key-value pairs for entity keys
6. sap_create_entity
Create a new entity in an entity set.
7. sap_update_entity
Update an existing entity.
8. sap_delete_entity
Delete an entity.
9. sap_call_function
Call an OData function import.
10. sap_connection_status
Check current SAP OData connection status.
11. sap_disconnect
Disconnect from SAP OData servi
Tools 11
sap_connectConnect to SAP OData service.sap_get_servicesGet list of available OData services with intelligent discovery.sap_get_service_metadataGet metadata for a specific OData service.sap_query_entity_setQuery an OData entity set with filtering, sorting, and pagination.sap_get_entityGet a specific entity by its key values.sap_create_entityCreate a new entity in an entity set.sap_update_entityUpdate an existing entity.sap_delete_entityDelete an entity.sap_call_functionCall an OData function import.sap_connection_statusCheck current SAP OData connection status.sap_disconnectDisconnect from SAP OData service.Environment Variables
SAP_ODATA_BASE_URLrequiredSAP OData service base URLSAP_USERNAMErequiredSAP usernameSAP_PASSWORDrequiredSAP passwordSAP_CLIENTSAP client numberSAP_TIMEOUTRequest timeout in millisecondsSAP_VALIDATE_SSLValidate SSL certificatesSAP_ENABLE_CSRFEnable CSRF token handling