calmcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP transport port. | |
| CALM_DEBUG | No | Set to 'true' for verbose tracing. | |
| CALM_REGION | No | Region (e.g. 'eu10') for OAuth2 mode. | |
| CALM_TENANT | No | Tenant subdomain for OAuth2 mode. | |
| CALM_API_KEY | No | Sandbox API key (required when CALM_SANDBOX is 'true'). | |
| CALM_SANDBOX | No | Set to 'true' to use the SAP Business Accelerator Hub sandbox with CALM_API_KEY. | |
| CALM_CLIENT_ID | No | OAuth2 client ID from the service binding. | |
| CALM_PUBLIC_URL | No | Public base URL used in OAuth metadata and the callback. | |
| CALM_CORS_ORIGINS | No | Allowed CORS origins for HTTP transport. | |
| CALM_HTTP_API_KEY | No | Shared secret for the alternative API-key authentication path. | |
| CALM_CLIENT_SECRET | No | OAuth2 client secret from the service binding. | |
| CALM_TIMEOUT_SECONDS | No | Request timeout in seconds. | |
| CALM_DESTINATION_NAME | No | Name of a bound BTP Destination (BTP mode; takes precedence over other auth modes). | |
| CALM_DCR_SIGNING_SECRET | No | Secret for HMAC-signing dynamic client registrations. |
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 |
|---|---|
| calm_listA | List or query any SAP Cloud ALM collection (tasks, projects, features, documents, test cases, hierarchy nodes, cross-library objects, landscape objects, status events, code lists). Choose a "resource"; OData resources accept $filter/$select/$expand/$orderby/$top/$skip; REST resources read only the params calm_resources lists for them, and any other param (including $filter) is rejected rather than ignored. Defects: resource="tasks", task_type="CALMDEF". To answer "how many?" pass count_only=true, or group_by="status" for a breakdown — never list records to count them, as a few hundred tasks overflow most clients. See calm_resources for the full catalog. |
| calm_getA | Fetch a single SAP Cloud ALM entity by id (a feature can also be fetched by display id like "6-123"). Choose a "resource" and pass its "id". See calm_resources for valid ones. A task has ~70 fields: pass fields="displayId,title,status,..." to keep the answer small. |
| calm_analyticsA | Query an SAP Cloud ALM analytics provider (Defects, Tasks, Tests, Features, Projects, Metrics, ...). Supports $filter, and aggregates: it is the tool for tenant-wide totals and breakdowns. It does NOT sort — $orderby is ignored, so sort the records yourself. Every provider spans the whole tenant, so this is how you count without naming a project: count_only=true for a total, group_by="status" for a breakdown (Defects: "defectStatus"). Tasks covers user stories, defects and requirements; filter them by type CODE, e.g. filter="typeID eq 'CALMUS'" (the type text is silently ignored). |
| calm_resourcesA | Discovery helper: lists every resource/provider the other tools accept, their required parameters, the task type/status/priority code lists, and worked recipes. Pass topic="recipes" for multi-step examples, or a resource/provider name to focus. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 4 tools
calm_get (single entity), calm_list (collection query), and calm_analytics (tenant-wide aggregates) have broadly distinct roles, and calm_resources is a clear discovery helper. However, calm_list and calm_analytics overlap meaningfully — both expose count_only and group_by and both can count records — so an agent could reasonably pick either for a counting task.
All four tools share a consistent 'calm_' prefix, which gives a predictable family feel. The suffixes mix verb-style (get, list) with noun-style (analytics, resources), so it is not a strict verb_noun pattern, but it remains readable and predictable.
Four generic meta-tools efficiently cover a very broad SAP Cloud ALM surface (tasks, projects, defects, test cases, etc.) by parameterizing resources. It leans slightly thin — only one tool handles the discovery/catalog role — but each tool earns its place.
For a query/read-oriented surface, coverage looks strong: single fetch, collection listing with full OData params, tenant-wide analytics, and a resource/code-list discovery helper with recipes. The main gap is the absence of any mutation operations (create/update/delete), which is likely intentional but limits lifecycle coverage.