BTP CF MCP Server
The Cloud Foundry V3 API on SAP BTP as MCP tools — apps, orgs, spaces, services, routes and quotas — declared in one JSON config file and run by odata-mcp-proxyodata-mcp-proxyA config-driven proxy that turns OData and REST endpoints into MCP tools from a JSON file — no code — and runs on BTP Cloud Foundry against BTP Destinations.independent, btp.
The btp-cf-api-config.json file is the whole of it: it names the Cloud Foundry V3 entity sets and the operations allowed on each, and odata-mcp-proxyodata-mcp-proxyA config-driven proxy that turns OData and REST endpoints into MCP tools from a JSON file — no code — and runs on BTP Cloud Foundry against BTP Destinations.independent, btp registers the matching MCP tools at startup. The surface runs from apps, builds, droplets and tasks through organisations, spaces, roles and users to service instances and bindings, routes, security groups, buildpacks, feature flags, stacks and the org and space quotas, each with the operations the API permits — Jobs is get only, Processes has list, get and update and nothing else. Calls leave over REST with OAuth2 through a BTP Destination named CF_API, so token handling sits in the platform and not in the repository. The README puts it beside the SAP Application Router@sap/approuterSAP's Node.js application router: the single entry point in front of a business application's microservices, which authenticates the user, forwards each request to a backend by route and serves static content.sap official, btp: a ready-made runtime you configure, not code you write.
Facts
Where it sits
Who is behind it
In the atlas: maintains 25, contributes to 39, wrote 12@lemaiwomaintainer
Before choosing this
Conditions
PracticalFunctional boundary
It administers a live Cloud Foundry landscape: Apps, Organizations, Spaces, ServiceInstances and SecurityGroups all carry create, update and delete alongside list and get. What a caller can reach is set by the role they hold, and the three templates in xs-security.json are MCPViewer for read, MCPEditor for read and write, and MCPAdmin for full administrative access.
PolicySAP API Policy 4.2026a§ 1.1, 1.2, 2.2.2from Agent access to your systemsAn MCP server uses SAP APIs to supply tools, resources or data to an agent.
- § 1.1 Published APIs. Published APIs are made available for the documented purposes identified by SAP, including integration, extensions and data exchange.
- § 1.2 Non-Published APIs. Customer and third-party applications must not access non-published APIs except where documentation permits it or SAP otherwise authorizes it.
- § 2.2.2 AI call sequences and data extraction. Outside SAP-endorsed architectures, data services or expressly identified pathways, the policy prohibits specified agentic API use and systematic or large-scale extraction.
MCP does not replace the API's documented-use boundary. Check that every endpoint is published for the intended use and whether the policy's AI-call or extraction provisions apply to the design.
SAP API Policy 4.2026a →What it declares
Every artifact
- Type
- MCP server
- Origin
- Independently maintained
- Runtime
- Node.js
- Runs on
- Cloud Foundrylocal
As an MCP server
- Runs as
- central serverlocal process
- Transport
- HTTPstdio
- Authentication
- OAuth / OIDCBTP destination
- Guardrails
1 quoted from README show all
XSUAA (application) -- handles OAuth2 authentication with role-based access control
Connections
Giving an AI agent access to the systems you run over MCP
Cloud Foundry runtime of SAP BTP for polyglot applications
Config-driven proxy turning OData and REST endpoints into MCP tools
OAuth server issuing JWTs and holding scopes for BTP apps
Cloud Foundry runtime of SAP BTP for polyglot applications
Proxy from cloud apps to on-premise systems via Cloud Connector
Named, credentialed addresses of other systems resolved at runtime
Download
Architecture
Download
npm start runs the proxy binary against the config fileCF_API, and the OAuth2 token handling behind every calldefault-env.jsonCF_API.README
quoted from lemaiwo/btp-cf-mcp-server under MIT, readBTP CF MCP Server
An MCP (Model Context Protocol) server for the Cloud Foundry V3 API on SAP BTP, powered by odata-mcp-proxy. It exposes the CF V3 API as MCP tools, allowing AI assistants like Claude to manage your Cloud Foundry landscape through natural language.
The entire server is defined through a single JSON config file -- no custom code required.
How It Works
This project uses the odata-mcp-proxy npm package, which maps OData/REST services to MCP tools based on a configuration file. You provide a config describing your APIs and entity sets, and the proxy generates the corresponding MCP tools automatically.
AI Assistant (Claude, Cursor, etc.)
|
| MCP Protocol (HTTP or stdio)
v
odata-mcp-proxy
|
| REST + OAuth2 (via BTP Destination Service)
v
Cloud Foundry V3 API
Think of it like the SAP Application Router -- a ready-made runtime you configure, not code you write.
Exposed CF V3 APIs
The config file (btp-cf-api-config.json) exposes the Cloud Foundry V3 API, organized by category:
Apps & Processes
| Tool | Operations | Description |
|---|---|---|
Apps | list, get, create, update, delete | Deploy, manage, start, and stop CF applications |
Builds | list, get, create | Stage a package into a droplet |
Deployments | list, get, create | Rolling deployments and canary releases |
Droplets | list, get, delete | Staged, runnable artifacts produced from builds |
Packages | list, get, create, delete | Application source code or Docker images for staging |
Processes | list, get, update | Running instances of an app (web, worker, etc.) |
Tasks | list, get, create | One-off processes like database migrations or batch jobs |
Orgs & Spaces
| Tool | Operations | Description |
|---|---|---|
Organizations | list, get, create, update, delete | Top-level containers for spaces, apps, and users |
Spaces | list, get, create, update, delete | Subdivisions within an org for deploying apps and services |
Roles | list, get, create, delete | User role assignments (OrgManager, SpaceDeveloper, etc.) |
Users | list, get, create, update, delete | User accounts in the CF deployment |
Services
| Tool | Operations | Description |
|---|---|---|
ServiceInstances | list, get, create, update, delete | Provisioned instances of marketplace services |
ServiceCredentialBindings | list, get, create, update, delete | Service keys and app bindings for accessing service instances |
ServiceOfferings | list, get, update, delete | Services available in the marketplace |
ServicePlans | list, get, update, delete | Pricing/feature tiers for each service offering |
ServiceBrokers | list, get, create, update, delete | Broker applications that advertise and provision services |
ServiceRouteBindings | list, get, create, delete | Bind a service instance to a route for request interception |
ServiceUsageEvents | list, get | Historical record of service instance events for billing/auditing |
Networking
| Tool | Operations | Description |
|---|---|---|
Domains | list, get, create, update, delete | Shared or private domain names used to create routes |
Routes | list, get, create, update, delete | URL mappings that direct traffic to apps |
SecurityGroups | list, get, create, update, delete | Egress firewall rules controlling outbound app connectivity |
Platform
| Tool | Operations | Description |
|---|---|---|
Buildpacks | list, get, create, update, delete | Runtimes and frameworks for staging applications |
FeatureFlags | list, get, update | Platform-level toggles for CF features |
Stacks | list, get, create, update, delete | Root filesystems (OS base images) for running apps |
IsolationSegments | list, get, create, update, delete | Dedicated compute pools for running apps in isolated Diego cells |
Jobs | get | Track status of long-running async operations |
Quotas
| Tool | Operations | Description |
|---|---|---|
OrganizationQuotas | list, get, create, update, delete | Resource limits (memory, instances, routes, services) for orgs |
SpaceQuotas | list, get, create, update, delete | Resource limits for individual spaces within an org |
All _list tools support query parameters for filtering and pagination (page, per_page, and entity-specific filters).
Prerequisites
- Node.js 18+ (20+ recommended)
- SAP BTP account with a Cloud Foundry environment
- BTP Destination configured for the CF V3 API (
CF_API) with OAuth2 authentication - Cloud Foundry CLI (
cf) and MBT Build Tool (mbt) for deployment
Project Structure
btp-cf-mcp-server/
├── package.json # Start script + odata-mcp-proxy dependency
├── btp-cf-api-config.json # API configuration (defines all MCP tools)
├── mta.yaml # BTP Cloud Foundry deployment descriptor
├── xs-security.json # XSUAA OAuth2 configuration
├── default-env.json # Local dev credentials (gitignored)
└── LICENSE
Getting Started
1. Install dependencies
npm install
2. Configure BTP destination
Create a BTP Destination pointing to the Cloud Foundry V3 API:
| Destination | URL |
|---|---|
CF_API | https://api.cf.<region>.hana.ondemand.com |
The destination should use OAuth2 client credentials authentication.
3. Local development
Create a default-env.json with your BTP service bindings (XSUAA, Destination, Connectivity) to run locally:
npm start
This runs odata-mcp-proxy --config btp-cf-api-config.json.
4. Deploy to BTP
npm run build:btp # Build MTA archive
npm run deploy:btp # Deploy to Cloud Foundry
The MTA deployment provisions three service instances:
- Destination (lite) -- resolves the CF API endpoint and manages OAuth2 tokens
- Connectivity (lite) -- enables secure backend connectivity
- XSUAA (application) -- handles OAuth2 authentication with role-based access control
Security
The XSUAA configuration (xs-security.json) defines three role templates:
| Role | Scopes | Description |
|---|---|---|
MCPViewer | read | Read-only access |
MCPEditor | read, write | Read and write access |
MCPAdmin | read, write, admin | Full administrative access |
OAuth2 redirect URIs are pre-configured for Claude.ai, Cursor, Microsoft Teams, and local development.
Creating Your Own MCP Server
This project demonstrates how easy it is to create a custom MCP server using odata-mcp-proxy. To build your own:
-
Create a new project and install the dependency:
mkdir my-mcp-server && cd my-mcp-server npm init -y npm install odata-mcp-proxy -
Add a start script to
package.json:{ "scripts": { "start": "odata-mcp-proxy --config my-api-config.json" } } -
Define your APIs in a config file (
my-api-config.json):{ "server": { "name": "my-mcp-server", "version": "1.0.0", "description": "My custom MCP server" }, "apis": [ { "name": "my-api", "destination": "MY_BTP_DESTINATION", "pathPrefix": "/api/v1", "csrfProtected": true, "entitySets": [ { "entitySet": "Products", "description": "Product catalog", "category": "master-data", "keys": [{ "name": "Id", "type": "string" }], "operations": { "list": true, "get": true, "create": false, "update": false, "delete": false } } ] } ] } -
Add your
mta.yaml,xs-security.json, and BTP Destinations, then deploy. That's it -- no code to write.
License
MIT
Others providing
Compare all 28 on the Agent access to your systems page →- mcp-integration-suitemcp-integration-suiteAn experimental Node MCP server covering the general CPI functions of the Integration Suite, which its author recommends running alongside the TPM server for Trading Partner Management.independent, btpMCP server for the general Integration Suite functions
- mcp-is-tpmmcp-is-tpmA Java MCP server for Trading Partner Management in the Integration Suite, where trading partners, their agreements and their B2B configuration live, paired by its author with the general server.independent, btpJava MCP server for Integration Suite Trading Partner Management
- calmcpcalmcpAn MCP server in front of the SAP Cloud ALM APIs: four read tools over tasks, projects, features, documents, tests and analytics, run over stdio locally or Streamable HTTP on Cloud Foundry.independent, btpMCP server with read tools over the SAP Cloud ALM APIs
- CostingGeek/sap-mcpCostingGeek/sap-mcpA Python server that fetches sales orders from SAP's business data graph and hands them to Claude Desktop — the only entry here pointed at that API rather than at one system's own services.independent, btpPython MCP server fetching sales orders from SAP's business data graph
- mcp-sap-focusedrunmcp-sap-focusedrunSAP Focused Run's Landscape Management Database as MCP tools — hosts, systems, databases, cloud tenants, technical instances, ABAP clients, software components and product versions.independent, btpMCP tools over SAP Focused Run's Landscape Management Database
- cloud-alm-itsm-mcpcloud-alm-itsm-mcpQueries installations through SAP Cloud ALM's ITSM API — filtered by system type or customer number, with OAuth token handling and caching done for you.independent, btpMCP server querying installations via the SAP Cloud ALM ITSM API
- hana-mcp-serverhana-mcp-serverSchema discovery and guard-railed SQL against SAP HANA and HANA Cloud, with an optional layer of business metadata so an agent reads a coded column the way the business does.independent, btpMCP server for schema discovery and guarded SQL on SAP HANA
- sap_analytics_cloud_mcpsap_analytics_cloud_mcpThe SAP Analytics Cloud REST API as ninety tools across eleven service areas — content, data import and export, user management, transport, scheduling and translation.independent, btpMCP server for the SAP Analytics Cloud REST API
- mcp-sap-cpimcp-sap-cpiThe runtime half of Cloud Integration: failed messages with their full processing logs and traces, artifact deployment, security material, and a health summary.independent, btpMCP server for Cloud Integration runtime: messages, logs, deployment
- AI Core MCP ServerAI Core MCP ServerAn MCP server that exposes SAP AI Core's APIs as tools, defined entirely in one JSON config file for a proxy, so deployments, configurations and scenarios are managed through an assistant.independent, btpSAP AI Core APIs as MCP tools from one JSON config file
- BTP MCP ServerBTP MCP ServerBTP Core Services as MCP tools, and the only server in this corner that renders dashboards inside the chat — a subaccount overview with drill-down, a geomap of data-centre locations, consumption and users.independent, btpBTP Core Services as MCP tools with in-chat dashboards
- btp-sap-odata-to-mcp-serverbtp-sap-odata-to-mcp-serverExposes every OData service on an S/4HANA or ECC system as MCP tools, in three discovery levels so a large catalogue does not have to be loaded at once.independent, btpExposes S/4HANA or ECC OData services as MCP tools
- CI MCP ServerCI MCP ServerAn MCP server that exposes SAP Cloud Integration's OData APIs as tools, defined entirely in one JSON config file, so an assistant works integration content, logs and configurations in natural language.independent, btpSAP Cloud Integration OData APIs as MCP tools
- odata-mcp-proxyodata-mcp-proxyA config-driven proxy that turns OData and REST endpoints into MCP tools from a JSON file — no code — and runs on BTP Cloud Foundry against BTP Destinations.independent, btpConfig-driven proxy turning OData and REST endpoints into MCP tools
- sap-pi-mcp-serversap-pi-mcp-serverThe only entry pointed at SAP PI and PO rather than at Cloud Integration — monitoring and Integration Directory metadata from the middleware that came before.independent, btpMCP server for SAP PI and PO monitoring and directory metadata
- sap-bdc-mcp-serversap-bdc-mcp-serverAn MCP server over SAP's BDC Connect SDK that creates, validates, publishes and deletes Databricks Delta shares as data products in SAP Business Data Cloud.independent, btpMCP server managing Delta shares in SAP Business Data Cloud
- @mariodefe/sap-datasphere-mcp@mariodefe/sap-datasphere-mcpForty-five tools across a Datasphere tenant — discovery, metadata, analytics, ETL extraction, database users, lineage and column profiling — with config-driven PII masking applied before anything reaches the model.independent, btpMCP server with forty-five tools across a Datasphere tenant
- midasol/sap-mcp-servermidasol/sap-mcp-serverA Python MCP server for SAP Gateway with four read-only tools that authenticate, query, fetch one entity and list services, and one of the few here that publishes its test results.independent, btpPython MCP server for SAP Gateway OData operations
- odata_mcp_goodata_mcp_goA Go binary that bridges any OData v2 or v4 service to MCP — and can collapse the whole service into one tool when the generated tool list is too large to be usable.independent, btpGo binary bridging any OData v2 or v4 service to MCP
- odata_mcpodata_mcpThe Python original: reads an OData v2 service's metadata and generates MCP tools from it, with the SAP-specific conversions the raw protocol leaves to you.independent, btpPython bridge generating MCP tools from OData v2 metadata
- sap-bdc-mcpsap-bdc-mcpDiscovery and contract tooling for SAP Business Data Cloud — ORD discovery, CSN contract checks and non-executing share planning — behind redaction, policy gates and bounded output.independent, btpMCP tooling for SAP Business Data Cloud discovery and contracts
- mcp-sap-datasphere-servermcp-sap-datasphere-serverThe read-only Datasphere server: explore spaces, list assets, preview rows, profile columns and summarise analytical models — and nothing that changes anything, by design.independent, btpRead-only MCP server for exploring SAP Datasphere
- MCP Server for SAP BTP AdministrationMCP Server for SAP BTP AdministrationSAP-hosted MCP endpoint that exposes BTP account administration — accounts, security, services and connectivity — as tools an AI client discovers and calls on your behalf.sap official, btpSAP-hosted MCP endpoint for BTP account administration
- SAP LeanIX MCP ServerSAP LeanIX MCP ServerHosted MCP endpoint onto an SAP LeanIX instance, exposing selected enterprise-architecture APIs as tools — fact sheets, applications, completeness and custom reports.sap official, btpHosted MCP endpoint onto an SAP LeanIX instance
- SAP-samples/hana-cli-claude-pluginSAP-samples/hana-cli-claude-pluginA Claude Code plugin that registers the MCP server of hana-cli, so Claude Code can work on SAP HANA Cloud and on-premise SAP HANA databases.sap official, btpClaude Code plugin registering hana-cli's MCP server
- SAP-samples/hana-developer-cli-tool-exampleSAP-samples/hana-developer-cli-tool-exampleA developer-centric command line for SAP HANA, built for local development outside SAP tooling and connecting to a local, cloud or remote HANA instance the same way.sap official, btpDeveloper-centric command line for SAP HANA
- cpi-mcp-servercpi-mcp-serverA Go server over Cloud Integration's design-time content — integration packages and integration flows, listed and searched by id, version, name, vendor or mode.independent, btpGo MCP server over Cloud Integration packages and integration flows
Details
Sources
Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.
Compatibility and provenance
History in the atlas
- The concern it answers is reaching into an SAP system from outside, split out of MCP servers on this day; the sentence on the edge is unchanged.
- The server required the Cloud Foundry runtime and the Destination service as two separate dependencies. The connection says how they relate: the calls go to the CF API and run through the destination.
- First seen.
For your agent
- Ref
artifact:lemaiwo-btp-cf-mcp-server- JSON
- /artifacts/lemaiwo-btp-cf-mcp-server.json
- MCP
- Connecting an agent