Enables connection to SAP systems via OData REST APIs, providing capabilities to query entity sets, perform CRUD operations, discover available services, and execute OData function imports.
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., "@SAP OData MCP ServerList the latest 5 sales orders from the API_SALES_ORDER_SRV service"
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.
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:
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:
Configure environment:
Build the project:
Configuration
Environment Variables
Create a .env file with your SAP system details:
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
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 service.
Usage Examples
Getting Started with Claude
Once configured, you can interact with SAP using natural language in Claude:
Connect to SAP:
Discover Available Services:
Get Service Information:
Query Data:
Advanced Filtering:
Get Specific Records:
Create New Records:
OData Query Examples
Filtering:
Selecting Fields:
Sorting:
Pagination:
Expanding Navigation Properties:
SAP System Requirements
Required SAP Components
SAP NetWeaver 7.0 or higher
SAP Gateway component activated
OData services enabled and configured
Required SAP Authorizations
The SAP user needs these authorization objects:
S_SERVICE: Service authorization for OData endpoints
S_ICF: Internet Communication Framework authorization
S_TCODE: Transaction authorization for BAPIs (if using function imports)
Activating OData Services
Transaction SICF: Activate ICF services at
/sap/opu/odataTransaction /IWFND/MAINT_SERVICE: Manage and activate OData services
Transaction /IWFND/GW_CLIENT: Test OData service calls
Architecture
Modular Design
Key Features
Smart Connection Testing: Handles SAP's URL structure where base URLs return 404
Service Discovery: Multiple methods to find available OData services
Error Handling: Comprehensive error handling with helpful messages
Type Safety: Full TypeScript support with proper interfaces
CSRF Protection: Automatic CSRF token management for write operations
Troubleshooting
Common Issues
Connection Refused (Network Error)
Verify SAP system is running and accessible
Check hostname/port in SAP_ODATA_BASE_URL
Verify firewall settings allow HTTP/HTTPS traffic
401 Unauthorized
Check SAP_USERNAME and SAP_PASSWORD
Verify user account is not locked
Ensure user has S_SERVICE authorization
403 Forbidden
Check user has required SAP authorizations
Verify S_ICF authorization for OData paths
Contact SAP administrator for permission review
404 Not Found
This is normal for SAP OData base URLs without service names
Verify OData services are activated (SICF transaction)
Use service discovery to find available services
SSL Certificate Errors
Set
SAP_VALIDATE_SSL=falsefor developmentInstall proper certificates for production
Check certificate chain and expiration
Debug Mode
Enable detailed logging:
SAP System Verification
Test OData URL in browser: Navigate to your SAP OData URL
Check service activation: Transaction SICF →
/sap/opu/odataVerify gateway services: Transaction /IWFND/MAINT_SERVICE
Test with gateway client: Transaction /IWFND/GW_CLIENT
Security Best Practices
Production Deployment
Use HTTPS for all SAP OData connections
Store credentials securely - never hardcode passwords
Create dedicated service users with minimal required permissions
Enable CSRF protection for write operations
Implement proper authorization in SAP for OData services
Monitor access logs and set up alerting
Regular security audits of user permissions
Network Security
Use VPN or private networks for SAP access
Implement IP restrictions where possible
Enable SAP Gateway security features
Use proper certificate management
Common SAP OData Services
Standard SAP Services
GWSAMPLE_BASIC - Basic sample service for testing
GWDEMO - Comprehensive demo service
RMTSAMPLEFLIGHT - Flight booking demo
Business Services
API_MATERIAL_SRV - Material Management
API_BUSINESS_PARTNER - Business Partner Management
API_SALES_ORDER_SRV - Sales Order Management
API_PURCHASEORDER_PROCESS_SRV - Purchase Order Processing
Entity Sets by Module
MM (Materials Management): MaterialSet, MaterialPlantDataSet
SD (Sales & Distribution): SalesOrderSet, CustomerSet, PricingConditionSet
FI (Financial Accounting): GeneralLedgerEntrySet, AccountingDocumentSet
HR (Human Resources): EmployeeSet, OrganizationalUnitSet
Development
Available Scripts
Adding New Features
Add tool definition in
tool-definitions.tsImplement handler in
handlers.tsAdd route in
server.tsswitch statementUpdate types in
types.tsif neededBuild and test
Contributing
Fork the repository
Create a feature branch
Make your changes with proper TypeScript types
Test with a real SAP system
Submit a pull request
License
MIT License - see LICENSE file for details.