协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
btp-admin【开发与工程】Administer SAP BTP through the btp-mcp-server MCP tools (subaccounts, directories, entitlements, environment instances, XSUAA role collections and roles). Use whenever the user asks to create, list, update, entitle, or delete anything in their BTP global account — e.g. "create a subaccount", "entitle a service", "set up a Cloud Foundry environment", …
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
This server exposes SAP BTP Core Services (CIS Accounts, Entitlements, Provisioning) and the XSUAA Authorization API as MCP tools. Tools follow the pattern <EntitySet>_<operation>, e.g. Subaccounts_list, Assignments_update, EnvironmentInstances_create.
| Task | Tool(s) |
|---|---|
| Global account details / GUID | GlobalAccount_list |
| List, create, update, delete subaccounts | Subaccounts_* (key: subaccountGUID) |
| Group subaccounts into folders | Directories_* (key: directoryGUID) |
| See or change service entitlements | Assignments_list, Assignments_update |
| Valid regions for new subaccounts | AllowedDataCenters_list |
| Cloud Foundry orgs / Kyma runtimes | EnvironmentInstances_* (key: environmentInstanceID) |
| What environments can be provisioned | AvailableEnvironments_list |
XSUAA app registrations (source of appId) | Applications_list, Applications_get |
| Role collections (assignable to users) | RoleCollections_* (key: roleCollectionName) |
| Roles from role templates | Roles_* (keys: roleTemplateName, roleTemplateAppId, roleName) |
| Role templates defined by apps | RoleTemplates_* (keys: roleTemplateAppId, roleTemplateName) |
Selection rules:
Assignments_update, never a create tool (Assignments has no create).EnvironmentInstances_create with environmentType: "cloudfoundry" — CF orgs are environment instances, not subaccounts._get tool — never _list plus client-side scanning.BTP list responses are verbose; an unfiltered Assignments_list or Subaccounts_list can return thousands of tokens of irrelevant fields. On every _list call:
$select only the fields you need (e.g. $select=guid,displayName,region,state for subaccounts).$filter server-side instead of listing everything and scanning (e.g. $filter=displayName eq 'dev').$top when exploring (e.g. $top=5) — raise it only if needed.GlobalAccount_list at most once per conversation and reuse the GUID.Assignments_list to one subaccount or directory — never fetch the full global entitlement tree unless explicitly asked.Subaccounts_create){
"displayName": "Dev",
"subdomain": "myorg-dev",
"region": "eu10",
"description": "Development subaccount",
"usedForProduction": "NOT_USED_FOR_PRODUCTION",
"parentGUID": "<directory GUID, omit for global account root>"
}
displayName, subdomain, region are required.subdomain must be unique within the region, lowercase, no spaces.region values come from AllowedDataCenters_list.Assignments_update){
"subaccountServicePlans": [
{
"serviceName": "hana-cloud",
"servicePlanName": "hana",
"assignmentInfo": [
{ "subaccountGUID": "<guid>", "amount": 1 }
]
}
]
}
"amount": <n> (set 0 to revoke)."enable": true / false instead of amount — the two are mutually exclusive; sending both fails.Assignments_list afterwards.EnvironmentInstances_create){
"environmentType": "cloudfoundry",
"name": "my-org",
"planName": "standard",
"serviceName": "cloudfoundry",
"landscapeLabel": "cf-eu10",
"parameters": { "instance_name": "my-org" }
}
planName and landscapeLabel values from AvailableEnvironments_list first.parameters.instance_name becomes the CF org name.EnvironmentInstances_get until state is OK (transient states: CREATING, UPDATING; CREATION_FAILED means inspect and report).RoleCollections_create){ "name": "Developer Support", "description": "Read access for support staff" }
Roles_*)Roles are identified by three keys, in this order: roleTemplateName, roleTemplateAppId, roleName. Get valid roleTemplateAppId values from Applications_list and template names from RoleTemplates_list.
Onboard a new subaccount with Cloud Foundry:
Subaccounts_create → note the returned guid (wait for state: OK via Subaccounts_get if needed).Assignments_update → entitle required service plans to that GUID.AvailableEnvironments_list → pick plan + landscape.EnvironmentInstances_create → create the CF org; poll _get until OK.Entitle a service to an existing subaccount:
Subaccounts_list with $filter on displayName).Assignments_update with the payload above.Assignments_list scoped to that subaccount.Set up authorizations:
RoleCollections_create for the new collection.RoleTemplates_list / Applications_list to find the right template and app.Roles_create / RoleCollections_update to wire roles into the collection._get/_list when the user needs certainty._delete call unless they explicitly asked for the deletion.amount vs enable on entitlements (see above) is the most common cause of failed Assignments_update calls.region (e.g. eu10); environment instances use landscapeLabel (e.g. cf-eu10). Don't interchange them.