mcp4odata
Click on "Deploy 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., "@mcp4odatalist the latest sales orders for customer 10100001"
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.
mcp4odata
An MCP (Model Context Protocol) server that exposes SAP S/4HANA OData services as tools for LLMs. Deployed on SAP Cloud Foundry (BTP).
Overview
LLM / MCP Client
│ Bearer token (XSUAA)
▼
mcp4odata (CF app)
│ SAP Cloud SDK → BTP Destination Service
▼
SAP S/4HANA (CE_SALESORDER_0001, OData v4)Inbound auth: XSUAA Bearer token validation via
@sap/xssecOutbound connectivity: SAP Cloud SDK
executeHttpRequest()with BTP Destination ServiceTwo MCP transports: Streamable HTTP (MCP 2025-11-25) and SSE fallback (MCP 2024-11-05)
Related MCP server: SAP S/4HANA MCP Server
Tools
salesorder_get_list
Retrieves a list of S/4HANA sales order headers.
Parameter | Type | Required | Description |
| string | No | Filter by customer number, e.g. |
| string | No | Filter by sales org, e.g. |
| integer | No | Max results, 1–100 (default: 20) |
Returns: array of sales order headers — order number, type, sold-to party, total net amount, currency, requested delivery date.
salesorder_create
Creates a new S/4HANA sales order with one or more line items (deep-insert POST).
Header fields
Parameter | Type | Required | Description |
| string | Yes | Order type, e.g. |
| string | Yes | Sales org, e.g. |
| string | Yes | Distribution channel, e.g. |
| string | Yes | Division, e.g. |
| string | Yes | Customer number, e.g. |
| string | No | ISO currency, e.g. |
| string | No | Customer PO number |
| string | No | Delivery date, |
Item fields (at least one item required)
Parameter | Type | Required | Description |
| string | Yes | Product number, e.g. |
| string | Yes | Quantity as a string, e.g. |
| string | Yes | SAP unit of measure, e.g. |
| string | No | Delivering plant, e.g. |
| string | No | Item category, e.g. |
| string | No | Line item description (defaults to material description) |
Returns: created sales order header including the generated order number.
Endpoints
Endpoint | Auth | Description |
| Bearer (XSUAA) | Streamable HTTP transport — MCP 2025-11-25 |
| Bearer (XSUAA) | SSE transport — MCP 2024-11-05 |
| Bearer (XSUAA) | SSE message posting |
| None | Health check (used by CF) |
Local Development
Prerequisites
Node.js 20+
SAP BTP subaccount with XSUAA and Destination service instances
Setup
npm install
cp .env.example .env
# Fill in VCAP_SERVICES with your XSUAA and Destination credentials.env structure (see .env.example for the full template):
VCAP_SERVICES='{ "xsuaa": [...], "destination": [...] }'
S4_DESTINATION_NAME=S4HANA_SALESORDER
PORT=3000Run
npm run dev # tsx watch mode
npm run build # compile TypeScript → dist/Test with MCP Inspector
Point the inspector at http://localhost:3000/mcp with a valid XSUAA Bearer token.
BTP Destination Configuration
Create an HTTP destination in the BTP cockpit with:
Field | Value |
Name |
|
Type | HTTP |
URL | Your S/4HANA base URL |
Authentication | OAuth2ClientCredentials |
Token Service URL | XSUAA token endpoint for S/4HANA |
The SAP Cloud SDK reads the Destination service binding from VCAP_SERVICES, fetches the destination, and injects the Authorization header automatically.
Cloud Foundry Deployment
Prerequisites
brew install cloudfoundry/tap/cf-cli@8
cf login -a https://api.cf.<region>.hana.ondemand.com
cf target -o <org> -s <space>Create required service instances
cf create-service xsuaa application xsuaa-mcp4odata -c xsuaa-config.json
cf create-service destination lite destination-mcp4odataDeploy
npm run build
cf push
cf logs mcp4odata --recentUseful CF commands
cf env mcp4odata # inspect bound service credentials
cf set-env mcp4odata S4_DESTINATION_NAME # override env variable
cf restage mcp4odata # restage after env changesProject Structure
src/
├── server.ts # Express app, MCP transports, route setup
├── auth/
│ └── middleware.ts # XsuaaTokenVerifier — inbound Bearer token validation
├── odata/
│ └── client.ts # getSalesOrders(), createSalesOrder() via SAP Cloud SDK
└── tools/
├── get-sales-orders.ts # salesorder_get_list tool
└── create-sales-order.ts # salesorder_create tool
manifest.yml # CF deployment manifest
.env.example # Local dev environment templateTech Stack
Layer | Technology |
MCP Framework |
|
OData HTTP |
|
Destination resolution |
|
Inbound auth |
|
Web server | Express 5 |
Language | TypeScript (Node.js 20+) |
Deployment | SAP Cloud Foundry |
This server cannot be deployed
Maintenance
Related MCP Connectors
IPStack MCP Adapter turns IPStack's REST APIs into Model Context Protocol tools so any MCP-compatible client can call them directly in conversation. The first release ships IPStack IP geolocation and security lookups (single IP, caller's IP, and bulk). Additional APILayer services are added by registering them in a single config file, so the catalog grows without client-side changes.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceTransforms SAP S/4HANA or ECC systems into conversational AI interfaces by exposing OData services as dynamic MCP tools. Enables natural language interactions with ERP data for querying, creating, updating, and deleting business entities.26 npm1MIT
- FlicenseAqualityDmaintenanceEnables interaction with SAP S/4HANA systems via OData, allowing service discovery, metadata exploration, field value retrieval, and CRUD operations through natural language.45-
- FlicenseNot gradedqualityCmaintenanceEnables natural language querying of SAP business partner data by exposing OData APIs as MCP tools for LLM agents.-
- AlicenseNot gradedqualityCmaintenanceMCP server for SAP S/4HANA Sales Order Management that enables natural language queries for sales orders, order details, and line items using SAP's public sandbox API. Built with offline testing, structured errors, and retry policies.MIT