Skip to main content
Glama
facusada

sap-btp-destination-mcp

by facusada

SAP BTP Destination MCP

App en Python para consumir un destination SAP BTP con OAuth2ClientCredentials, exponer un endpoint HTTP y publicar tools MCP sobre FastMCP.

Que hace

  • Pide un access token al Token Service URL.

  • Lee un destination usando GET /destination-configuration/v1/destinations/<name>.

  • Expone endpoints REST para healthcheck y prueba del destination.

  • Expone las mismas operaciones como tools MCP en /mcp.

Variables de entorno

Modo manual, tomando los datos del destination que pasaste:

SAP_DESTINATION_NAME=mcp-destination
SAP_DESTINATION_SERVICE_URL=https://destination-configuration.cfapps.us10.hana.ondemand.com
SAP_TOKEN_URL=https://mcp-test.authentication.us10.hana.ondemand.com/oauth/token
SAP_CLIENT_ID=sb-clone6ab3984cf18e4ae991b5b02eab972d9b!b646663|destination-xsappname!b62
SAP_CLIENT_SECRET=<tu-secret>

Podés copiarlas a un .env.

Credenciales correctas para Destination Service

Para consumir el Destination Service de forma estándar en SAP BTP:

  • clientid, clientsecret y uri salen del service key del Destination Service.

  • url sale del service key del XSUAA.

Las credenciales de XSUAA por sí solas pueden emitir token, pero no necesariamente tienen autorización para llamar al Destination Service. Si pasa eso, SAP responde 403 Forbidden.

La app ahora soporta estos formatos además del .env manual:

  • VCAP_SERVICES

  • SAP_DESTINATION_SERVICE_KEY con el JSON del service key del Destination Service

  • SAP_XSUAA_CREDENTIALS con el JSON del service key del XSUAA

Ejemplo:

export SAP_DESTINATION_SERVICE_KEY='{"clientid":"...","clientsecret":"...","uri":"https://destination-configuration.cfapps.us10.hana.ondemand.com"}'
export SAP_XSUAA_CREDENTIALS='{"url":"https://mcp-test.authentication.us10.hana.ondemand.com"}'

Ejecutar local

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
uvicorn app.main:app --reload

Endpoints

  • GET /health

  • GET /destination/{destination_name}

  • GET /destination/{destination_name}/call?path=destination-configuration/v1/subaccountDestinations

  • MCP endpoint: GET/POST /mcp

Deploy a Cloud Foundry

cf push
cf set-env sap-btp-mcp-python SAP_DESTINATION_SERVICE_URL https://destination-configuration.cfapps.us10.hana.ondemand.com
cf set-env sap-btp-mcp-python SAP_TOKEN_URL https://mcp-test.authentication.us10.hana.ondemand.com/oauth/token
cf set-env sap-btp-mcp-python SAP_CLIENT_ID 'sb-clone6ab3984cf18e4ae991b5b02eab972d9b!b646663|destination-xsappname!b62'
cf set-env sap-btp-mcp-python SAP_CLIENT_SECRET '<tu-secret>'
cf restart sap-btp-mcp-python

Si la app está bindeada a destination y xsuaa, también puede resolver credenciales automáticamente desde VCAP_SERVICES.

Deploy estilo tutorial (recomendado)

Este flujo replica la idea del video de deploy en BTP pero usando tu app actual en Python.

  1. Logueate y selecciona org/space:

cf login
cf target -o "<tu-org>" -s "<tu-space>"
  1. Crea servicios (si no existen):

cf create-service destination lite mcp-destination
cf create-service xsuaa application mcp-xsuaa -c xs-security.json
  1. Prepara variables de despliegue:

cp vars.btp.example.yml vars.btp.yml
  1. Deploy con binding automatico a servicios:

./scripts/deploy_btp.sh
  1. Verifica que la app quedo arriba:

cf app sap-btp-mcp-python

Notas:

  • manifest.btp.yml define bindings a destination y xsuaa.

  • La app toma credenciales desde VCAP_SERVICES, asi que no necesitas setear SAP_CLIENT_SECRET manualmente en CF.

Referencias

F
license - not found
-
quality - not tested
-
maintenance - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/facusada/mcp-btp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server