MCP serverMCP servertypeExposes tools to a coding agent over MCP.See every one →What this type is →independently maintainedindependently maintainedoriginPublished by one person or a small company outside SAP. Says nothing about quality; the readings say that.See every one →

sap-bdc-mcp

Discovery 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.

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

Last pushLicenceBUSL-1.1

Where it sits

Lives in
Provides
Agent access to your systemsBTPAgent access to your systemscapabilityGiving an AI agent access to the business data, configuration or operations of systems you run through an MCP server. [Serving your application over MCP](capability:mcp-servers) exposes your own service contract; system access reaches the systems behind it, and one implementation may do both. Development assistance belongs to [agent access to your code](capability:agent-code-access).Cataloguing and lineageBTPCataloguing and lineagecapabilityFinding what data exists across the estate and what it promises — catalogs and data products, the contract a consumer can rely on, where a field came from, and what a column actually contains once you profile it. The question asked before modelling starts and again when somebody asks where a number came from.

Who is behind it

Rahul SethiRahul SethiPersonMaintains this
In the atlas: maintains 2, contributes to 2
@rahulsethi
maintainer

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

Connections2

README

quoted from rahulsethi/SAPBDCMCP under BUSL-1.1, read
rahulsethi/SAPBDCMCP/README.mdOn GitHub

SAP 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:

  1. User asks an AI client to find / validate / plan something.
  2. The client calls MCP tools exposed by sap-bdc-mcp.
  3. The server enforces:
    • output size limits,
    • redaction of secrets,
    • permission levels (READ/WRITE/ADMIN),
    • “no writes by default”.
  4. 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

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
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
VariableDefaultPurpose
BDC_MODElocalRuntime mode label (local/dev/prod)
BDC_MOCK_MODE1Use fixtures/local inputs instead of calling external endpoints
BDC_VERIFY_TLS1Verify TLS certificates for HTTPS fetches
BDC_MAX_DOC_KB512Max 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_TOOLS0Enables write tools (keep OFF in v0.1)
Optional tenant identity (informational in v0.1)
VariablePurpose
BDC_TENANT_IDTenant identifier (redacted in outputs)
BDC_REGIONRegion label
BDC_BASE_URLBase URL label (redacted where appropriate)
BDC_USERUser label (redacted)
BDC_SERVICE_ACCOUNTService 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:

  1. Open the repository in Cursor
  2. Ensure your venv is active and dependencies are installed
  3. 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_ping and 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_diagnostics and 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_info and 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_whoami and 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, uses BDC_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.”

Purpose: search across loaded ORD documents.

Parameters:

  • query (required): search query string
  • resource_type (optional): default dataProduct
    (e.g., apiResource, eventResource, entityType, capability)
  • sources (optional): override sources (defaults to config)
  • limit (optional): default 25

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 apiResource and 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 | file
    • name: asset identifier
    • schema (optional): namespace/schema
    • comment (optional)
  • description (optional)
  • provider (optional): default sap-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.md to inquire.
  • A 2-for-1 family discount is available on commercial licenses covering both sap-bdc-mcp and SAPDatasphereMCP.

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:

  1. Provider-neutral execution layer — BDCConnectProvider ABC with DatabricksProvider (real provider) and SnowflakeProvider (readiness-only at v0.2; mutation deferred to v0.3 per ADR-002).
  2. Policy + audit teeth — tool risk metadata, SAP API policy evidence, dry-run + approval-token gating, JSONL audit log.
  3. Multi-runtime reach — BDC_PLUGINS now accepts npx: / uvx: / cmd: upstream MCP servers as subprocess plugins. sap-bdc-mcp itself can now be launched via npx -y sap-bdc-mcp@0.2.0 thanks to a Node bootstrap wrapper that bridges to uvx.
What's new — tool surface

13 new MCP tools land at v0.2 on top of the 12 from v0.1 (25 total):

ToolCategoryMutabilityRiskNotes
bdc_tool_risk_cataloggovernanceREADlowAll registered tools + their risk metadata
bdc_policy_explaingovernanceREADlowWhich gates apply to a tool and would they pass now
bdc_api_policy_checkgovernanceREADlowSAP API evidence summary per tool
bdc_audit_tailgovernanceREADlowRecent audit events (redacted, capped)
bdc_connect_list_providersprovidersREADlowConfigured providers + capabilities
bdc_connect_diagnosticsprovidersREADlowProvider configuration health
bdc_connect_preflightprovidersREADlowRun a provider's preflight
bdc_databricks_preflightdatabricksREADmediumDatabricks share-readiness preflight
bdc_databricks_validate_share_readinessdatabricksREADmediumPer-share readiness check
bdc_databricks_generate_csn_from_sharedatabricksREADlowCSN from a Databricks share (primitives only — see D-006)
bdc_snowflake_preflightsnowflakeREADlowSnowflake readiness checks (no mutation at v0.2)
bdc_snowflake_explain_flowsnowflakeREADlowDocumented publish flow text
bdc_share_execute_plansharingWRITEhighGoverned 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=0 and BDC_ENABLE_ADMIN_TOOLS=0 by 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 a correlation_id you 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 with api_surface=UNKNOWN are 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 via bdc_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.whl and dist/sap_bdc_mcp-0.2.0.tar.gz (produced by python -m build)
  • npm: npx-wrapper/ (cd npx-wrapper && npm publish --access public)
  • GitHub Release: tag v0.2.0 with the CHANGELOG v0.2.0 section as the body
