Btp Mcp Server

io.github.ABRANJAN07由 GitHub 帳號 ABRANJAN07 發布v1.0.0更新於 Oct 24, 2026

Discover SAP BTP services, browse service catalog, check running instances, query dests, & more

概覽

AI 產生的概覽

一個本機 MCP 伺服器,將 AI 助理連接到 SAP BTP API,用來瀏覽服務目錄、查看執行中的實例並檢查目的地設定。

可以做什麼
瀏覽 BTP 全域服務目錄及各服務的方案(包含免費方案),並針對描述的用途(例如 CAP 應用中的非同步訊息傳遞、連接地端 SAP 系統)推薦合適的服務。列出子帳戶中執行中的服務實例並檢查其健康狀態。讀取子帳戶中設定的目的地(destination)及其使用的驗證方式。回應預設快取五分鐘,列表端點會抓取所有分頁而非只取首批結果。
適用情境
適合 SAP BTP 開發人員:不必切換到 BTP Cockpit,就能向助理詢問有哪些服務與方案、目前執行且健康的實例、已設定的目的地,以及某個用途該選用哪種服務。
執行需求
以 pip 安裝的 Python 套件形式在本機執行。需要 BTP 子帳戶的 Service Manager 服務金鑰,透過環境變數提供:BTP_CLIENT_ID、BTP_CLIENT_SECRET、BTP_TOKEN_URL、BTP_SM_URL、BTP_SUBACCOUNT_ID 和 BTP_DESTINATION_URL。需要可連線 BTP API 的網路;CACHE_TTL_SECONDS 為選用項目。
安裝前請注意
此伺服器持有 BTP OAuth 用戶端憑證(BTP_CLIENT_ID 和 BTP_CLIENT_SECRET),並以此代表你呼叫 Service Manager 與 Destination API。請勿將 .env 檔案提交到版本控制。所列工具會讀取目錄、實例與目的地資料;目的地細節可能揭露外部系統的驗證方式。權限工具目前停用,啟用需另備 Cloud Management Service 金鑰。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Btp Mcp Server,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

SAP BTP Services Discovery — MCP Server

A production-ready MCP (Model Context Protocol) server that exposes SAP BTP platform APIs as tools for any MCP-compatible AI agent — Claude Code, Cursor, Joule Studio, LangGraph agents, or any other MCP client.

[image]

Connect any AI agent to your SAP BTP landscape via the Model Context Protocol.

[PyPI version] [Python] [MCP] [License: MIT]


What is this?

The BTP MCP Server is an open-source Model Context Protocol server that connects AI agents to the SAP Business Technology Platform (BTP) APIs.

Instead of switching to BTP Cockpit to answer common developer questions, you can ask your AI agent directly:

  • "What BTP services are available in my account?"
  • "Is HANA Cloud already running in my subaccount?"
  • "I need async messaging in my CAP app — what should I use?"
  • "What destinations are configured and what authentication do they use?"

Works with Claude Code, Cursor, Joule Studio, LangGraph agents, and any other MCP-compatible AI client.


Tools

ToolWhat it answers
list_btp_servicesWhat BTP services exist in the global catalog?
get_btp_service_plansWhat plans does service X have? Are any free?
list_btp_instancesWhat is running in my subaccount? Is it healthy?
get_btp_destinationsWhat external connections are configured?
recommend_btp_serviceGiven a use case, what service should I use?

Installation

bash
pip install btp-mcp-server

Prerequisites

You need a Service Manager service key from your BTP subaccount.

Steps to get one:

  1. Go to BTP Cockpit → your subaccount → Services → Service Marketplace
  2. Search for Service Manager → Create instance with plan subaccount-admin
  3. Create a Service Key on the instance
  4. The key JSON contains your credentials — see Configuration below

Configuration

All configuration is via environment variables. Copy .env.example to .env and fill in the values from your Service Manager service key:

bash
# From your Service Manager service key JSONBTP_CLIENT_ID=your-client-id          # from "clientid"BTP_CLIENT_SECRET=your-client-secret  # from "clientsecret"BTP_TOKEN_URL=https://your-subdomain.authentication.us10.hana.ondemand.com/oauth/tokenBTP_SM_URL=https://service-manager.cfapps.us10.hana.ondemand.com  # from "sm_url"
# From BTP Cockpit → your subaccount → Overview → "Subaccount ID"BTP_SUBACCOUNT_ID=your-subaccount-guid
# Destination Service URL (region-specific — adjust region if needed)BTP_DESTINATION_URL=https://destination.cfapps.us10.hana.ondemand.com
# Optional: cache TTL in seconds (default: 300)# CACHE_TTL_SECONDS=300

Note: Never commit your .env file to GitHub. Use .env.example (with no real values) as a reference template.


Usage

With Claude Desktop

Add to your claude_desktop_config.json:

Mac: ~/.claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

json
{  "mcpServers": {    "sap-btp": {      "command": "btp-mcp-server",      "env": {        "BTP_CLIENT_ID": "your-client-id",        "BTP_CLIENT_SECRET": "your-client-secret",        "BTP_TOKEN_URL": "https://your-subdomain.authentication.us10.hana.ondemand.com/oauth/token",        "BTP_SM_URL": "https://service-manager.cfapps.us10.hana.ondemand.com",        "BTP_SUBACCOUNT_ID": "your-subaccount-guid",        "BTP_DESTINATION_URL": "https://destination.cfapps.us10.hana.ondemand.com"      }    }  }}

