mcp-sap-cpi
Provides tools for monitoring and managing SAP Cloud Platform Integration (CPI) artifacts, including message monitoring (failed messages, details, trace logs), integration content management (list packages, artifacts, deploy/undeploy iFlows), security artifacts (credentials, keystores, OAuth2), and runtime status checks.
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., "@mcp-sap-cpiShow me the last 10 failed messages in CPI"
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.
mcp-sap-cpi
An open-source MCP (Model Context Protocol) server that connects Claude to SAP Cloud Platform Integration (CPI). Ask Claude to diagnose failed messages, review iFlows, deploy artifacts, check credentials, and more — directly from your conversation.
What it does
Category | Tools |
Message Monitoring | List failed messages, get full MPL details, retrieve trace logs |
Integration Content | Browse packages, list artifacts, deploy/undeploy iFlows |
Security Artifacts | List credentials, keystores, OAuth2 configurations |
Runtime Status | Check deployed artifact status, system health summary |
Related MCP server: CI MCP Server
Requirements
Node.js 18+
SAP CPI tenant (Integration Suite or standalone CPI)
BTP service key with Process Integration Runtime role (
it-rtplan)
Installation
npm install -g mcp-sap-cpiOr run without installing:
npx mcp-sap-cpiConfiguration
1. Get your BTP service key
In SAP BTP Cockpit:
Go to your subaccount → Services → Instances and Subscriptions
Create a service instance:
Process Integration Runtime→ planit-rtCreate a service key → copy the JSON
From the service key JSON, extract:
url→CPI_TENANT_URLtokenurl→CPI_TOKEN_URLclientid→CPI_CLIENT_IDclientsecret→CPI_CLIENT_SECRET
2. Set environment variables
Create a .env file (or set in your Claude Desktop config — see below):
CPI_TENANT_URL=https://<tenant>.it-cpi.cfapps.<region>.hana.ondemand.com
CPI_TOKEN_URL=https://<subdomain>.authentication.<region>.hana.ondemand.com/oauth/token
CPI_CLIENT_ID=sb-<your-client-id>
CPI_CLIENT_SECRET=<your-client-secret>3. Register with Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"sap-cpi": {
"command": "npx",
"args": ["mcp-sap-cpi"],
"env": {
"CPI_TENANT_URL": "https://<tenant>.it-cpi.cfapps.<region>.hana.ondemand.com",
"CPI_TOKEN_URL": "https://<subdomain>.authentication.<region>.hana.ondemand.com/oauth/token",
"CPI_CLIENT_ID": "your-client-id",
"CPI_CLIENT_SECRET": "your-client-secret"
}
}
}
}4. Register with Claude Code
claude mcp add sap-cpi npx mcp-sap-cpi \
-e CPI_TENANT_URL=https://<tenant>.it-cpi.cfapps.<region>.hana.ondemand.com \
-e CPI_TOKEN_URL=https://<subdomain>.authentication.<region>.hana.ondemand.com/oauth/token \
-e CPI_CLIENT_ID=your-client-id \
-e CPI_CLIENT_SECRET=your-client-secretTools Reference
Message Monitoring
get_failed_messages
List failed messages from the Message Processing Log.
Parameter | Type | Required | Description |
| number | No | Max results (default: 20) |
| string | No | Filter by iFlow name |
| string | No | ISO date — messages after this date |
Example prompt: "Show me the last 10 failed messages in CPI"
get_message_details
Get full MPL details for a specific message.
Parameter | Type | Required | Description |
| string | Yes | The CPI message GUID |
Example prompt: "Get details for message ID abc-123-def"
get_trace_log
Get step-by-step payload trace for a message (requires trace mode enabled on the iFlow).
Parameter | Type | Required | Description |
| string | Yes | The CPI message GUID |
Example prompt: "Show me the trace log for message abc-123-def"
Integration Content
list_packages
List all integration packages in the tenant.
Example prompt: "What integration packages do I have in CPI?"
list_artifacts
List all artifacts in a package.
Parameter | Type | Required | Description |
| string | Yes | The integration package ID |
Example prompt: "List all iFlows in the HR_Integration package"
get_artifact
Get metadata and configuration for a specific artifact.
Parameter | Type | Required | Description |
| string | Yes | The artifact ID |
| string | Yes |
|
deploy_artifact
Deploy an artifact version to the runtime.
Parameter | Type | Required | Description |
| string | Yes | The artifact ID |
| string | No | Default: |
Example prompt: "Deploy the Employee_Sync iFlow"
undeploy_artifact
Undeploy an artifact from the runtime.
Parameter | Type | Required | Description |
| string | Yes | The artifact ID |
Security Artifacts
list_credentials
List all user credential (basic auth) aliases.
Example prompt: "What credentials are configured in CPI?"
list_keystores
List all keystore entries with alias and expiry date.
Example prompt: "Are any of my CPI certificates expiring soon?"
list_oauth_credentials
List all OAuth2 client credential configurations.
Runtime Status
get_runtime_artifacts
List all deployed runtime artifacts with status (STARTED, STOPPED, ERROR).
Example prompt: "Which iFlows are currently in ERROR state?"
get_system_status
Get a summary of deployed artifact health.
Example prompt: "Give me a CPI system health check"
Example conversations
Diagnose a failed message:
"Why did my HR_Employee_Sync iFlow fail? Show me the last error."
Check certificates:
"List all keystore entries in CPI and flag any expiring within 90 days."
Deploy after a fix:
"Deploy the Order_Processing iFlow to the runtime."
Audit credentials:
"What OAuth2 credentials are configured in my CPI tenant?"
System overview:
"Give me a health check — how many iFlows are running vs in error?"
Local development
git clone https://github.com/prudvigit/mcp-sap-cpi.git
cd mcp-sap-cpi
npm install
cp .env.example .env
# fill in your CPI credentials in .env
npm run devRoadmap
Value mapping query tool
Alert management tools
iFlow content download (for AI-assisted review)
Integration with tics-sap-ai-suite
License
MIT
Available Tools
13 toolsdeploy_artifactB
Deploy an artifact version to the SAP CPI runtime.
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes | The artifact ID to deploy | |
| artifactType | No | Artifact type (default: IntegrationFlow) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the action without disclosing behavioral traits such as whether deployment overwrites existing artifacts, requires specific permissions, or is reversible. Minimal disclosure of side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. Every word contributes to stating the action and target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description is thin. It does not explain what happens upon deployment, whether the operation is synchronous, or any potential side effects. For a deployment tool, this is a significant gap, even though the tool is relatively simple.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, so the baseline is 3. The description adds no additional parameter meaning; it even uses 'artifact version' while the schema parameter is 'artifactId', which could be slightly confusing but the schema clarifies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'deploy', the resource 'artifact version', and the target 'SAP CPI runtime'. It distinguishes from sibling tools like undeploy_artifact and get_artifact by the explicit deployment action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not mention prerequisites, conditions, or scenarios for deployment. The description is purely declarative without any context on usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_artifactB
Get metadata and configuration details for a specific artifact.
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes | The artifact ID | |
| artifactType | Yes | Artifact type: IntegrationFlow | MessageMapping | ScriptCollection | ValueMapping |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool returns metadata and configuration, but it does not explicitly confirm it is read-only, mention authentication requirements, error behavior, or what happens if the artifact is not found. This is minimal behavioral context for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the action and resource. It contains no redundant words and is immediately scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a simple two-parameter read operation and complete schema, the description covers the basics. However, there is no output schema, and the description does not elaborate on the shape of the returned metadata/configuration or mention potential error conditions, leaving some room for ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (artifactId, artifactType) are described with sufficient detail in the schema, including allowed values for artifactType. The description itself adds no extra parameter semantics, which is acceptable given the schema already handles this.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a 'get' operation for a 'specific artifact,' which distinguishes it from list-type siblings like list_artifacts. However, it does not explicitly contrast with get_runtime_artifacts or other getters, so it stops short of fully differentiating among all siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'specific artifact' implies this tool is for fetching a single artifact's details rather than listing all, but no explicit when-to-use guidance or alternatives are mentioned. It does not say what to do if the artifact does not exist or when to prefer this over get_runtime_artifacts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_failed_messagesA
List failed messages from SAP CPI message processing logs. Returns messageId, status, artifact name, error, and timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Max number of messages to return (default 20) | |
| fromDate | No | ISO date string — messages after this date (optional) | |
| artifactName | No | Filter by iFlow/artifact name (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses read-only intent ('List') and return fields, but omits details like ordering, pagination, filter matching semantics, and authentication error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise, front-loaded sentences. The first states the action, and the second enumerates the returned fields without any redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with 3 optional parameters and no output schema; the description does list expected return columns. However, it omits usage differentiation and behavioral details such as default ordering or pagination, making it minimally complete but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all three parameters (top, fromDate, artifactName) with 100% coverage, including the default for top. The description adds no additional parameter semantics, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'List failed messages from SAP CPI message processing logs', a specific verb, resource, and source. It names output fields and clearly distinguishes from sibling get_message_details, which implies a single-detail lookup rather than a bulk list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to use this tool versus alternatives like get_message_details or get_trace_log. The description implies a troubleshooting/listing purpose but lacks exclusions, prerequisites, or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_message_detailsA
Get full message processing log details for a specific CPI message ID.
| Name | Required | Description | Default |
|---|---|---|---|
| messageId | Yes | The CPI message GUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It indicates a read-only operation via 'Get' and specifies 'full details', but it does not disclose other behavioral traits such as response size, permissions, or error behavior. This is minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the action and resource, with no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple one-parameter tool, but the lack of an output schema means it should provide more detail about the returned 'full message processing log details'. It gives an overview but is not fully complete in explaining the response or edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes messageId as 'The CPI message GUID' with 100% coverage, so the baseline is 3. The tool description does not add parameter-specific semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'full message processing log details' for a specific CPI message ID. This is distinct from sibling tools like get_trace_log or get_failed_messages, which focus on other aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a specific message ID and need processing log details, but it does not explicitly compare with alternative tools like get_trace_log or mention when not to use it. There is no exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_runtime_artifactsA
List all deployed runtime artifacts in SAP CPI with their deployment status (STARTED, STOPPED, ERROR).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description indicates a read-only operation via 'List' and adds detail about the output including deployment statuses (STARTED, STOPPED, ERROR). It does not mention any potential side effects or limitations, but for a simple listing tool this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and includes the key output detail. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and a low-complexity operation, the description sufficiently explains what the tool does and what it returns. It could mention whether it includes multiple pages or only current status, but for a basic listing this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and the schema is empty. The baseline is 4, and the description correctly implies no arguments are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' with the resource 'deployed runtime artifacts' and specifies the SAP CPI scope plus deployment status values, making its function clear and distinguishing it from generic list tools like list_artifacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage when needing deployed artifact statuses but does not explicitly state when to prefer this over list_artifacts or get_system_status, nor excludes alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_statusA
Get overall SAP CPI system health — active alerts and system status summary.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosure. It specifies that the tool returns active alerts and a system status summary, but does not mention read-only semantics, performance implications, or any potential side effects. For a simple get operation this is adequate though not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that states exactly what the tool does with no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter health check, the description is complete enough to set expectations about the return content. It does not detail the structure of the status summary, but the simplicity of the tool does not demand more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the schema fully covers this dimension. The baseline for zero parameters is 4, and the description does not need to add parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches overall SAP CPI system health, specifically active alerts and a status summary. This distinguishes it from siblings that focus on messages, artifacts, or credentials, with a specific verb and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys a clear use case: checking system health. It implies this is the go-to for overall status rather than message-level or artifact-level operations, though it does not explicitly name alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trace_logA
Get step-by-step trace log for a CPI message (only available when trace is enabled on the iFlow).
| Name | Required | Description | Default |
|---|---|---|---|
| messageId | Yes | The CPI message GUID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must convey behavioral traits. It discloses the key requirement (trace must be enabled), but does not describe potential errors, permissions, or whether it is a read-only operation. The mention of the prerequisite is useful, but the description could be more explicit about behavior when trace is not enabled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the action and resource. It contains no unnecessary words or redundant information, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with one parameter and no output schema, the description provides the essential purpose and a key condition (trace enabled). It is sufficient for an agent to decide when to use the tool, though it could be slightly more complete by mentioning the expected output format or error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full coverage for the single parameter messageId with the description 'The CPI message GUID'. The tool description does not add any additional meaning beyond the schema, so the baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the exact function: 'Get step-by-step trace log for a CPI message.' The verb 'Get' and the resource 'trace log for a CPI message' are specific and distinguish this tool from siblings like get_message_details or get_failed_messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by noting the prerequisite: 'only available when trace is enabled on the iFlow.' This tells the agent when the tool can be used, though it does not explicitly mention alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_artifactsA
List all artifacts (iFlows, mappings, scripts) in a specific integration package.
| Name | Required | Description | Default |
|---|---|---|---|
| packageId | Yes | The integration package ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It clearly indicates a read-only listing operation and clarifies the artifact types, but does not disclose potential issues like pagination, authentication requirements, or error behaviors. For a simple list tool, this is acceptable but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It states the action, the object, the artifact types, and the scope, all in under 15 words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter list tool with no output schema, the description is sufficiently complete. It explains what the tool returns (a list of artifact types) and the required scope. It doesn't detail return format, but that is not essential for a list tool without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents packageId with a description, so the baseline is 3. The tool's description reinforces that the package is 'specific' but does not add extra syntax, format, or example values beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists artifacts (iFlows, mappings, scripts) within a specific integration package, using a specific verb and resource. This distinguishes it from siblings like list_packages (which lists packages) and get_artifact (which likely fetches a single artifact).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need to list artifacts in a package, but it does not explicitly mention alternatives or when-not-to-use cases. It lacks any reference to sibling tools such as list_packages or get_runtime_artifacts, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_credentialsA
List all user credential (basic auth) aliases configured in SAP CPI.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It clearly indicates a non-destructive read operation via 'List' and adds important context that only aliases are returned, not the actual credential secrets, which is a critical safety trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no superfluous details. Every word contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless list operation, the description fully covers the scope ('all user credential aliases in SAP CPI'). No output schema is expected, and the lack of further details does not hinder correct usage for this low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly implies no parameters are needed and does not need to explain any input semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all user credential (basic auth) aliases in SAP CPI, using a specific verb and resource. It distinguishes itself from sibling tools like list_oauth_credentials by explicitly mentioning basic auth.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as list_oauth_credentials or list_keystores. The description only states what the tool does, leaving the agent to infer appropriate usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_keystoresA
List all keystore entries in SAP CPI, including alias and expiry date.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It states the tool lists entries, which implies a read-only operation, but it does not disclose any potential side effects, pagination behavior, or authentication requirements. For a simple list operation, this is minimally acceptable but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action ('List all') and immediately specifies the resource and salient attributes. Every word contributes value; there is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool, the description fully conveys what the tool does, including the resource type and the information returned (alias and expiry date). It omits no critical details for a straightforward read-only listing operation, and no output schema exists to contradict or supplement it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema reflects this with 100% coverage. The description correctly adds no parameter details because none exist. Baseline for zero parameters is 4, and the description does not need to compensate for any schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and clearly identifies the resource 'keystore entries in SAP CPI', adding detail about included fields (alias and expiry date). This clearly distinguishes it from sibling tools like list_credentials or list_oauth_credentials, which target different resource types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a clear use case: when you need to view all keystore entries and their expiry dates within SAP CPI. It does not explicitly exclude alternatives or state when not to use it, but the context is unambiguous given the resource specificity. No explicit exclusions, but the instruction is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_oauth_credentialsA
List all OAuth2 client credential configurations in SAP CPI.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'List all', implying a read-only operation, but discloses nothing about pagination, response format, authentication requirements, or whether the returned credentials are masked. This is thin for a tool handling OAuth2 client secrets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear, front-loaded sentence with no wasted words. It is appropriately sized for a simple list operation with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a minimal tool with no parameters and no output schema, the description is adequate for basic selection, but it lacks any indication of the return structure or whether results are paginated. Given zero complexity, a 3 reflects the missing return-value details that would be needed for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema fully covers parameter semantics. The description adds no parameter information, but none is needed. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'List all OAuth2 client credential configurations in SAP CPI', which uses a specific verb (list) and clearly identifies the resource (OAuth2 client credential configurations) and scope (all, in SAP CPI). This distinguishes it from siblings like list_credentials, which likely cover broader credential types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. Sibling list_credentials could overlap, but there is no mention of when to choose one over the other or any exclusions. Usage is only implied by the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_packagesB
List all integration packages in the SAP CPI tenant.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action without explicitly confirming that this is a read-only operation, mentioning pagination, response format, or other side effects. The verb 'List' implies read-only but doesn't provide sufficient transparency for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the action and resource. Every word is meaningful, with no wasted content, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a simple list tool with no params and no output schema, the description is minimally viable but leaves gaps. It doesn't explain what fields are returned for each package, whether pagination exists, or if any side effects occur. Given the absence of annotations and output schema, a bit more context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the empty input schema already documents this. The description adds the semantic of listing 'all' packages, implying no filtering, which is useful context. This meets the 0-param baseline of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('List'), resource ('integration packages'), and scope ('in the SAP CPI tenant'). It distinguishes from siblings like list_keystores and list_credentials, though it doesn't explicitly differentiate from list_artifacts, making it a solid but not perfect purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as list_artifacts or get_runtime_artifacts. The description lacks any context about prerequisites, exclusions, or preferred use cases, leaving the agent to infer without support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undeploy_artifactB
Undeploy an artifact from the SAP CPI runtime.
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes | The artifact ID to undeploy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of disclosing behavioral traits. 'Undeploy' implies an action, but the description does not clarify whether it is destructive, reversible, requires permissions, or has side effects like removing the artifact from runtime but leaving the package intact. The lack of context beyond the verb makes it insufficiently transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that immediately states the action and target. It contains no filler or redundant information. Every word contributes to the core meaning, making it exemplary in conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a state-changing operation with no annotations and no output schema. The description only states the basic action and does not provide essential context such as side effects, reversibility, permissions, or what happens after undeployment. While the parameter is fully covered by schema, the overall description is incomplete for an agent to fully understand the tool's impact and usage beyond the immediate action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the only parameter, artifactId, with a clear explanation. The description adds no additional meaning beyond the schema, but given the 100% schema coverage, the baseline score of 3 is appropriate. The description does not harm parameter understanding, but also does not enrich it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Undeploy') on a specific resource ('artifact from the SAP CPI runtime'), clearly distinguishing it from sibling tools like deploy_artifact, list_artifacts, and get_artifact. The verb is concrete and the resource is well-defined, leaving no ambiguity about the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as deploy_artifact or get_artifact. It does not mention prerequisites, intended use case, or any exclusions. The agent is left to infer usage purely from the name and description, which is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource and action: message logs (list failed, get details, get trace), packages, artifacts (list, get, deploy, undeploy), credentials (basic vs OAuth), runtime artifacts, and system status. No meaningful overlap; descriptions clearly differentiate the purposes.
All tools follow a consistent verb_noun snake_case pattern (get_*, list_*, deploy_artifact, undeploy_artifact). The verbs are limited to clear, common actions, and there are no style inconsistencies or vague names.
13 tools is well within the ideal range for a domain-specific server. Each tool covers a distinct aspect of SAP CPI management (monitoring, artifact lifecycle, credentials, system status) without redundancy or bloat.
Core workflows are covered: message monitoring, artifact discovery/deployment, credential listing, and system health. Minor gaps exist such as no explicit start/stop for runtime artifacts or the ability to update/delete credentials, but these are not critical for typical monitoring and deployment tasks.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Connect Claude AI to UluP Spaces via MCP — create projects, nodes, and tasks with OAuth 2.0.
Manage your IoT device fleet directly from Claude. Create device templates with datastreams and events, provision new devices, read live sensor data, and control outputs. The Blynk connector integrates with the Blynk IoT platform, enabling direct configuration and monitoring of connected devices and infrastructure.
Pace is a remote MCP server that exposes wearable and fitness data to Claude via the Model Context Protocol. It connects to Garmin, Oura, Whoop, Polar, Fitbit and 20+ devices and provides 15 tools for querying sleep, activity, recovery, and training data. Hosted on Google Cloud Run, OAuth 2.1 authentication, Streamable HTTP transport. Instructions: First you need to create an account at: https://pacetraining.co and connect your wearables. After that you can connect the remote Server via Custom Connector in Claude and OAuth 2.1 Flow startet.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables interaction with SAP Integration Suite for designing, creating, and managing integration artifacts including integration flows, message mappings, packages, and B2B trading partner relationships through AI-powered natural language commands.29
- AlicenseNot gradedqualityFmaintenanceEnables AI assistants to manage SAP Cloud Integration (CPI) landscapes through natural language by exposing CPI OData APIs as MCP tools.11MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to interact with SAP Cloud Integration (CPI) by exposing CPI APIs as MCP tools for inspecting metadata, runtime artifacts, message logs, and failed messages.3
- FlicenseBqualityCmaintenanceEnables managing SAP Cloud Integration iFlows, packages, configurations, deployments, and runtime artifacts via natural language through the OData API.25
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/Keelside/mcp-sap-cpi'
If you have feedback or need assistance with the MCP directory API, please join our Discord server