SAP CPI MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| STATUS1 | No | Set to 'disable' or 'disabled' to take tenant 1 out of rotation; unset or 'enable' means enabled | |
| STATUS2 | No | Set to 'disable' or 'disabled' to take tenant 2 out of rotation | |
| ALLOW_WRITE | No | Set to 'true' to enable write/destructive tools; defaults to 'false' (read-only) | |
| ALLOW_WRITE1 | No | Per-tenant override to allow writes on tenant 1, e.g. 'true' | |
| ALLOW_WRITE2 | No | Per-tenant override to allow writes on tenant 2, e.g. 'true' | |
| CPI_BASE_URL | No | The base URL for the CPI OData API, e.g. https://your-tenant.it-cpiXXX.cfapps.eu10.hana.ondemand.com/api/v1 | |
| TENANT_NAME1 | No | Optional display name for the first tenant; defaults to 'tenant1' | |
| TENANT_NAME2 | No | Optional display name for the second tenant; defaults to 'tenant2' | |
| CPI_BASE_URL1 | No | Base URL for the first tenant (starting index 1) in a multi-tenant setup | |
| CPI_BASE_URL2 | No | Base URL for the second tenant (continue with CPI_BASE_URL3, etc. for more) | |
| CPI_CLIENT_ID | No | The OAuth client ID from your service key | |
| CPI_TOKEN_URL | No | The OAuth token URL, typically ending in /oauth/token (from your service key's tokenurl) | |
| CPI_CLIENT_ID1 | No | OAuth client ID for the first tenant | |
| CPI_CLIENT_ID2 | No | OAuth client ID for the second tenant | |
| CPI_TOKEN_URL1 | No | OAuth token URL for the first tenant | |
| CPI_TOKEN_URL2 | No | OAuth token URL for the second tenant | |
| MCP_AUTH_TOKEN | No | Optional static bearer token for the HTTP endpoint when no XSUAA binding is present; if set, requests must include Authorization: Bearer <token> | |
| CPI_CLIENT_SECRET | No | The OAuth client secret from your service key | |
| CPI_CLIENT_SECRET1 | No | OAuth client secret for the first tenant | |
| CPI_CLIENT_SECRET2 | No | OAuth client secret for the second tenant |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_cpi_tenantsA | List the SAP CPI tenants this MCP server is configured to reach. Call this first if it isn't already clear which tenant to use — every other tool takes a |
| search_message_processing_logsA | Search SAP CPI Message Processing Logs. Filter by status (COMPLETED, FAILED, PROCESSING, RETRY, ESCALATED, DISCARDED), integration flow name, and time window. Most recent first. |
| get_mpl_detailsA | Get the full Message Processing Log entry for a specific MessageGuid. |
| get_mpl_error_informationB | Retrieve the detailed error/exception text for a failed message. |
| get_mpl_custom_header_propertiesB | Get custom header properties (business keys, custom status) for a message. |
| get_mpl_run_stepsA | Get the individual run steps for a message (requires trace/step logging enabled on the flow). |
| get_message_store_entriesB | Get persisted message store entries (payloads persisted via the 'Persist' step) for a message. |
| get_failure_summaryB | Aggregate failed/escalated messages over a recent window, grouped by integration flow. |
| cancel_message_processing_logA | Cancel a currently processing/retrying message (e.g. a stuck JMS or scheduled message). Requires ALLOW_WRITE and confirm=true. |
| list_integration_packagesB | List all integration packages in the tenant's design workspace. |
| get_integration_packageA | Get details of a single integration package by Id. |
| create_integration_packageB | Create a new integration package. Requires ALLOW_WRITE. |
| delete_integration_packageA | Delete an integration package and all its artifacts. Requires ALLOW_WRITE and confirm=true. |
| copy_integration_packageA | Copy a standard/partner package (e.g. from the Discover catalog) into the design workspace. Requires ALLOW_WRITE. |
| list_integration_flowsA | List the integration flow design-time artifacts in a package. |
| get_integration_flowB | Get a design-time integration flow artifact by Id and Version. |
| download_integration_flowB | Download the integration flow content as a base64-encoded zip ($value). Useful for backup/transport. |
| get_flow_configurationsC | Get the externalized configuration parameters of an integration flow (endpoints, credentials names, etc.). |
| update_flow_configurationA | Update a single externalized configuration parameter of an integration flow. Requires ALLOW_WRITE. |
| get_flow_resourcesB | List the resources (scripts, XSDs, WSDLs, mappings) inside an integration flow. |
| create_integration_flowA | Create a new (empty) integration flow in a package — a default flow at version 1.0.0 that you then edit in the Integration Suite web editor. Requires ALLOW_WRITE. |
| save_integration_flow_as_versionA | Save the current draft ('active') of an integration flow as a new version, with an optional version comment. Requires ALLOW_WRITE. (The comment is applied to the artifact before the version is saved, since the SaveAsVersion API doesn't take one directly.) |
| list_deployed_artifactsB | List all deployed runtime artifacts and their status (STARTED, ERROR, STARTING, etc.). |
| get_deployed_artifact_statusB | Get the deployment status of one runtime artifact, plus error details if failed. |
| deploy_artifactA | Deploy a design-time artifact to the runtime. Choose the artifact type. Requires ALLOW_WRITE. Deployment is asynchronous — check status with get_deployed_artifact_status or get_build_and_deploy_status. |
| undeploy_artifactA | Undeploy (remove from runtime) a deployed artifact. Stops it processing messages. Requires ALLOW_WRITE and confirm=true. |
| get_build_and_deploy_statusA | Check the asynchronous build/deploy task status for a deployment (returned as a task id). |
| list_service_endpointsA | List the runtime service endpoints (URLs) exposed by deployed integration flows (HTTP, SOAP, OData, etc.). |
| list_user_credentialsA | List deployed User Credential security artifacts (names/metadata only, no secrets). |
| deploy_user_credentialA | Create/deploy a User Credential security artifact. Requires ALLOW_WRITE. The secret is write-only and cannot be read back. |
| list_oauth2_client_credentialsA | List deployed OAuth2 Client Credential security artifacts (metadata only). |
| list_keystore_entriesB | List entries (certificates / key pairs) in the tenant keystore. |
| list_number_rangesA | List configured number range objects. |
| create_number_rangeC | Create a number range object. Requires ALLOW_WRITE. |
| list_data_storesA | List data stores (transient/persistent message persistence used by flows). |
| get_data_store_entriesA | List the entries in a specific data store. IntegrationFlow is the flow Id (empty for a global store). |
| list_variablesB | List global and local variables persisted by integration flows. |
| list_jms_queuesA | List JMS queues and their state (capacity, message counts). |
| list_partnersC | List partners registered in the Partner Directory. |
| list_log_filesA | List available system log files (http, trace, etc.) for the tenant worker nodes. |
| cpi_api_catalogA | List every OData entity set and function import this CPI tenant exposes. Use this to discover what cpi_query / cpi_get_entity / cpi_invoke_function / cpi_write can target. |
| cpi_queryA | Run a read query against ANY CPI OData entity set with standard OData options. Example: entitySet='MessageProcessingLogs', filter="Status eq 'FAILED'", orderby='LogEnd desc'. |
| cpi_get_entityA | Get a single entity by key. Use 'key' for a single-key entity (e.g. package Id), or 'keys' (object) for composite keys (e.g. {Id:'x',Version:'active'}). Optionally fetch a navigation property. |
| cpi_invoke_functionA | Invoke any OData function import (see cpi_api_catalog). String parameters are auto-quoted. Requires ALLOW_WRITE (most function imports change tenant state). |
| cpi_writeA | Low-level create/update/delete against any CPI OData path. Requires ALLOW_WRITE. Every call (POST/PUT/DELETE/MERGE) requires confirm=true. Provide 'path' relative to /api/v1 (e.g. "/IntegrationPackages('X')"). |
| where_usedA | Search for a word/text across integration flow content in the design workspace (BPMN process XML, adapter channel properties — including credential/user references, groovy scripts, mappings, and parameter files). Wizard-style: if packageId is omitted, returns the list of packages to pick from (plus the option to set searchAllPackages=true to search the whole tenant in one call). If a packageId is chosen but artifactId is omitted, returns the list of integration flows in that package (plus the option to set searchAllArtifacts=true to search every flow in that package). Call the tool again with the missing field filled in from the returned options. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/premsaidaggolu/sap-cpi-multi-tenant-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server