SAP Cloud ALM MCP服务器

SAP Cloud ALM MCP服务器是一个已停止维护的模型上下文协议(MCP)服务器,原用于将SAP Cloud ALM API桥接到Claude等AI助手,支持通过自然语言管理功能、文档、任务、项目、测试用例等。

  • by consetto
  • Rust
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 consetto/sap-cloud-alm-odata-mcp

使用说明

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 /mcp with 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 .mcpb Claude Desktop extension, a Docker image, or node dist/index.js.
  • Response size: fields projection and timebox filtering keep task lists small enough for agent hosts that choke on the raw 67-attribute task payloads.

Migrating

  1. Install calmcp — see its README for the .mcpb extension, stdio, HTTP and Cloud Foundry paths.
  2. Move your credentials from config.json to environment variables: CALM_TENANT, CALM_REGION, CALM_CLIENT_ID, CALM_CLIENT_SECRET for OAuth2, or CALM_SANDBOX=true with CALM_API_KEY for the SAP Business Accelerator Hub sandbox. CALM_DEBUG and CALM_TIMEOUT_SECONDS replace debug and timeout_seconds.
  3. Replace tool calls: the read tools below map onto calm_list / calm_get / calm_analytics; call calm_resources to discover valid resource and provider values.
  4. 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:

  1. Visit SAP API Business Hub
  2. Log in with your SAP account
  3. Navigate to any SAP Cloud ALM API (e.g., CALM_CDM_ODATA)
  4. 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:

  1. Set "debug": true in config.json, or
  2. Use the --debug command 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_seconds for slow connections

Debug Tips

  1. Enable debug mode to see detailed logs
  2. Check the trace file for full request/response details
  3. 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