Restart Claude Desktop. Then ask:

  • "What BTP services do I have available?"
  • "Are there any failed service instances?"
  • "I need to connect to an on-premise SAP system — what BTP service handles that?"

With Claude Code / Cursor

json
{  "mcpServers": {    "sap-btp": {      "command": "btp-mcp-server",      "env": {        "BTP_CLIENT_ID": "...",        "BTP_CLIENT_SECRET": "...",        "BTP_TOKEN_URL": "...",        "BTP_SM_URL": "...",        "BTP_SUBACCOUNT_ID": "..."      }    }  }}

With a LangGraph agent

python
from langchain_mcp_adapters.client import MultiServerMCPClientfrom langgraph.prebuilt import create_react_agentfrom langchain_anthropic import ChatAnthropic
async with MultiServerMCPClient({    "btp": {        "command": "btp-mcp-server",        "transport": "stdio",        "env": {            "BTP_CLIENT_ID": "...",            "BTP_CLIENT_SECRET": "...",            "BTP_TOKEN_URL": "...",            "BTP_SM_URL": "...",            "BTP_SUBACCOUNT_ID": "...",        }    }}) as client:    tools = client.get_tools()    agent = create_react_agent(        ChatAnthropic(model="claude-sonnet-4-6"),        tools    )    result = await agent.ainvoke({        "messages": [{"role": "user", "content":            "What BTP services do I have? Is there anything I should use for messaging?"        }]    })

With Joule Studio (BTP)

Deploy in HTTP mode and register as a BTP Destination:

bash
MCP_TRANSPORT=http btp-mcp-server# Server starts at http://0.0.0.0:8080/mcp

Then in BTP Cockpit → Destinations → create a destination pointing to your server URL. In Joule Studio Agent Builder → Tools → Add MCP Server → select the destination.


Running locally from source

bash
git clone https://github.com/ABRANJAN07/btp-mcp-server.gitcd btp-mcp-server
pip install -r requirements.txtcp .env.example .env# fill in .env with your BTP credentials
# Test BTP connectivitypython test_connection.py
# Start the MCP serverpython server.py

Running tests

Tests use mocked BTP responses — no real credentials needed.

bash
pip install -r requirements.txtpytest tests/ -v

Expected output: 17 tests passed


Project structure

btp-mcp-server/├── server.py              ← MCP server entry point (5 tools)├── test_connection.py     ← Verify BTP connectivity├── requirements.txt├── .env.example           ← Configuration template├── btp_mcp/│   ├── config.py          ← Reads .env settings│   ├── auth.py            ← OAuth2 token management│   ├── btp_client.py      ← BTP API calls + caching│   ├── cache.py           ← TTL cache│   └── models.py          ← Pydantic response models└── tests/    └── test_tools.py      ← 17 tests with mocked responses

How it works

AI Agent (Claude / Cursor / LangGraph)    │    │  MCP Protocol (stdio)    ▼BTP MCP Server (this package)    │  OAuth2 client_credentials    │  + TTL cache (5 min)    ▼SAP BTP APIs  ├── Service Manager API  → service catalog, instances, plans  └── Destination API      → configured connections

Caching: BTP API responses are cached for 5 minutes by default. The service catalog and instance list change rarely — caching keeps responses fast without sacrificing data freshness.

Pagination: All list endpoints fetch every page from BTP, not just the first 50 results.


Roadmap

This is Phase 2 of a 6-phase project building toward a full AI-powered BTP operations platform.

PhaseStatusDescription
Phase 1✅ DoneBTP auth + 2 tools + local MCP server
Phase 2✅ Done5 tools + caching + pagination + tests + PyPI
Phase 3🔜 NextLangGraph agent + FastAPI streaming + memory
Phase 4📋 PlannedChainlit prototype → React + UI5 Web Components on BTP
Phase 5📋 PlannedMulti-agent supervisor + RAG + proactive alerts
Phase 6📋 PlannedProduction hardening + CI/CD + BTP marketplace

Coming soon (Phase 3)

  • LangGraph ReAct agent with multi-turn conversation memory
  • FastAPI SSE streaming endpoint
  • Code generation for recommended services (CAP binding config, CLI commands, YAML manifests)

Entitlements API (temporarily disabled)

The get_btp_entitlements tool requires a separate Cloud Management Service (CIS Central plan) service key. The code is fully written and commented out — see ENTITLEMENTS_SETUP.md to enable it when ready.


Contributing

Contributions are welcome! Please open an issue first to discuss what you'd like to change.

bash
git clone https://github.com/ABRANJAN07/btp-mcp-server.gitcd btp-mcp-serverpip install -r requirements.txtpytest tests/ -v   # make sure tests pass before submitting a PR

License

MIT — see LICENSE for details.


Author

Built by Abhijeet Ranjan as part of a series on AI + SAP BTP integration.

Follow the journey on LinkedIn for Phase 3 updates.

來源:README.md,提交 d6753a8

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.0.0最新Sep 16, 2026

評分

已滿足適用檢查項的 40%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。