Full changelog

See CHANGELOG.md — the canonical record of what's in v0.2.0.

BUSL-1.1, read

History

Latest

v0.2.0

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 carries mutability, 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 with api_surface = UNKNOWN are refused under BDC_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 via bdc_audit_tail. Path configurable via BDC_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/):
    • BDCConnectProvider ABC with preflight, validate_plan, dry_run_execute, execute.
    • DatabricksProvider — mock + real modes; real-mode execution raises NotImplementedError pointing to v0.3 wiring of the BDC Connect SDK.
    • SnowflakeProvider — readiness-only; dry_run_execute / execute raise ProviderCapabilityError (Snowflake mutation deferred to v0.3).
  • Subprocess plugin upstream support (plugin_loader.py) — BDC_PLUGINS now accepts npx:, uvx:, cmd: schemes in addition to the v0.1 Python module.path. Child MCP server tools are proxied as plug_<alias>__<tool>, treated as WRITE / UNKNOWN-surface by default, and gated through the same audit + policy chain as first-party tools. Operator promotes trust via BDC_PLUGIN_TRUST=<alias>:<surface>. Child env is minimal-by-default; pass extras via BDC_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_providers
    • bdc_connect_diagnostics
    • bdc_connect_preflight
  • Databricks tools (3):
    • bdc_databricks_preflight
    • bdc_databricks_validate_share_readiness
    • bdc_databricks_generate_csn_from_share — primitive Delta columns only; complex types refused with a disclaimer.
  • Snowflake tools (2):
    • bdc_snowflake_preflight
    • bdc_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 via uvx. Run via npx -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_token dict key.
  • CI — added mypy step + npx-smoke job (Node 20 on Ubuntu + Windows) that boots the wrapper.
