SAP S/4HANA MCP Server
Provides tools for OData interaction with SAP S/4HANA, allowing discovery of services, retrieval of entity metadata and field values, and execution of CRUD queries on SAP entities.
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 S/4HANA MCP ServerDiscover available SAP OData services"
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 S4 MCP Server
MCP server for SAP S/4HANA OData access. Discover services, query entities, fetch metadata, and manage data — built on the @modelcontextprotocol/sdk TypeScript SDK.
Tools
Tool | Description |
| Discovers available services from the SAP Gateway Service Catalog |
| Fetches and summarizes OData service metadata optimized for LLM consumption |
| Fetches dropdown/value-list values from SAP OData entities |
| Executes OData CRUD operations (GET returns CSV, writes return JSON) |
Prerequisites
Node.js >= 18.0.0
SAP S/4HANA system with OData services enabled
SAP user with appropriate OData authorizations
Setup
git clone https://github.com/Nidhideep/sap-s4-mcp-server
cd sap-s4-mcp-server
npm install
cp .env.example .env
# Edit .env with your SAP connection details
npm run buildEnvironment Variables
Copy .env.example to .env and fill in the values.
OData Connection (required)
Variable | Description | Example |
| Full SAP S/4HANA URL including scheme and port |
|
| SAP client number |
|
|
|
|
| SAP user (when AUTH_METHOD=basic) |
|
| Password (when AUTH_METHOD=basic) | |
| Bearer token (when AUTH_METHOD=token) |
Operational
Variable | Description | Default |
|
|
|
| When |
|
MCP Client Configuration
Claude Code
claude mcp add sap-s4-mcp-server -- node /absolute/path/to/sap-s4-mcp-server/dist/src/index.jsThen set env vars via .mcp.json (copy from .mcp.example.json).
Claude Desktop / Cline
Copy .mcp.example.json to .mcp.json, fill in real values, and add to your MCP client config:
{
"mcpServers": {
"sap-s4-mcp-server": {
"command": "node",
"args": ["/absolute/path/to/sap-s4-mcp-server/dist/src/index.js"],
"env": {
"S4_ODATA_HOST": "https://your-s4.example.com:44301",
"S4_ODATA_CLIENT": "100",
"AUTH_METHOD": "basic",
"S4_ODATA_USER": "your_user",
"S4_ODATA_PASSWORD": "your_password"
}
}
}
}Recommended Workflow
Discover —
discover_sap_servicesto find the service nameUnderstand —
get_entity_metadatato see entity sets and field namesValidate inputs —
get_field_valuesto look up valid dropdown valuesQuery or write —
execute_odata_querywith the correct service, entity, and fields
Project Structure
src/
index.ts # Server entry point (stdio transport)
server.ts # Tool registration
tools/
s4-discover-services.tool.ts # Gateway catalog discovery
s4-metadata.tool.ts # OData $metadata parser
s4-field-values.tool.ts # Value-list / dropdown fetcher
s4-odata-query.tool.ts # CRUD query executor
config/
env.ts # Zod-validated environment config
auth.ts # Auth headers + CSRF token fetch
policy.ts # DRY_RUN enforcement + audit log
docs/
authentication.md
governance.md
troubleshooting.md
examples/
example-workflow.mdDevelopment
npm run dev # Watch mode with tsx
npm run typecheck # Type-check without building
npm run build # Compile to dist/Governance
DRY_RUN=trueblocks all write operations — safe for read-only environmentsAll write operations are audit-logged to stderr
CSRF tokens are fetched automatically before every write
No credentials are ever committed — use
.env(gitignored) or MCP client env injection
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Nidhideep/sap-s4-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server