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 分

    请在仓库或注册中心条目中声明许可证。