使用说明
SAP Cloud ALM MCP Server (discontinued)
This project is discontinued and is no longer maintained.
Use calmcp - CALM (Cloud ALM) MCP instead — the Node/TypeScript successor to this Rust server. It reuses the knowledge of the Cloud ALM APIs gained here, but takes a different technical direction.
The documentation below is kept for reference only. Expect no further fixes, dependency updates or new API coverage in this repository.
A Model Context Protocol (MCP) server that bridges SAP Cloud ALM APIs to AI assistants like Claude. This enables natural language interaction with SAP Cloud ALM for managing features, documents, tasks, projects, test cases, and more.
Successor: calmcp - CALM (Cloud ALM) MCP
calmcp - CALM (Cloud ALM) MCP is a read-only MCP server for SAP Cloud ALM written in TypeScript. It never creates, updates or deletes data in Cloud ALM.
Where this server exposed 75+ fine-grained tools, calmcp consolidates the same API surface into four intent-based tools:
| Tool | Purpose |
|---|---|
calm_list |
List/query any collection — tasks (incl. defects), projects, features, documents, test cases, hierarchy nodes, cross-library objects, landscape objects, status events, code lists. OData resources accept $filter/$select/$expand/$orderby/$top/$skip; REST resources accept contextual params (project_id, task_id, task_type, timebox_id/timebox_name, ...). fields projects the response on any resource. |
calm_get |
Fetch a single entity by id (a feature also by display id, e.g. 6-123). |
calm_analytics |
Query an analytics provider (Defects, Tasks, Tests, ...), including $orderby for sorted/aggregated questions. |
calm_resources |
Discovery: the catalog of resources/providers, the task type/status/priority code lists, and worked recipes. |
Covered services: Tasks, Projects, Features, Documents, Process Hierarchy, Test Management (manual + automated), Analytics, BSM/Status Events, Landscape, and Cross-Library (Applications, Configurations, Developments, Interfaces).
Other differences worth knowing:
- Transports: stdio locally, or Streamable HTTP remotely — this server was stdio only.
- Deployment: runs on SAP BTP Cloud Foundry with authentication via a bound BTP Destination, plus
XSUAA-protected
/mcpwith MCP-native OAuth (interactive sign-in from Claude Desktop, Claude Code, Cursor, VS Code) or a static API key for server-to-server callers such as Microsoft Copilot Studio. - Install: a one-click
.mcpbClaude Desktop extension, a Docker image, ornode dist/index.js. - Response size:
fieldsprojection and timebox filtering keep task lists small enough for agent hosts that choke on the raw 67-attribute task payloads.
Migrating
- Install calmcp — see its README for the
.mcpbextension, stdio, HTTP and Cloud Foundry paths. - Move your credentials from
config.jsonto environment variables:CALM_TENANT,CALM_REGION,CALM_CLIENT_ID,CALM_CLIENT_SECRETfor OAuth2, orCALM_SANDBOX=truewithCALM_API_KEYfor the SAP Business Accelerator Hub sandbox.CALM_DEBUGandCALM_TIMEOUT_SECONDSreplacedebugandtimeout_seconds. - Replace tool calls: the read tools below map onto
calm_list/calm_get/calm_analytics; callcalm_resourcesto discover validresourceandprovidervalues. - Write operations have no equivalent. The experimental create/update/delete tools in this server are intentionally absent from calmcp, which is read-only by design.
Features
- Full SAP Cloud ALM API Coverage: Access to 9 different APIs including Features, Documents, Tasks, Projects, Test Management, Process Hierarchy, Analytics, Process Monitoring, and Logs
- Two Authentication Modes:
- OAuth2 client credentials for production environments
- Static API key for SAP API Business Hub sandbox testing
- 75+ MCP Tools: Comprehensive toolset for CRUD operations across all supported APIs
- OData v4 Support: Full query builder with $filter, $select, $expand, $orderby, $top, $skip
- Debug Mode: Detailed logging for troubleshooting
Prerequisites
- Rust (1.70 or later) - Install Rust
- SAP Cloud ALM Access: Either:
- Production: Service binding credentials (client_id, client_secret, tenant, region)
- Sandbox: API key from SAP API Business Hub
Installation
Build from Source
# Clone and navigate to the project directory
git clone https://github.com/consetto/sap-cloud-alm-odata-mcp.git
cd sap-cloud-alm-odata-mcp
# Build the release binary
cargo build --release
# The binary will be at: ./target/release/sap-cloud-alm-mcp
Configuration
Create a config.json file in the project directory (or specify a custom path with --config).
Option A: OAuth2 Mode (Production)
For connecting to your SAP Cloud ALM tenant:
{
"tenant": "your-tenant-name",
"region": "eu10",
"client_id": "sb-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx!bxxxxx|calm!bxxxxx",
"client_secret": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx=",
"debug": false,
"timeout_seconds": 30
}
Fields:
| Field | Required | Description |
|---|---|---|
tenant |
Yes | Your SAP Cloud ALM tenant identifier |
region |
Yes | SAP region (eu10, eu20, us10, ap10, jp10, ca10, eu11, cn20) |
client_id |
Yes | OAuth2 client ID from service binding |
client_secret |
Yes | OAuth2 client secret from service binding |
debug |
No | Enable debug logging (default: false) |
timeout_seconds |
No | HTTP request timeout (default: 30) |
Option B: Sandbox Mode (Testing)
For testing against the SAP API Business Hub sandbox:
{
"sandbox": true,
"api_key": "your-sap-sandbox-api-key",
"debug": true,
"timeout_seconds": 30
}
Fields:
| Field | Required | Description |
|---|---|---|
sandbox |
Yes | Must be true to enable sandbox mode |
api_key |
Yes | Your API key from SAP API Business Hub |
debug |
No | Enable debug logging (default: false) |
timeout_seconds |
No | HTTP request timeout (default: 30) |
Getting a Sandbox API Key:
- Visit SAP API Business Hub
- Log in with your SAP account
- Navigate to any SAP Cloud ALM API (e.g., CALM_CDM_ODATA)
- Click "Show API Key" to reveal your key
Running the Server
Standalone (for testing)
# With default config.json
./target/release/sap-cloud-alm-mcp
# With custom config file
./target/release/sap-cloud-alm-mcp --config /path/to/config.json
# With debug mode enabled
./target/release/sap-cloud-alm-mcp --debug
With Claude Desktop
Add the server to your Claude Desktop configuration:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"sap-cloud-alm": {
"command": "/absolute/path/to/sap-cloud-alm-mcp",
"args": ["--config", "/absolute/path/to/config.json"]
}
}
}
After updating the configuration, restart Claude Desktop.
With MCP Inspector (for debugging)
npx @modelcontextprotocol/inspector ./target/release/sap-cloud-alm-mcp --config config.json
Available Tools
Note: Tools marked with ⚠️ Experimental are write operations that modify data in SAP Cloud ALM. These tools require explicit user confirmation before execution.
Features API (OData)
| Tool | Description |
|---|---|
list_features |
List features with OData filtering |
get_feature |
Get a single feature by UUID |
create_feature |
⚠️ Experimental - Create a new feature |
update_feature |
⚠️ Experimental - Update an existing feature |
delete_feature |
⚠️ Experimental - Delete a feature |
list_feature_statuses |
List available status codes |
list_feature_priorities |
List available priority codes |
list_external_references |
List external references |
create_external_reference |
⚠️ Experimental - Create an external reference |
delete_external_reference |
⚠️ Experimental - Delete an external reference |
Documents API (OData)
| Tool | Description |
|---|---|
list_documents |
List documents with filtering |
get_document |
Get a single document |
create_document |
⚠️ Experimental - Create a new document |
update_document |
⚠️ Experimental - Update a document |
delete_document |
⚠️ Experimental - Delete a document |
list_document_types |
List available document types |
list_document_statuses |
List available statuses |
Tasks API (REST)
| Tool | Description |
|---|---|
list_tasks |
List tasks for a project |
get_task |
Get task details |
create_task |
⚠️ Experimental - Create a new task |
update_task |
⚠️ Experimental - Update a task |
delete_task |
⚠️ Experimental - Delete a task |
list_task_comments |
List comments on a task |
create_task_comment |
⚠️ Experimental - Add a comment to a task |
list_task_references |
List task references |
list_workstreams |
List workstreams |
list_deliverables |
List deliverables |
Projects API (REST)
| Tool | Description |
|---|---|
list_projects |
List all projects |
get_project |
Get project details |
create_project |
⚠️ Experimental - Create a new project |
list_project_timeboxes |
List sprints/timeboxes |
list_project_teams |
List team members |
list_programs |
List all programs |
get_program |
Get program details |
Test Management API (OData)
| Tool | Description |
|---|---|
list_testcases |
List manual test cases |
get_testcase |
Get test case details |
create_testcase |
⚠️ Experimental - Create a test case |
update_testcase |
⚠️ Experimental - Update a test case |
delete_testcase |
⚠️ Experimental - Delete a test case |
list_test_activities |
List test activities |
create_test_activity |
⚠️ Experimental - Create a test activity |
list_test_actions |
List test actions |
create_test_action |
⚠️ Experimental - Create a test action |
Process Hierarchy API (OData)
| Tool | Description |
|---|---|
list_hierarchy_nodes |
List process hierarchy nodes |
get_hierarchy_node |
Get a hierarchy node |
create_hierarchy_node |
⚠️ Experimental - Create a hierarchy node |
update_hierarchy_node |
⚠️ Experimental - Update a hierarchy node |
delete_hierarchy_node |
⚠️ Experimental - Delete a hierarchy node |
Analytics API (OData)
| Tool | Description |
|---|---|
query_analytics_dataset |
Query a generic analytics dataset by provider name |
list_analytics_providers |
List available data providers |
get_analytics_requirements |
Get requirements analytics data |
get_analytics_tasks |
Get tasks analytics data |
get_analytics_defects |
Get defects analytics data |
get_analytics_features |
Get features analytics data |
get_analytics_tests |
Get tests analytics data |
get_analytics_quality_gates |
Get quality gates analytics data |
get_analytics_projects |
Get projects analytics data |
get_analytics_configuration_items |
Get configuration items analytics data |
get_analytics_exceptions |
Get exceptions analytics data |
get_analytics_jobs |
Get jobs analytics data |
get_analytics_messages |
Get messages analytics data |
get_analytics_metrics |
Get metrics analytics data |
get_analytics_monitoring_events |
Get monitoring events analytics data |
get_analytics_requests |
Get requests analytics data |
get_analytics_scenario_executions |
Get scenario executions analytics data |
get_analytics_service_levels |
Get service levels analytics data |
get_analytics_status_events |
Get status events analytics data |
Process Monitoring API (OData)
| Tool | Description |
|---|---|
list_business_processes |
List business processes with OData filtering |
get_business_process |
Get a business process by ID |
list_solution_processes |
List solution processes with OData filtering |
get_solution_process |
Get a solution process by ID |
list_solution_process_flows |
List solution process flows with OData filtering |
list_solution_value_flow_diagrams |
List solution value flow diagrams with OData filtering |
list_process_assets |
List process assets with OData filtering |
Logs API (REST)
| Tool | Description |
|---|---|
get_logs |
Get logs (OpenTelemetry format) |
post_logs |
⚠️ Experimental - Post logs |
Example Usage with Claude
Once configured with Claude Desktop, you can interact naturally:
"List all my SAP Cloud ALM projects"
"Show me the features in project XYZ"
"Create a new task in project ABC with title 'Fix login bug' and assign it to John"
"What are the open test cases for the current sprint?"
"Show me the process hierarchy for our S/4HANA implementation"
Debug Mode
Enable debug mode for troubleshooting:
- Set
"debug": truein config.json, or - Use the
--debugcommand line flag
Debug output includes:
- All MCP messages (sent/received)
- API requests and responses
- Authentication flow details
- A trace file at
/tmp/sap_calm_mcp_trace_{timestamp}.log
API Endpoints
The server connects to the following SAP Cloud ALM APIs:
| API | Type | Base Path |
|---|---|---|
| Features | OData v4 | /api/calm-features/v1 |
| Documents | OData v4 | /api/calm-documents/v1 |
| Tasks | REST | /api/calm-tasks/v1 |
| Projects | REST | /api/calm-projects/v1 |
| Test Management | OData v4 | /api/calm-testmanagement/v1 |
| Process Hierarchy | OData v4 | /api/calm-processhierarchy/v1 |
| Analytics | OData v4 | /api/calm-analytics/v1 |
| Process Monitoring | OData v4 | /api/calm-processmonitoring/v1 |
| Logs | REST | /api/calm-logs/v1 |
Production URL Pattern: https://{tenant}.{region}.alm.cloud.sap
Sandbox URL: https://sandbox.api.sap.com/SAPCALM
Troubleshooting
Authentication Errors
OAuth2 Mode:
- Verify your client_id and client_secret are correct
- Ensure your service binding has the required scopes
- Check that the tenant and region match your SAP Cloud ALM instance
Sandbox Mode:
- Verify your API key is valid and not expired
- Check that sandbox mode is enabled (
"sandbox": true)
Connection Issues
- Ensure your network allows connections to SAP Cloud ALM endpoints
- Check if a proxy is required and configure it at the OS level
- Increase
timeout_secondsfor slow connections
Debug Tips
- Enable debug mode to see detailed logs
- Check the trace file for full request/response details
- Use MCP Inspector to test tools interactively
License
MIT License
Contributing
This repository is discontinued and no longer accepts contributions. Please open issues and pull requests against calmcp - CALM (Cloud ALM) MCP instead.
Disclaimer
This software is provided "as is", without warranty of any kind, express or implied.
No Responsibility
The author(s) and contributor(s) of this tool assume no responsibility or liability for any damages, losses, or consequences that may result from the use or misuse of this software. This includes, but is not limited to:
- Any kind of data loss
- Any damage to systems, networks, or data
- Any legal consequences resulting from unauthorized or improper use
- Any business losses or operational disruptions
- Any security incidents or breaches