Changed
  • BDCConfig extended with enable_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 optional enable_admin_tools, dry_run, prior_dry_run_correlation, approval_token_valid parameters (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.toml adds types-jsonschema and pytest-asyncio as dev dependencies; adds asyncio_mode = "auto" to [tool.pytest.ini_options].
Fixed
  • Pre-existing ruff F401 / F841 warnings in tests/test_share_tools.py and src/sap_bdc_mcp/plugin_loader.py cleaned up.
  • mypy now passes cleanly across all 35 source files (types-jsonschema stubs 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 LICENSE for the full text and docs_public/COMMERCIAL_LICENSING.md for 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_PLUGINS are treated as v0.1 import-based plugins. To opt in to subprocess plugins, prefix with npx:, uvx:, or cmd:.
  • First time invoking any tool now creates ./.sap_bdc_mcp/audit.jsonl. Set BDC_AUDIT_LOG_PATH to relocate, or BDC_AUDIT_ENABLED=0 to disable.

  1. v0.1.0

    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.

Others providing41

Agent access to your systems
  1. mcp-integration-suiteMCP server for the general Integration Suite functionsfrom BTP/BAIP
  2. mcp-is-tpmJava MCP server for Integration Suite Trading Partner Managementfrom BTP/BAIP
  3. @abap2ui5/mcp-serverMCP server for the abap2UI5 check, deploy and run loopfrom ABAP
  4. abap2UI5 for VS CodeVS Code extension to preview, activate and lint abap2UI5 appsfrom ABAP
  5. SF-MCPMCP server with 62 tools over SAP SuccessFactors OData APIsfrom SAP SuccessFactors
  6. hybris-mcp-liteRead-only MCP server over a local SAP Commerce Cloud's HACfrom SAP Commerce
  7. calmcpMCP server with read tools over the SAP Cloud ALM APIsfrom BTP/BAIP
  8. CostingGeek/sap-mcpPython MCP server fetching sales orders from SAP's business data graphfrom BTP/BAIP
  9. mcp-sap-focusedrunMCP tools over SAP Focused Run's Landscape Management Databasefrom BTP/BAIP
  10. abapsmithABAP MCP server over ADT with a local journal that can undo writesfrom ABAP
  11. cloud-alm-itsm-mcpMCP server querying installations via the SAP Cloud ALM ITSM APIfrom BTP/BAIP
  12. hana-mcp-serverMCP server for schema discovery and guarded SQL on SAP HANAfrom BTP/BAIP
  13. sap_analytics_cloud_mcpMCP server for the SAP Analytics Cloud REST APIfrom BTP/BAIP
  14. mcp-sap-cpiMCP server for Cloud Integration runtime: messages, logs, deploymentfrom BTP/BAIP
  15. AI Core MCP ServerSAP AI Core APIs as MCP tools from one JSON config filefrom BTP/BAIP
  16. BTP CF MCP ServerCloud Foundry V3 API on SAP BTP as MCP toolsfrom BTP/BAIP
  17. BTP MCP ServerBTP Core Services as MCP tools with in-chat dashboardsfrom BTP/BAIP
  18. btp-sap-odata-to-mcp-serverExposes S/4HANA or ECC OData services as MCP toolsfrom BTP/BAIP
  19. CI MCP ServerSAP Cloud Integration OData APIs as MCP toolsfrom BTP/BAIP
  20. odata-mcp-proxyConfig-driven proxy turning OData and REST endpoints into MCP toolsfrom BTP/BAIP
  21. sap-pi-mcp-serverMCP server for SAP PI and PO monitoring and directory metadatafrom BTP/BAIP
  22. sap-bdc-mcp-serverMCP server managing Delta shares in SAP Business Data Cloudfrom BTP/BAIP
  23. @mariodefe/sap-datasphere-mcpMCP server with forty-five tools across a Datasphere tenantfrom BTP/BAIP
  24. midasol/sap-mcp-serverPython MCP server for SAP Gateway OData operationsfrom BTP/BAIP
  25. odata_mcp_goGo binary bridging any OData v2 or v4 service to MCPfrom BTP/BAIP
  26. odata_mcpPython bridge generating MCP tools from OData v2 metadatafrom BTP/BAIP
  27. mcp-sap-datasphere-serverRead-only MCP server for exploring SAP Dataspherefrom BTP/BAIP
  28. sap-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.from ABAP
  29. cap-mcp-bridgeMCP server generating tools from a CAP or OData V4 service's metadatafrom CAP
  30. MCP Server for SAP BTP AdministrationSAP-hosted MCP endpoint for BTP account administrationfrom BTP/BAIP
  31. SAP LeanIX MCP ServerHosted MCP endpoint onto an SAP LeanIX instancefrom BTP/BAIP
  32. SAP-samples/hana-cli-claude-pluginClaude Code plugin registering hana-cli's MCP serverfrom BTP/BAIP
  33. SAP-samples/hana-developer-cli-tool-exampleDeveloper-centric command line for SAP HANAfrom BTP/BAIP
  34. Skybuffer AI MCP serverABAP add-on serving business data and transactions as MCP toolsfrom ABAP
  35. sap-security-mcpRead-only security analysis MCP server for SAP audits and SoD reviewfrom ABAP
  36. cpi-mcp-serverGo MCP server over Cloud Integration packages and integration flowsfrom BTP/BAIP
  37. KlystronMCP server in ABAP inside the application server, with agent skillsfrom ABAP
  38. pyrfc-mcpMCP server calling RFC-enabled function modules behind an allowlistfrom ABAP
Cataloguing and lineage
  1. SAP Business Data CloudData products, a governed catalog and a path to SAP Databricksfrom BTP/BAIP
  2. SAP DatasphereCloud data warehouse with spaces, views and analytic modelsfrom BTP/BAIP
  3. SAP Datasphere Plugin for ClaudeEighteen Datasphere skills over a bundled MCP serverfrom BTP/BAIP
  4. sap-bdc-mcp-serverMCP server managing Delta shares in SAP Business Data Cloudfrom BTP/BAIP
  5. @mariodefe/sap-datasphere-mcpMCP server with forty-five tools across a Datasphere tenantfrom BTP/BAIP
  6. mcp-sap-datasphere-serverRead-only MCP server for exploring SAP Dataspherefrom BTP/BAIP

Details

Sources3
sap-ai-mcp-serversdiscovered herechecked
github.com/rahulsethi/SAPBDCMCPtree, pushes, contributors, CIchecked
README.mdquoted, and what the entry declareschecked

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
discovered viasap-ai-mcp-servers
first seen in the atlas
ecosystem and domainbtp, ai-and-agents
History in the atlas4
  1. 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.
  2. 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.
  3. 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.
  4. First seen.
For your agent
Ref
artifact:rahulsethi-sap-bdc-mcp
JSON
/artifacts/rahulsethi-sap-bdc-mcp.json
MCP
Connecting an agent