{"ref":"artifact:lemaiwo-btp-cf-mcp-server","page":"/artifacts/lemaiwo-btp-cf-mcp-server","json":"/artifacts/lemaiwo-btp-cf-mcp-server.json","generated":"2026-10-30","drafted_with_ai":true,"entity":{"id":"lemaiwo-btp-cf-mcp-server","name":"BTP CF MCP Server","artifact_type":"mcp-server","ecosystem":"btp","domain":"ai-and-agents","secondary_domains":["operations-and-runtime"],"origin_ring":"independent","description":{"one_line":"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-proxy](artifact:lemaiwo-odata-mcp-proxy).","short":"Cloud Foundry V3 API on SAP BTP as MCP tools","what_it_solves":"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-proxy](artifact:lemaiwo-odata-mcp-proxy) 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](artifact:sap-approuter): a ready-made runtime you configure, not code you write.","when_not_to_use":"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.","to_build_on_it":"Taking this one further is editing `btp-cf-api-config.json` — adding an entity set, or narrowing the operations on one — and redeploying the MTA. The README also gives the recipe for a different server from the same parts: `npm install odata-mcp-proxy`, a start script pointing at your own config, and a config naming the destination, path prefix, entity sets, keys and the operations each one allows."},"links":{"repo":"https://github.com/lemaiwo/btp-cf-mcp-server"},"identity":{"author":"Wouter Lemaire","license":"MIT"},"source_available":true,"compat":{"runtimes":["node"],"deployment":["cf","local"]},"provides":[{"capability":"capability:agent-systems-access","what_it_does":"Puts the Cloud Foundry V3 API of a BTP account in front of an assistant as MCP tools, declared as entity sets and operations in one config file rather than written as a server.","sources":[{"url":"https://github.com/lemaiwo/btp-cf-mcp-server","title":"BTP CF MCP Server — README","checked":"2026-09-19","quote":"It exposes the CF V3 API as MCP tools, allowing AI assistants like Claude to manage your Cloud Foundry landscape through natural language."},{"url":"https://github.com/lemaiwo/btp-cf-mcp-server","title":"BTP CF MCP Server — README","checked":"2026-09-19","quote":"The entire server is defined through a single JSON config file -- no custom code required."}]}],"requires":[{"ref":"artifact:lemaiwo-odata-mcp-proxy","for":"the runtime that reads the config and registers the tools; the repository holds no application code, and `npm start` runs the proxy binary against the config file","requirement":"required","sources":[{"url":"https://github.com/lemaiwo/btp-cf-mcp-server","title":"BTP CF MCP Server — README","checked":"2026-09-19","quote":"This runs `odata-mcp-proxy --config btp-cf-api-config.json`."}]},{"ref":"artifact:btp-destination","for":"the named address of the Cloud Foundry V3 API, `CF_API`, and the OAuth2 token handling behind every call","requirement":"required","sources":[{"url":"https://github.com/lemaiwo/btp-cf-mcp-server","title":"BTP CF MCP Server — README","checked":"2026-09-19","quote":"BTP Destination configured for the CF V3 API (`CF_API`) with OAuth2 authentication"},{"url":"https://github.com/lemaiwo/btp-cf-mcp-server","title":"BTP CF MCP Server — README","checked":"2026-09-19","quote":"Destination (lite) -- resolves the CF API endpoint and manages OAuth2 tokens"}]},{"ref":"artifact:btp-authorization-and-trust-management","for":"the OAuth2 authentication in front of the server and the three role templates that separate read, write and administrative access","requirement":"required","sources":[{"url":"https://github.com/lemaiwo/btp-cf-mcp-server","title":"BTP CF MCP Server — README","checked":"2026-09-19","quote":"XSUAA (application) -- handles OAuth2 authentication with role-based access control"}]},{"ref":"artifact:btp-connectivity","for":"one of the three service instances the MTA deployment provisions, and one of the bindings a local run needs in `default-env.json`","requirement":"required","sources":[{"url":"https://github.com/lemaiwo/btp-cf-mcp-server","title":"BTP CF MCP Server — README","checked":"2026-09-19","quote":"Connectivity (lite) -- enables secure backend connectivity"},{"url":"https://github.com/lemaiwo/btp-cf-mcp-server","title":"BTP CF MCP Server — README","checked":"2026-09-19","quote":"Create a `default-env.json` with your BTP service bindings (XSUAA, Destination, Connectivity) to run locally:"}]},{"ref":"artifact:btp-cloud-foundry-runtime","for":"the Cloud Foundry environment whose V3 API every tool calls, and where the MTA archive is deployed","requirement":"required","sources":[{"url":"https://github.com/lemaiwo/btp-cf-mcp-server","title":"BTP CF MCP Server — README","checked":"2026-09-19","quote":"SAP BTP account with a Cloud Foundry environment"}]}],"connects":[{"ref":"artifact:btp-cloud-foundry-runtime","kind":"data","protocols":["http","oauth2"],"direction":"outbound","via":"artifact:btp-destination","for":"Calling the Cloud Foundry V3 API for every tool an agent invokes, over REST, with the endpoint and the OAuth2 token resolved by a BTP destination named `CF_API`.","sources":[{"url":"https://raw.githubusercontent.com/lemaiwo/btp-cf-mcp-server/c1f29c54c3912b9a58dc6622c6b2f9e9682e8e99/README.md","title":"BTP CF MCP Server — README, architecture","checked":"2026-09-19","quote":"REST + OAuth2 (via BTP Destination Service)"},{"url":"https://raw.githubusercontent.com/lemaiwo/btp-cf-mcp-server/c1f29c54c3912b9a58dc6622c6b2f9e9682e8e99/README.md","title":"BTP CF MCP Server — README, services","checked":"2026-09-19","quote":"resolves the CF API endpoint and manages OAuth2 tokens"}]}],"type_properties":{"runs":{"value":["central-server","local-process"],"sources":[{"url":"https://github.com/lemaiwo/btp-cf-mcp-server","title":"BTP CF MCP Server — README","checked":"2026-09-19","quote":"npm run deploy:btp    # Deploy to Cloud Foundry"},{"url":"https://github.com/lemaiwo/btp-cf-mcp-server","title":"BTP CF MCP Server — README","checked":"2026-09-19","quote":"Create a `default-env.json` with your BTP service bindings (XSUAA, Destination, Connectivity) to run locally:"}]},"transports":{"value":["http","stdio"],"sources":[{"url":"https://github.com/lemaiwo/btp-cf-mcp-server","title":"BTP CF MCP Server — README","checked":"2026-09-19","quote":"MCP Protocol (HTTP or stdio)"}]},"auth":{"value":["oauth","destination"],"sources":[{"url":"https://github.com/lemaiwo/btp-cf-mcp-server","title":"BTP CF MCP Server — README","checked":"2026-09-19","quote":"The destination should use OAuth2 client credentials authentication."},{"url":"https://github.com/lemaiwo/btp-cf-mcp-server","title":"BTP CF MCP Server — README","checked":"2026-09-19","quote":"BTP Destination configured for the CF V3 API (`CF_API`) with OAuth2 authentication"}]},"guardrails":[{"source":{"url":"https://github.com/lemaiwo/btp-cf-mcp-server","title":"BTP CF MCP Server — README","checked":"2026-09-19","quote":"XSUAA (application) -- handles OAuth2 authentication with role-based access control"}}]},"maintainers":["actor:lemaiwo"],"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-19"},"drafted_with_ai":true,"history":[{"date":"2026-09-19","field":"connects","from":null,"to":"btp-cloud-foundry-runtime","reason":"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."},{"date":"2026-10-09","field":"provides","from":"capability:mcp-servers","to":"capability:agent-systems-access","reason":"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."}],"contributors":["actor:lemaiwo"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"one contributor, personally owned"},{"label":"Repository","tier":"fair","evidence":"pushed 2026-03, not archived"}],"compatibility":[{"label":"Declared for","tier":"unknown","evidence":"no BTP release lines in the atlas"},{"label":"Survived majors","tier":"unknown","evidence":"no BTP release lines in the atlas"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"poor","evidence":"none found in the tree"},{"label":"Docs","tier":"good","evidence":"README 8 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":3,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-29","npm":"not published under this name","stars":3,"forks":3,"open_issues":0,"archived":false,"pushed_at":"2026-03-11","license_spdx":"MIT","org_owned":false,"default_branch":"main","contributors":1,"tree_truncated":false,"test_files":0,"workflows":0,"other_ci":false,"readme_bytes":8099,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"readme_path":"README.md","readme_sha":"ea06024ec62dc4289d09c45d84cb9e40f06ca0bf","created_at":"2026-03-11T22:14:56Z","open_prs":0,"first_commit":"2026-03-11","last_commit":"2026-03-11","commits":1,"repo_read":"2026-10-29"},"edges":{"maintainers":[{"ref":"actor:lemaiwo","name":"Wouter Lemaire","json":"/actors/lemaiwo.json"}],"contributors":[{"ref":"actor:lemaiwo","name":"Wouter Lemaire","json":"/actors/lemaiwo.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}