sap-bdc-mcp
Discovery and contract tooling for SAP Business Data CloudSAP Business Data CloudSAP's umbrella over the data estate: installed intelligent content and data products, a governed catalog they are published through, and a path out to SAP Databricks.sap official, btp — ORD discovery, CSN contract checks and non-executing share planning — behind redaction, policy gates and bounded output.
The only entry in the corpus that reaches Business Data Cloud, and the one most explicit about why its defaults are narrow. The v0.1 baseline is contract-first: discover data products and resources through ORD, check contracts against CSN, and plan a share without executing it. v0.2 adds governed execution — Databricks first, Snowflake declared as ready — with audit and policy gates in front of it and an npx wrapper for distribution. Redaction, bounded outputs and read-only defaults are stated as the posture rather than as options.
Facts
Where it sits
Who is behind it
In the atlas: maintains 2, contributes to 2@rahulsethimaintainer
Before choosing this
Conditions
PolicySAP API Policy 4.2026a§ 1.1, 2.2.2The server exposes SAP Business Data Cloud discovery or governed execution tools to an AI agent.
- § 1.1 Published APIs. Published APIs are made available for the documented purposes identified by SAP, including integration, extensions and data exchange.
- § 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.
The server reports per-tool SAP API Policy evidence and gates unknown API surfaces. That is an assessment mechanism rather than proof of compliance; verify the actual endpoint, pathway and data operation for the deployment.
SAP API Policy 4.2026a →Also, from Agent access to your systems§ 1.1, 1.2, 2.2.2: 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.
PracticalFunctional boundary
Business Source License 1.1: source-available, with production use restricted until the change date — settle that before anything technical. And the governed execution path in v0.2 does act on data, which is a different grant from the discovery the v0.1 baseline offered.
What it declares
Every artifact
- Type
- MCP server
- Origin
- Independently maintained
Connections
Giving an AI agent access to the systems you run over MCP
Finding what data exists, what it promises and where it came from
Download
README
quoted from rahulsethi/SAPBDCMCP under BUSL-1.1, readSAP Business Data Cloud MCP Server (sap-bdc-mcp)
An MCP (Model Context Protocol) server that exposes safe, well-scoped SAP Business Data Cloud (BDC) discovery + contract tooling for AI agents (Cursor, Claude Desktop, LibreChat, etc.) — with enterprise-first guardrails (redaction, policy gating, bounded outputs, and read-only defaults).
Latest release: v0.2.0 — Governed BDC Connect (Databricks-first execution, Snowflake readiness, audit + policy gates, npx distribution wrapper, subprocess plugin upstreams). See the v0.2.0 section at the end of this README and the CHANGELOG.
Previous release: v0.1.0 — contract-first open-core foundation: ORD discovery, CSN contract checks, share planning (non-executing). The v0.1 content below describes that initial baseline; v0.2 builds on it without breaking compatibility.
Why this exists
Modern enterprises increasingly want AI agents to act — not just chat. But real enterprise action requires:
- controlled access to systems of record,
- strict governance and auditability,
- safe defaults (no accidental writes),
- predictable, machine-readable tool contracts.
MCP provides the standard “tool bus” that lets external clients call tools safely. This project provides that tool bus specifically for SAP Business Data Cloud so agents can:
- discover data products and resources (ORD),
- validate and diff schema contracts (CSN),
- plan data sharing contracts before execution (share plans),
- operate safely (redaction + permissions + bounded outputs).
Where sap-bdc-mcp fits in the enterprise landscape
In most enterprise setups, you’ll have:
- AI clients (Cursor, Claude Desktop, LibreChat, internal copilots)
- MCP servers (tool providers) running inside a controlled network boundary
- SAP platforms (BDC, Datasphere, BW, etc.)
- Governance (identity, policies, approvals, logging, DLP)
SAPBDCMCP is intended to run inside your boundary (developer laptop, jump host, or a controlled runtime) and act as the policy-gated integration layer between agentic tooling and SAP BDC.
A typical flow:
- User asks an AI client to find / validate / plan something.
- The client calls MCP tools exposed by
sap-bdc-mcp. - The server enforces:
- output size limits,
- redaction of secrets,
- permission levels (READ/WRITE/ADMIN),
- “no writes by default”.
- Results are returned to the client in structured form.
Important: v0.1 focuses on read-only and contract-first operations. It does not execute shares or mutate BDC resources.
Architecture (plugin-based, safety-first)
Component view
MCP Client (Cursor / Claude / LibreChat)
|
| stdio (v0.1)
v
+---------------------------+
| FastMCP Server |
| (tool registry) |
+------------+--------------+
|
v
+---------------------------+ +--------------------------+
| Policy + Redaction | | Connectors / Parsers |
| - Permission gates |------->| - ORD loader + search |
| - Secret redaction | | - JSON Schema validation |
| - Output bounds | | - CSN validation + diff |
+------------+--------------+ +--------------------------+
|
v
+---------------------------+
| Tool Packs (v0.1) |
| - Core |
| - ORD |
| - CSN |
| - Share Plan |
+---------------------------+
Design principles
- Safe defaults: write tools are off unless explicitly enabled.
- Contract-first: validate structures before “doing” anything.
- Composable: tools are grouped into “packs” that can evolve independently.
- Enterprise-friendly: minimal data retention, predictable behavior, and clear boundaries.
What’s included in v0.1
Core tooling (safe diagnostics)
- Health + wiring checks
- Configuration diagnostics (with redaction)
- Tenant/user “identity” introspection (mock-friendly)
ORD (Open Resource Discovery)
- Fetch ORD documents from URLs and local files
- Expand ORD Configuration documents (to resolve referenced documents)
- Search resources by type (data products, APIs, events, etc.)
- Validate documents against shipped JSON Schemas
CSN (Common Schema Notation / contract checks)
- Validate CSN structure for interoperability / tooling assumptions
- Diff CSNs to detect breaking vs non-breaking changes
- Render CSN → Markdown documentation (quick contract docs)
Share planning (non-executing)
- Build share plan objects with a stable contract shape
- Validate share plans against safety limits (asset limits, duplicates, required fields)
- No execution in v0.1 (planning + validation only)
Installation
Install from PyPI (recommended)
pip install sap-bdc-mcp
Install from source (development)
git clone https://github.com/rahulsethi/SAPBDCMCP.git
cd SAPBDCMCP
python -m venv .venv
# Windows (PowerShell)
.\.venv\Scripts\Activate.ps1
pip install -e ".[dev]"
Prerequisites
- Python 3.11+
pip
Install from source (recommended for v0.1)
git clone https://github.com/rahulsethi/SAPBDCMCP.git
cd SAPBDCMCP
python -m venv .venv
# Windows (PowerShell)
.\.venv\Scripts\Activate.ps1
# macOS/Linux
# source .venv/bin/activate
pip install -e ".[dev]"
Environment file (optional)
cp .env.example .env
Configuration
The server is configured via environment variables (or a .env file).
Required (for v0.1)
Nothing is strictly required — mock mode supports local development without a BDC tenant.
Common settings
| Variable | Default | Purpose |
|---|---|---|
BDC_MODE | local | Runtime mode label (local/dev/prod) |
BDC_MOCK_MODE | 1 | Use fixtures/local inputs instead of calling external endpoints |
BDC_VERIFY_TLS | 1 | Verify TLS certificates for HTTPS fetches |
BDC_MAX_DOC_KB | 512 | Max size for fetched ORD docs (prevents “LLM ate my RAM” moments) |
BDC_ORD_SOURCES | (empty) | Comma-separated list of ORD sources (URLs or file paths) |
BDC_PLUGINS | (empty) | Comma-separated plugin module paths to load |
BDC_ENABLE_WRITE_TOOLS | 0 | Enables write tools (keep OFF in v0.1) |
Optional tenant identity (informational in v0.1)
| Variable | Purpose |
|---|---|
BDC_TENANT_ID | Tenant identifier (redacted in outputs) |
BDC_REGION | Region label |
BDC_BASE_URL | Base URL label (redacted where appropriate) |
BDC_USER | User label (redacted) |
BDC_SERVICE_ACCOUNT | Service account label (redacted) |
Running the server
Stdio mode (default)
sap-bdc-mcp
This starts the MCP server on stdio, suitable for:
- Cursor MCP integration
- Claude Desktop MCP servers
- LibreChat MCP connectors
- custom MCP clients
Alternative entry (useful for debugging)
python -m sap_bdc_mcp
Using from MCP clients
Cursor
This repo includes a Cursor MCP configuration file at .cursor/mcp.json.
Typical workflow:
- Open the repository in Cursor
- Ensure your venv is active and dependencies are installed
- Cursor will detect MCP config and can start the server automatically
Claude Desktop
Add an MCP server entry (stdio) and point it to your environment’s sap-bdc-mcp executable.
LibreChat
Configure an MCP server as a stdio tool provider and run it inside the same host/container boundary as LibreChat.
Exact configuration formats differ by client; the important invariant is: this server speaks MCP over stdio in v0.1.
Tool catalog (v0.1)
This section is intentionally detailed so you can:
- understand expected inputs/outputs,
- write deterministic agent prompts,
- validate behavior without a BDC tenant.
Core tools
bdc_ping
Purpose: lightweight health check for server wiring and config surface.
Returns (example):
{
"ok": true,
"server": "sap-bdc-mcp",
"version": "0.1.0",
"mode": "local",
"mock_mode": true,
"write_enabled": false
}
Test prompts:
- “Call
bdc_pingand tell me whether write tools are enabled.” - “Check if the SAP BDC MCP server is alive and report version + mode.”
bdc_diagnostics
Purpose: structured readiness report (all sensitive values redacted).
Returns (high level):
- runtime mode, TLS settings, limits
- ORD source configuration
- plugin status
- redacted environment summary
Test prompts:
- “Run
bdc_diagnosticsand summarize what is configured vs missing.” - “Show me current safety limits and plugin status.”
bdc_get_tenant_info
Purpose: returns configured tenant labels (redacted), useful for client sanity checks.
Returns (high level):
- tenant id, region, base url (if configured)
- mode + mock mode
Test prompts:
- “Use
bdc_get_tenant_infoand confirm whether a tenant is configured.” - “Show tenant metadata (redacted) and current mode.”
bdc_whoami
Purpose: returns identity labels (mock identity in mock mode).
Returns (high level):
- user / service account identity (redacted)
- mock identity when
BDC_MOCK_MODE=1
Test prompts:
- “Call
bdc_whoamiand tell me who this server thinks it is.” - “Show identity info, but ensure secrets are not displayed.”
ORD tools (Open Resource Discovery)
bdc_ord_fetch_documents
Purpose: fetch ORD documents from sources (URLs or local files). Supports ORD Configuration expansion.
Parameters:
sources(optional): list of URLs/file paths. If omitted, usesBDC_ORD_SOURCES.
Returns:
- document count
- full ORD documents (expanded if configuration docs are used)
Test prompts:
- “Fetch ORD docs from the configured sources, then summarize how many documents were loaded.”
- “Load the local ORD sample fixture and list the available resource types.”
bdc_ord_search
Purpose: search across loaded ORD documents.
Parameters:
query(required): search query stringresource_type(optional): defaultdataProduct
(e.g.,apiResource,eventResource,entityType,capability)sources(optional): override sources (defaults to config)limit(optional): default25
Returns:
- query + resource_type
- count
- matching resources (ordId, title, description, metadata)
Test prompts:
- “Search ORD for data products matching ‘finance’ and show top 5.”
- “Search for ‘sales’ in
apiResourceand summarize results.” - “Find entity types containing ‘Customer’ and list ordIds.”
bdc_ord_validate
Purpose: validate ORD documents against JSON Schema.
Parameters:
sources(optional): list of sources to validate (defaults to config)
Returns:
- ok/not ok
- issues with paths + messages (capped per document)
Test prompts:
- “Validate the currently configured ORD sources and report any schema errors.”
- “Validate the ORD fixture and show me the first 10 issues (if any).”
CSN tools (Common Schema Notation)
bdc_csn_validate
Purpose: validate a CSN object for tooling compatibility.
Parameters:
csn(required): CSN JSON object
Returns:
- ok/not ok
- issues with codes + messages
Test prompts:
- “Validate this CSN and explain what’s missing or malformed.”
- “Check whether this CSN is safe to publish as a contract.”
bdc_csn_diff
Purpose: compare two CSNs and classify changes.
Parameters:
old_csn(required)new_csn(required)
Returns:
- breaking changes: removals, incompatible type changes, kind changes
- non-breaking changes: additive changes
- summary stats
Test prompts:
- “Diff these two CSNs and list breaking changes first, then non-breaking.”
- “Tell me if upgrading from old_csn to new_csn is backward compatible.”
bdc_csn_render_docs
Purpose: render CSN → Markdown documentation (contract docs).
Parameters:
csn(required)
Returns:
- Markdown string describing entities, fields, types, constraints
Test prompts:
- “Generate Markdown docs for this CSN and include entity + field summaries.”
- “Create a compact schema reference for this CSN.”
Share planning tools (non-executing in v0.1)
bdc_share_plan
Purpose: create a share plan object (does not execute anything).
Parameters:
share_name(required)assets(required): list of assets:type:table|view|filename: asset identifierschema(optional): namespace/schemacomment(optional)
description(optional)provider(optional): defaultsap-bdc
Returns:
- normalized, validated share plan object
Test prompts:
- “Create a share plan called ‘demo_share’ with 2 tables in schema ‘FIN’.”
- “Generate a share plan for these assets and return the resulting JSON.”
bdc_share_validate_contract
Purpose: validate a share plan contract and safety limits.
Parameters:
plan(required): share plan JSON
Validations:
- required fields + structure
- max asset count (50)
- duplicate asset detection
- asset naming/shape checks
Returns:
- ok/not ok
- issues list (if any)
Test prompts:
- “Validate this share plan and tell me what I need to fix.”
- “Check whether this plan exceeds safety limits or contains duplicates.”
Testing & quality
Run tests
pytest
Run with coverage
pytest --cov=src/sap_bdc_mcp --cov-report=term-missing
Test coverage (v0.1): 100% statement coverage for src/sap_bdc_mcp is the quality bar for this repo (and should remain enforced as changes land).
If you ever see lower numbers, treat it as a regression and tighten tests before merging.
Safety, security, and governance notes
This project is designed to be safe by default, but enterprise safety is a system property, not a single feature. Recommended posture:
Safe defaults baked in
- Write tools disabled by default (
BDC_ENABLE_WRITE_TOOLS=0) - Automatic secret redaction across tool outputs
- Bounded outputs to prevent oversized data egress
- Mock mode to develop without connecting to production
Data handling expectations
- v0.1 tools focus on discovery + contract validation, not data movement.
- The server is intended to run within your controlled boundary.
- When future versions add live BDC operations, they should be deployed with:
- least-privileged service accounts,
- strict network controls,
- centralized logging/monitoring,
- approvals for write actions (where appropriate).
Redaction scope
The server automatically redacts common sensitive patterns including:
- API keys, secrets, passwords
- bearer tokens
- credentials embedded in URLs
- fields with sensitive key names
If you are deploying this inside an enterprise, treat this as one layer of defense-in-depth, not a substitute for DLP, IAM, and network security.
Contributing
Contributions are welcome. Please see CONTRIBUTING.md.
License
sap-bdc-mcp is licensed under the Business Source License 1.1 (BSL 1.1) from v0.2.0 onward — the same license as its sibling SAPDatasphereMCP. It converts automatically to Apache 2.0 on 2029-01-01. (v0.1.0 was MIT; that version remains MIT-licensed for code already in use.) See LICENSE for the full text.
- Free for noncommercial use — personal, evaluation, research, academic, and internal evaluation.
- Commercial / for-profit use requires a separate license. See
docs_public/COMMERCIAL_LICENSING.mdto inquire. - A 2-for-1 family discount is available on commercial licenses covering both
sap-bdc-mcpandSAPDatasphereMCP.
v0.2.0 — Governed BDC Connect (2026-05-27)
v0.2.0 turns sap-bdc-mcp from a contract-first discovery server (v0.1) into a governed-execution server. Three deltas land:
- Provider-neutral execution layer —
BDCConnectProviderABC withDatabricksProvider(real provider) andSnowflakeProvider(readiness-only at v0.2; mutation deferred to v0.3 per ADR-002). - Policy + audit teeth — tool risk metadata, SAP API policy evidence, dry-run + approval-token gating, JSONL audit log.
- Multi-runtime reach —
BDC_PLUGINSnow acceptsnpx:/uvx:/cmd:upstream MCP servers as subprocess plugins. sap-bdc-mcp itself can now be launched vianpx -y sap-bdc-mcp@0.2.0thanks to a Node bootstrap wrapper that bridges touvx.
What's new — tool surface
13 new MCP tools land at v0.2 on top of the 12 from v0.1 (25 total):
| Tool | Category | Mutability | Risk | Notes |
|---|---|---|---|---|
bdc_tool_risk_catalog | governance | READ | low | All registered tools + their risk metadata |
bdc_policy_explain | governance | READ | low | Which gates apply to a tool and would they pass now |
bdc_api_policy_check | governance | READ | low | SAP API evidence summary per tool |
bdc_audit_tail | governance | READ | low | Recent audit events (redacted, capped) |
bdc_connect_list_providers | providers | READ | low | Configured providers + capabilities |
bdc_connect_diagnostics | providers | READ | low | Provider configuration health |
bdc_connect_preflight | providers | READ | low | Run a provider's preflight |
bdc_databricks_preflight | databricks | READ | medium | Databricks share-readiness preflight |
bdc_databricks_validate_share_readiness | databricks | READ | medium | Per-share readiness check |
bdc_databricks_generate_csn_from_share | databricks | READ | low | CSN from a Databricks share (primitives only — see D-006) |
bdc_snowflake_preflight | snowflake | READ | low | Snowflake readiness checks (no mutation at v0.2) |
bdc_snowflake_explain_flow | snowflake | READ | low | Documented publish flow text |
bdc_share_execute_plan | sharing | WRITE | high | Governed execution. Requires dry-run + approval token |
All 12 v0.1 tools are still registered and identical in behavior — they now also produce audit events.
Two install routes
Python (recommended for production):
pip install sap-bdc-mcp==0.2.0
sap-bdc-mcp --help
Node / npx (no Python toolchain to manage):
npx -y sap-bdc-mcp@0.2.0 --help
The wrapper bootstraps Python via uv automatically. If uvx isn't on your PATH, the wrapper prints a one-screen install hint and exits.
Configure in your MCP client
claude_desktop_config.json (Python install):
{
"mcpServers": {
"sap-bdc-mcp": {
"command": "sap-bdc-mcp",
"env": { "BDC_MODE": "local", "BDC_MOCK_MODE": "1" }
}
}
}
claude_desktop_config.json (npx install):
{
"mcpServers": {
"sap-bdc-mcp": {
"command": "npx",
"args": ["-y", "sap-bdc-mcp@0.2.0"],
"env": { "BDC_MODE": "local", "BDC_MOCK_MODE": "1" }
}
}
}
Safe defaults (unchanged spirit, more teeth)
BDC_ENABLE_WRITE_TOOLS=0andBDC_ENABLE_ADMIN_TOOLS=0by default — every mutating tool is refused until you opt in.BDC_REQUIRE_DRY_RUN=1— high-risk tools must dry-run first; the dry-run returns acorrelation_idyou replay on real execute.BDC_REQUIRE_APPROVAL_TOKEN=1+BDC_APPROVAL_TOKEN=<your-secret>— every real execution must pass a constant-time-compare token (per D-003).BDC_API_POLICY_STRICT=1— WRITE/ADMIN tools withapi_surface=UNKNOWNare refused. This is what gates subprocess plugin proxies by default.BDC_AUDIT_ENABLED=1— every tool call writes a JSONL audit event (sha256-hashed inputs after redaction). Tail viabdc_audit_tail.
Full env-var reference + troubleshooting + the upgrade path from v0.1 is in the CHANGELOG.
Subprocess plugin upstreams (npx / uvx / cmd)
BDC_PLUGINS="gh=npx:@modelcontextprotocol/server-github@latest,sentry=uvx:mcp-server-sentry"
BDC_PLUGIN_TRUST="gh:documented_sdk" # operator-asserted trust
BDC_PLUGIN_ENV_PASSTHROUGH="GITHUB_TOKEN" # secrets to forward
Child MCP server tools are proxied as plug_<alias>__<tool>, treated as WRITE / UNKNOWN-surface by default, gated through the same audit + policy chain. Trust is operator-asserted; sap-bdc-mcp never blindly trusts a child's metadata.
Publishing
PyPI + npm + GitHub Releases. Publishing is a deliberate, manual step performed by the maintainer. The artifacts to upload are:
- PyPI:
dist/sap_bdc_mcp-0.2.0-py3-none-any.whlanddist/sap_bdc_mcp-0.2.0.tar.gz(produced bypython -m build) - npm:
npx-wrapper/(cd npx-wrapper && npm publish --access public) - GitHub Release: tag
v0.2.0with the CHANGELOG v0.2.0 section as the body
Full changelog
See CHANGELOG.md — the canonical record of what's in v0.2.0.
History
Features 15, Changed 6, Fixes 2, Other 12
Notes
The first execution-capable release. v0.2.0 turns sap-bdc-mcp from a contract-first discovery server into a governed-execution server, with Databricks as the first production provider and Snowflake as a readiness-only adapter.
Added
- Tool risk metadata (
tools/metadata.py) — every MCP tool carriesmutability,risk,api_surface,api_evidence,bulk_data_behavior. Backfilled for all 12 v0.1 tools; required for every new tool. - API policy evidence gate (
policy_evidence.py) — WRITE/ADMIN tools withapi_surface = UNKNOWNare refused underBDC_API_POLICY_STRICT=1(default on). - JSONL audit log (
audit.py) — every gated tool invocation writes an event with sha256-hashed inputs (post-redaction). Tail viabdc_audit_tail. Path configurable viaBDC_AUDIT_LOG_PATH. - Gated tool wrapper (
tools/_gated.py) — single decorator that runs policy gates, captures inputs, calls the tool, writes audit, redacts output. - Provider-neutral adapter layer (
providers/):BDCConnectProviderABC withpreflight,validate_plan,dry_run_execute,execute.DatabricksProvider— mock + real modes; real-mode execution raisesNotImplementedErrorpointing to v0.3 wiring of the BDC Connect SDK.SnowflakeProvider— readiness-only;dry_run_execute/executeraiseProviderCapabilityError(Snowflake mutation deferred to v0.3).
- Subprocess plugin upstream support (
plugin_loader.py) —BDC_PLUGINSnow acceptsnpx:,uvx:,cmd:schemes in addition to the v0.1 Pythonmodule.path. Child MCP server tools are proxied asplug_<alias>__<tool>, treated asWRITE / UNKNOWN-surfaceby default, and gated through the same audit + policy chain as first-party tools. Operator promotes trust viaBDC_PLUGIN_TRUST=<alias>:<surface>. Child env is minimal-by-default; pass extras viaBDC_PLUGIN_ENV_PASSTHROUGH. - Governance tools (4):
bdc_tool_risk_catalog— every tool's risk metadata.bdc_policy_explain— which gates apply to a tool and current pass/fail status.bdc_api_policy_check— per-tool SAP API evidence summary; flags UNKNOWN-surface mutators.bdc_audit_tail— recent audit events, capped, redacted.
- Provider introspection tools (3):
bdc_connect_list_providersbdc_connect_diagnosticsbdc_connect_preflight
- Databricks tools (3):
bdc_databricks_preflightbdc_databricks_validate_share_readinessbdc_databricks_generate_csn_from_share— primitive Delta columns only; complex types refused with a disclaimer.
- Snowflake tools (2):
bdc_snowflake_preflightbdc_snowflake_explain_flow
- Controlled execution tool (1):
bdc_share_execute_plan(plan, provider, dry_run=True, approval_token=None, correlation_id=None)— full gate chain: WRITE-enable → API policy evidence → plan validation → provider preflight → provider.validate_plan → capability check → prior-dry-run correlation → constant-time approval-token compare → provider call. Audit event written on every outcome (block / dry-run / real / error).
- Approval token mechanism (
policy.approval_token_valid) — plain shared secret +hmac.compare_digest. JWT path deferred to v0.4. - npx distribution wrapper (
npx-wrapper/) — Node package that bootstraps the Python server viauvx. Run vianpx -y sap-bdc-mcp@0.2.0. The wrapper has no MCP logic; it pins the Python version and forwards stdio. - Redaction patterns (new in
redaction.py): signed Delta-share URLs (token=,signature=,sig=query params), JWT-shaped strings,approval_tokendict key. - CI — added
mypystep +npx-smokejob (Node 20 on Ubuntu + Windows) that boots the wrapper.
Changed
BDCConfigextended withenable_admin_tools,require_dry_run,require_approval_token,approval_token,audit_enabled,audit_log_path,api_policy_strict,max_result_items,plugin_env_passthrough,plugin_trust,databricks(sub-config),snowflake(sub-config). All new env vars have safe defaults.ToolPolicy.is_allowed()extended with optionalenable_admin_tools,dry_run,prior_dry_run_correlation,approval_token_validparameters (backward-compatible — old single-arg call sites still work).plugin_loader.load_plugins()signature changed from(server, config)to(server, ctx)to allow proxy tools to register through the same audit + metadata path as first-party tools.register_all_tools()signature changed from(server, config, plugin_status)to(server, ctx).- All 12 v0.1 tools are now registered through the
gated()wrapper — they still behave identically but produce audit events. pyproject.tomladdstypes-jsonschemaandpytest-asyncioas dev dependencies; addsasyncio_mode = "auto"to[tool.pytest.ini_options].
Fixed
- Pre-existing ruff
F401/F841warnings intests/test_share_tools.pyandsrc/sap_bdc_mcp/plugin_loader.pycleaned up. - mypy now passes cleanly across all 35 source files (
types-jsonschemastubs added).
Licensing
- Relicensed from MIT → Business Source License 1.1 (BSL 1.1) from v0.2.0 onward — the same license as the sibling SAPDatasphereMCP. Converts automatically to Apache 2.0 on 2029-01-01.
- v0.1.0 remains MIT-licensed for code already in use.
- Free for personal, research, evaluation, academic, and internal-evaluation use.
- Commercial / for-profit use now requires a separate license from the copyright holder.
- See
LICENSEfor the full text anddocs_public/COMMERCIAL_LICENSING.mdfor inquiry instructions.
Deferred (not in v0.2.0)
- Snowflake share execution → v0.3.
- HTTP / SSE transport → v0.4.
- JWT / time-bound approval tokens → v0.4.
- Audit log rotation / retention → v0.4.
- SIEM forwarding, central policy, RBAC, dashboards → premium / post-v1.
- Hybrid worker live REST contract → wired in v0.3 (skeleton ships at v0.2).
- Live
npm publish+ GitHub release automation → manual.
Migration notes
- Existing v0.1 tools are unchanged in behavior, signature, and return shape.
- Existing env vars retain their meaning. New env vars default to safe values: writes off, dry-run required, audit enabled, strict API policy.
- Existing Python plugins keep working — bare module paths in
BDC_PLUGINSare treated as v0.1 import-based plugins. To opt in to subprocess plugins, prefix withnpx:,uvx:, orcmd:. - First time invoking any tool now creates
./.sap_bdc_mcp/audit.jsonl. SetBDC_AUDIT_LOG_PATHto relocate, orBDC_AUDIT_ENABLED=0to disable.
Features 6
Notes
Initial public release. Contract-first, read-safe MCP server for SAP Business Data Cloud.
Added
- 12 MCP tools:
bdc_ping,bdc_diagnostics,bdc_get_tenant_info,bdc_whoami,bdc_ord_fetch_documents,bdc_ord_search,bdc_ord_validate,bdc_csn_validate,bdc_csn_diff,bdc_csn_render_docs,bdc_share_plan,bdc_share_validate_contract. - Redaction helpers (bearer tokens, basic-auth URLs, sensitive key names).
- Plugin loader (Python module imports via
BDC_PLUGINS). - ORD + CSN JSON Schemas for validation.
- Mock mode (
BDC_MOCK_MODE=1) with fixture-driven responses. - pytest test suite covering all 12 tools + connectors.
- 12 MCP tools:
Others providing
- 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 functionsfrom BTP/BAIP
- 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 Managementfrom BTP/BAIP
- @abap2ui5/mcp-server@abap2ui5/mcp-serverAn MCP server that puts the abap2UI5 development loop on the machine an agent runs on: check the view the ABAP builds, photograph it, deploy the class into a sandbox, boot the app headless and read the errors.community org, abapMCP server for the abap2UI5 check, deploy and run loopfrom ABAP
- abap2UI5 for VS Codeabap2UI5 for VS CodeA VS Code extension for abap2UI5 apps: F9 starts the app class in a preview beside the source, Ctrl+F3 activates the class and reloads it, and the abap2UI5 linter runs in the editor while you type.community org, abapVS Code extension to preview, activate and lint abap2UI5 appsfrom ABAP
- SF-MCPSF-MCPSixty-two purpose-built tools over SAP SuccessFactors' OData APIs — employee data, permissions, compliance reports and HR administration, asked for in plain language.independent, successfactorsMCP server with 62 tools over SAP SuccessFactors OData APIsfrom SAP SuccessFactors
- hybris-mcp-litehybris-mcp-liteA read-only MCP server that answers questions about a local SAP Commerce Cloud instance by calling HAC, so types, beans, configuration, cronjobs, logs and FlexibleSearch come back in the editor.independent, commerceRead-only MCP server over a local SAP Commerce Cloud's HACfrom SAP Commerce
- 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 APIsfrom BTP/BAIP
- 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 graphfrom BTP/BAIP
- 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 Databasefrom BTP/BAIP
- abapsmithabapsmithAn MCP server that lets an LLM develop in ABAP on a live system over ADT, with writes off by default and every mutation recorded in a local journal that can undo it.independent, abapABAP MCP server over ADT with a local journal that can undo writesfrom ABAP
- 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 APIfrom BTP/BAIP
- 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 HANAfrom BTP/BAIP
- 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 APIfrom BTP/BAIP
- 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, deploymentfrom BTP/BAIP
- 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 filefrom BTP/BAIP
- BTP CF MCP ServerBTP CF MCP ServerThe 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.independent, btpCloud Foundry V3 API on SAP BTP as MCP toolsfrom BTP/BAIP
- 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 dashboardsfrom BTP/BAIP
- 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 toolsfrom BTP/BAIP
- 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 toolsfrom BTP/BAIP
- 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 toolsfrom BTP/BAIP
- 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 metadatafrom BTP/BAIP
- 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 Cloudfrom BTP/BAIP
- @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 tenantfrom BTP/BAIP
- 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 operationsfrom BTP/BAIP
- 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 MCPfrom BTP/BAIP
- 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 metadatafrom BTP/BAIP
- 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 Dataspherefrom BTP/BAIP
- sap-mcp-serversap-mcp-serverReads SAP ECC and S/4HANA for an agent over Gateway OData and RFC, with a Node bridge that speaks the RFC protocol without the proprietary SAP NetWeaver RFC SDK.independent, abapReads SAP ECC and S/4HANA for an agent over Gateway OData and RFC, with a Node bridge that speaks the RFC protocol without the proprietary SAP NetWeaver RFC SDK.from ABAP
- cap-mcp-bridgecap-mcp-bridgePoints at a running CAP or OData V4 service, reads its $metadata, and turns what it finds into MCP tools — list, describe, query with validated filters, expand, and invoke functions and actions.independent, capMCP server generating tools from a CAP or OData V4 service's metadatafrom CAP
- 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 administrationfrom BTP/BAIP
- 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 instancefrom BTP/BAIP
- 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 serverfrom BTP/BAIP
- 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 HANAfrom BTP/BAIP
- Skybuffer AI MCP serverSkybuffer AI MCP serverAn ABAP add-on that serves SAP business data, transactions and development context as MCP tools from an ICF node inside SAP ECC and S/4HANA, each call running as the signed-in user under PFCG authorization checks.independent, abapABAP add-on serving business data and transactions as MCP toolsfrom ABAP
- sap-security-mcpsap-security-mcpAn entirely read-only security analysis surface: nineteen tools, five resources and eight prompts for audits, SOX and segregation-of-duties review, behind OAuth 2.0 with PKCE. The vendor hosts an endpoint, and the README documents running it yourself.independent, abapRead-only security analysis MCP server for SAP audits and SoD reviewfrom ABAP
- 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 flowsfrom BTP/BAIP
- KlystronKlystronAn MCP server written in ABAP that runs inside the application server behind an ICF service and exposes typed tools for ABAP development, quality, transports, customizing, roles, Basis operations and integration, with a client-side plugin of SAP skills.independent, abapMCP server in ABAP inside the application server, with agent skillsfrom ABAP
- pyrfc-mcppyrfc-mcpAn MCP server for calling an SAP system's RFC-enabled function modules from an agent, built so that discovering a function does not authorise calling it: a read or a write is denied unless the function name matches an allowlist the server is configured with.independent, abapMCP server calling RFC-enabled function modules behind an allowlistfrom ABAP
- SAP Business Data CloudSAP Business Data CloudSAP's umbrella over the data estate: installed intelligent content and data products, a governed catalog they are published through, and a path out to SAP Databricks.sap official, btpData products, a governed catalog and a path to SAP Databricksfrom BTP/BAIP
- SAP DatasphereSAP DatasphereSAP's cloud data warehouse: spaces, modelled views and analytic models over data brought in or federated from source systems, with the business context carried along rather than rebuilt.sap official, btpCloud data warehouse with spaces, views and analytic modelsfrom BTP/BAIP
- SAP Datasphere Plugin for ClaudeSAP Datasphere Plugin for ClaudeEighteen Datasphere skills over a bundled 45-tool MCP server — exploration, view and analytic-model design, BW Bridge migration, security architecture and catalog governance.independent, btpEighteen Datasphere skills over a bundled MCP serverfrom BTP/BAIP
- 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 Cloudfrom BTP/BAIP
- @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 tenantfrom BTP/BAIP
- 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 Dataspherefrom BTP/BAIP
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.
- Triaged out of data/crawled/mcp-candidates.json, the sap-ai-mcp-servers sweep. Filed on the BTP door: Datasphere, Analytics Cloud, Business Data Cloud, BW/4HANA and HANA Cloud are BTP services, and the atlas has no data-and-analytics door — an open question recorded in docs/NEIGHBOURS.md rather than settled by a placement. Written from the repository's own README.
- capability:data-cataloguing was named the same day. Until then this artifact answered only "is an MCP server", which said what it is and not what it is for.
- First seen.
For your agent
- Ref
artifact:rahulsethi-sap-bdc-mcp- JSON
- /artifacts/rahulsethi-sap-bdc-mcp.json
- MCP
- Connecting an agent