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 →

@mariodefe/sap-datasphere-mcp

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

The broad Datasphere server, and the one the Datasphere plugin is built on. It goes past reading into extraction and administration: ETL data extraction, database user management, data lineage analysis and column-level profiling alongside the discovery and metadata tools. The masking is the part worth noting — it is configuration rather than a filter bolted on afterwards, and the stated intent is that sensitive fields never reach the LLM at all. Published to both PyPI and npm, with a version split that says which MCP spec each line implements: 2.x on the 2026-07-28 stateless spec, 1.x in maintenance.

Facts

Latestv2.0.3ReleasedLast pushLicenceMIT

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).Analytic modellingBTPAnalytic modellingcapabilityDefining what an analytical client actually reads — the multi-dimensional layer between stored rows and a chart: measures, dimensions, hierarchies, filters and parameters, and the associations somebody navigates them by. Distinct from [analytical queries](capability:analytical-queries), which is a service answering the request a chart sends, and from [loading a warehouse](capability:warehouse-loading), which fills the tables underneath it.Loading a warehouseBTPLoading a warehousecapabilityGetting data into an analytical store and keeping it current — connections to source systems, replication and the other integration tasks, import jobs and their lifecycle, and the monitoring that tells you a load failed before a report does. Distinct from [replication](capability:replication), which is an application reading data that lives elsewhere as if it were local rather than a warehouse being filled.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

MarioDeFelipeMarioDeFelipePersonMaintains this
In the atlas: maintains 3, contributes to 3
@MarioDeFelipe
maintainerHARSHIT TIWARIPersonContributes to this
In the atlas: contributes to 1
@24f3001311
Abhinav JawadekarPersonContributes to this
In the atlas: contributes to 1
@abhjaw
actions-userPersonContributes to this
In the atlas: contributes to 2
@actions-user
Adam RounsvillePersonContributes to this
In the atlas: contributes to 1
@adamrounsville
adityaPersonContributes to this
In the atlas: contributes to 1
@adiadd
alexa-perlovPersonContributes to this
In the atlas: contributes to 1
@alexa-perlov
Amazon GitHub AutomationPersonContributes to this
In the atlas: contributes to 1
@amazon-auto
Anil NadimintiPersonContributes to this
In the atlas: contributes to 1
@aniloncloud
Arijit MaityPersonContributes to this
In the atlas: contributes to 1
@arijitmaity
Arne WoutersPersonContributes to this
In the atlas: contributes to 1
@arnewouters
146 contributors

Before choosing this

Conditions

PracticalFunctional boundary

It writes and it administers — ETL extraction and database user management are not read operations, and the same connection that profiles a column can move data out of the tenant. Masking is only as good as the configuration naming the fields, so an unlisted sensitive column is an unmasked one.

PolicySAP API Policy 4.2026a§ 1.1, 1.2, 2.2.2from Agent access to your systemsAn MCP server uses SAP APIs to supply tools, resources or data to an agent.
  • § 1.1 Published APIs. Published APIs are made available for the documented purposes identified by SAP, including integration, extensions and data exchange.
  • § 1.2 Non-Published APIs. Customer and third-party applications must not access non-published APIs except where documentation permits it or SAP otherwise authorizes it.
  • § 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.

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.

SAP API Policy 4.2026a →

What it declares

Every artifact

Type
MCP server
Origin
Independently maintained

Connections7

@mariodefe/sap-datasphere-mcp connections@mariodefe/sap-datasphere-mcpFUNCTIONAL← alternative to1alternative to derivedmcp-sap-datasphere-server→ provides4provides stated Covers a Datasphere tenant end to end — discovery, metadata, analytics, ETL, users, lineage and profiling — and masks configured PII before the model sees a row. SAP Datasphere MCP Server — README: https://github.com/MarioDeFelipe/sap-datasphere-mcpAgent access to your systemsprovides authored Exposes a Datasphere tenant's metadata and analytics operations, so the model can be inspected and worked on from outside the Data Builder. @mariodefe/sap-datasphere-mcp — README: https://github.com/MarioDeFelipe/sap-datasphere-mcpAnalytic modellingprovides authored Data lineage analysis and column-level profiling beside the metadata tools — where a field came from, and what the column actually holds. @mariodefe/sap-datasphere-mcp — README: https://github.com/MarioDeFelipe/sap-datasphere-mcpCataloguing and lineageprovides authored Carries ETL data extraction against the tenant, which is the loading pipeline reached from outside the product's own scheduler. @mariodefe/sap-datasphere-mcp — README: https://github.com/MarioDeFelipe/sap-datasphere-mcpLoading a warehouseUSED BY← optionally used by1optionally used by derived If: the sap-datasphere plugin is used in a client that activates the MCP server its .mcp.json registers; in a client that does not, the README says that file is a connection recipe to configure by hand What plugins/sap-datasphere/.mcp.json registers for that one plugin, pinned to version 1.7.0, with the Datasphere URL and OAuth client credentials taken from environment variables. Through: inverted from its requires edge secondsky/sap-skills — plugins/sap-datasphere/.mcp.json: https://raw.githubusercontent.com/secondsky/sap-skills/main/plugins/sap-datasphere/.mcp.json secondsky/sap-skills — README, portability note: https://github.com/secondsky/sap-skillssecondsky/sap-skillsif← used by1used by derived The plugin is skills and reference content; the forty-five tools its workflows call come from this server, which its README names by package. Through: inverted from its requires edge SAP Datasphere Plugin for Claude — README: https://github.com/MarioDeFelipe/sap-datasphere-plugin-for-claude-coworkSAP Datasphere Plugin for Claude

Install

npm add @mariodefe/sap-datasphere-mcp

Derived from the package name. No recipe recorded; the README has the configuration.

README

quoted from MarioDeFelipe/sap-datasphere-mcp under MIT, read
MarioDeFelipe/sap-datasphere-mcp/README.mdOn GitHub

🚀 SAP Datasphere MCP Server

PyPI version npm version Python 3.10+ MCP Protocol License: MIT Production Ready PII Masking

Production-ready Model Context Protocol (MCP) server that enables AI assistants to seamlessly interact with SAP Datasphere environments for real tenant data discovery, metadata exploration, analytics operations, ETL data extraction, database user management, data lineage analysis, and column-level data profiling — with built-in config-driven PII masking so sensitive fields never reach the LLM.

📦 Which version do I install?

PackageMCP Python SDKStatus
2.x (current)mcp>=2.0,<3Active development. Implements the 2026-07-28 stateless spec.
1.xmcp>=1.28,<2Maintenance only — security and critical fixes.

pip install sap-datasphere-mcp gives you 2.x. The 2.x server is dual-era: it answers both the modern server/discover handshake and the legacy initialize one, so 2025-era clients keep working without changes.

Stay on 1.x only if your environment cannot install SDK 2.x:

pip install 'sap-datasphere-mcp<2'

🆕 What's New (v2.0.1 — MCP SDK v2 / stateless spec)

  • Ported to MCP Python SDK 2.0.0 and the 2026-07-28 stateless specification. Handlers moved from the removed decorator API to Server(on_*=…) constructor kwargs. The dependency floor is now mcp>=2.0,<3 — this is why the package major changed.
  • Dual-era by default — modern and legacy clients are both served from the same process; no configuration needed.
  • Response cache hints (ttlMs / cacheScope, SEP-2549) on tools/list, prompts/list and resources/list, sourced from CacheManager so the protocol hint and the internal cache cannot drift. Hints are sent to modern clients only, as the spec requires. tools/list is deterministically ordered.
  • Per-asset capability discovery — Datasphere capability varies per asset, not per tenant. $count is now decided by reading the asset's own Capabilities.CountRestrictions annotation rather than a blanket rule, and a lineage-gated filter verdict is remembered per asset instead of being rediscovered on every call.
  • Every 1.7.0 protection forward-ported, verified by the same test suite running green on both SDK lines. See CHANGELOG_v2.0.1.md.

🆕 What's New (v1.7.0 — input validation hardening)

  • Every tool with inputs now has validation rules — 12 tools shipped without any, including query_relational_entity and smart_query. Coverage is 45/45 tools, 145/150 inputs.
  • Path identifiers are constrained and percent-encoded. space_id / asset_id / entity_name / object_id are interpolated into URL paths; they now reject traversal-shaped values and pass through quote() as a backstop.
  • Two silent-no-op bugs fixed — the validator registry had drifted so two tools' rules never ran, and allowed_values was ignored on STRING rules (which also left get_catalog_metadata.endpoint_type unenforced).
  • A CI guard now fails if a tool ships without validation rules. See CHANGELOG_v1.7.0.md.

🆕 What's New (v1.6.0 — partial text matching in $filter)

  • startswith / endswith / contains are now supported in $filter on the Consumption API, so an agent can match on partial values instead of first listing distinct ones. Example: startswith(Product,'TV') and Country eq 'US'.
  • Filtering is case-sensitive — 'us' does not match 'US'. Verified against a live tenant; there is no server-side workaround, as tolower() is not in the supported function list.
  • $filter is now validated before it is sent. Unknown fields, non-text columns, and unsupported functions are rejected with a message the model can act on rather than an opaque 400. Values containing a single quote are refused outright — the API has no escape form for them.
  • Federated assets degrade gracefully — an asset whose lineage includes non-replicated sources supports only eq/and/or/(); that failure is now mapped to a message suggesting an equality retry.
  • See CHANGELOG_v1.6.0.md for the full tenant-probe results.

🆕 What's New (v1.3.0 — lean tool profile)

  • Leaner agent-facing tool surface — the server now advertises 39 tools by default (down from 49) by hiding redundant/overlapping metadata-discovery tools and developer diagnostics. Tool handlers are unchanged; only what's advertised to the MCP client is filtered, which improves LLM tool-selection accuracy. Controlled by two env vars:
    • DATASPHERE_TOOL_PROFILE — lean (default) or full (advertise everything)
    • DATASPHERE_EXPOSE_DIAGNOSTICS — false (default) or true (advertise the test_phase* diagnostic tools)

🆕 What's New (v1.2.1 — wave 2026.10)

  • get_asset_variables tool — surfaces input parameters/variables and filter capability annotations declared in OData $metadata. Use it to discover what variables a parameterised view or analytic model expects before querying.
  • Variables & filters parsing — parse_odata_metadata_xml_full returns {columns, variables, filters} in one call; the legacy parse_odata_metadata_xml is preserved as a back-compat wrapper.
  • Aligns with SAP Datasphere wave 2026.10 (May 6, 2026). All calls use the current /api/v1/datasphere/consumption/... path; the superseded dwc form was removed from the codebase in v1.6.0.

🚀 Quick Start

# Install globally
npm install -g @mariodefe/sap-datasphere-mcp

# Run the server
npx @mariodefe/sap-datasphere-mcp
Option 2: Install via PyPI (Python)
# Install from PyPI
pip install sap-datasphere-mcp

# Run the server
sap-datasphere-mcp

See Getting Started Guide for complete setup instructions.


✨ What's New in v1.5.0

🩹 OData V4 annotation parsing for consumption $metadata — Datasphere's consumption APIs return OData 4.0, where semantic info (Common.Label, Analytics.Dimension, Analytics.measure, units, hierarchies) lives in <Annotation Term="…"> elements rather than legacy sap:* attributes. The metadata tools now read both forms, restoring previously-empty label, dimensions, and measures on get_relational_metadata / get_analytical_metadata / get_analytical_model. The V2 attribute path is kept as a fallback for older sources. See CHANGELOG_v1.5.0.md.

What's New in v1.4.0

🔏 Config-driven PII / Sensitive-Field Masking — a fail-closed masking layer now runs inside the MCP response pipeline. Sensitive columns are redacted, dropped, hashed, or tokenised before the data ever reaches the LLM, based on a YAML/JSON policy file you control. No prompt can bypass it.

Highlights
  • ✅ DATASPHERE_PII_POLICY — point at a YAML or JSON policy file to activate masking; leave it unset for zero behaviour change.
  • ✅ Five masking actions — redact (***), drop (column removed), hash (SHA-256, deterministic — safe for GROUP BY), partial:N (keep last N chars), tokenize (stable TKN_xxxx surrogate).
  • ✅ Fail-closed — if the policy file is configured but can't be parsed, the server refuses to start. It never silently falls back to serving raw data.
  • ✅ Allowlist mode — lock an asset to an explicit column whitelist; everything else is dropped before column rules even run.
  • ✅ Value-pattern scanning — secondary regex net catches PII in free-text columns (email, IBAN, SSN, phone) with no explicit column rule required.
  • ✅ Audit log — every tool call emits a structured log line with space, asset, masked_fields, and mode — SIEM / EU-AI-Act ready. Raw values are never logged.
  • ✅ audit_only mode — log what would be masked without changing the data; use during policy rollout to validate coverage before enforcing.
  • ✅ Hooked into all 5 data tools — smart_query, query_relational_entity, query_analytical_data, get_space_assets, analyze_column_distribution.

✨ What's New in v1.1.0

🌐 Streamable HTTP Transport — the server now speaks MCP over HTTP as well as stdio, so you can run it as a long-lived service (Docker, ECS, App Runner, behind a reverse proxy) and point multiple clients at the same instance.

Highlights
  • ✅ New --transport http flag — serves MCP Streamable HTTP (spec 2025-03-26) at /mcp, replacing the legacy SSE dual-endpoint dance with a single HTTP route.
  • ✅ Backward compatible — stdio is still the default; existing Claude Desktop / Claude Code configs keep working with zero changes.
  • ✅ Optional bearer-token auth — enable via --auth-token or MCP_HTTP_AUTH_TOKEN. The server warns if bound to a non-loopback interface without one.
  • ✅ /health endpoint — plain JSON liveness probe for load balancers and uptime checks.
  • ✅ Fixed async entry point — new main_sync() wraps asyncio.run(main()) so the console script works reliably on macOS and Linux.
Usage
# stdio (default, unchanged)
sap-datasphere-mcp

# Streamable HTTP on http://127.0.0.1:8080/mcp
sap-datasphere-mcp --transport http --port 8080

# Exposed on LAN with bearer-token auth
MCP_HTTP_AUTH_TOKEN=$(openssl rand -hex 32) \
  sap-datasphere-mcp --transport http --host 0.0.0.0 --port 8080

# Via env vars only (great for Docker / ECS)
MCP_TRANSPORT=http MCP_HTTP_PORT=8080 \
MCP_HTTP_AUTH_TOKEN=$MY_TOKEN \
  sap-datasphere-mcp
Install with HTTP extras
pip install 'sap-datasphere-mcp[http]'   # adds starlette + uvicorn
# or
uv tool install 'sap-datasphere-mcp[http]' --python 3.12
Client call example
curl -N -X POST http://127.0.0.1:8080/mcp/ \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize",
       "params":{"protocolVersion":"2025-03-26",
                 "capabilities":{},
                 "clientInfo":{"name":"curl","version":"0"}}}'
CLI / env reference
FlagEnv varDefaultPurpose
--transportMCP_TRANSPORTstdiostdio or http
--hostMCP_HTTP_HOST127.0.0.1Bind address in HTTP mode
--portMCP_HTTP_PORT8080Bind port in HTTP mode
--pathMCP_HTTP_PATH/mcpURL path for the MCP endpoint
--auth-tokenMCP_HTTP_AUTH_TOKEN(none)Require Authorization: Bearer <token>

See PR #31 for implementation details.


✨ What's New in v1.0.9

Enhanced Aggregation & Improved Logging - Production-ready smart query enhancements:

v1.0.9 - Smart Query Enhancements:

  • ✅ Simple Aggregation Support - Queries like SELECT COUNT(*) FROM table now work correctly

    • Support for aggregations without GROUP BY (returns single row)
    • Enhanced regex to handle ORDER BY in GROUP BY queries
    • Both simple and grouped aggregations fully supported
  • ✅ Enhanced Asset Detection - Multi-strategy search reduces false warnings

    • Exact name match + contains match for case-insensitive searches
    • Graceful fallback for catalog API limitations
    • Better handling of schema-prefixed views
  • ✅ Improved Logging - Better user experience with clearer messages

    • Info emoji (ℹ️) instead of warning emoji (⚠️) for non-critical messages
    • More accurate descriptions ("not in catalog search" vs "not found")
    • Actionable suggestions only when queries likely to fail

v1.0.8 - Critical Hotfix:

  • ✅ Fixed aggregation fallback bug - Client-side aggregation now works in both primary and fallback paths

v1.0.7 - Smart Query Production Enhancements:

  • ✅ Client-side aggregation for GROUP BY queries
  • ✅ Asset capability detection
  • ✅ Fuzzy table name matching
  • ✅ LIMIT pushdown optimization

Result: 39 tools advertised by default (49 with diagnostics enabled) with a production-ready smart query engine supporting all SQL patterns

See CHANGELOG_v1.0.9.md for complete details.


📊 Current Status

🎉 45 TOOLS AVAILABLE - 44 with real data (98%) | Phases 1-5.1 Complete + Smart Query Engine

  • ✅ Real data integration - all non-diagnostic tools read live tenant data
  • ✅ OAuth 2.0 Authentication - Enterprise-grade security with automatic token refresh
  • ✅ 100% Foundation Tools - All authentication, connection, and user tools working perfectly
  • ✅ 100% Catalog Tools - Complete asset discovery and metadata exploration
  • ✅ 100% Search Tools - Client-side search workarounds for catalog and repository
  • ✅ 100% Database User Management - All 5 tools using real SAP Datasphere CLI
  • ✅ 100% ETL Tools - All 4 Phase 5.1 tools with enterprise-grade data extraction (up to 50K records)
  • ✅ NEW: Data Lineage & Quality - Column search and distribution analysis tools
  • 🟡 1 diagnostic tool - Endpoint testing utility (intentionally mock mode)

📚 Complete Documentation

New! Comprehensive production-ready documentation:

GuideDescriptionTime to Read
📖 Getting Started Guide10-minute quick start with examples10 min
📋 Tools CatalogComplete reference for all 44 tools30 min
🔧 API ReferenceTechnical API docs with Python/cURL examples45 min
🚀 Deployment GuideProduction deployment (Docker, K8s, PyPI)20 min
🐛 TroubleshootingCommon issues and solutions15 min

Quick Links:


📊 Query Examples & Available Data

The server provides access to 37+ data assets including sales, products, HR, financial, and time dimension data. See QUERY_EXAMPLES.md for complete examples and documentation.

Available Data Assets
  • Sales Data: Detailed orders and analytics (All For Bikes, eBike 100, etc.)
  • Product Catalog: Forklifts (7,900),Bikes(7,900), Bikes (288-$699), specifications
  • HR Analytics: Headcount, job classifications, locations
  • Financial Data: Transaction details and GL accounts
  • Time Dimensions: Calendar data from 1900-present
Quick Examples

Sales orders (Relational):

query_relational_entity(
    space_id="SAP_CONTENT",
    asset_id="SAP_SC_SALES_V_SalesOrders",
    entity_name="SAP_SC_SALES_V_SalesOrders",
    select="SALESORDERID,COMPANYNAME,GROSSAMOUNT,CURRENCY",
    top=5
)

Product information (Relational):

query_relational_entity(
    space_id="SAP_CONTENT",
    asset_id="SAP_SC_FI_V_ProductsDim",
    entity_name="SAP_SC_FI_V_ProductsDim",
    select="PRODUCTID,MEDIUM_DESCR,PRICE,CURRENCY",
    top=5
)

Sales analytics (Analytical):

query_analytical_data(
    space_id="SAP_CONTENT",
    asset_id="SAP_SC_SALES_AM_SalesOrders",
    entity_set="SAP_SC_SALES_AM_SalesOrders",
    select="COMPANYNAME,GROSSAMOUNT",
    orderby="GROSSAMOUNT desc",
    top=8
)

Performance: 1-5 second response times, up to 50K records per batch.

See QUERY_EXAMPLES.md for 37+ data assets, 5 detailed examples, and best practices.


🌟 Key Highlights

  • 🎯 45 MCP Tools: Comprehensive SAP Datasphere operations via Model Context Protocol
  • 🔐 OAuth 2.0: Production-ready authentication with automatic token refresh
  • 🔏 Built-in PII Masking: Config-driven, fail-closed masking layer — sensitive fields never reach the LLM
  • ✅ Real Data Access: 44 tools (98%) accessing actual tenant data - spaces, assets, users, metadata
  • 🚀 API Integration: 44 tools (98%) with real data integration via API and CLI
  • 🧠 Smart Query Engine: Production-ready SQL support with client-side aggregation for all query types
  • 🔍 Asset Discovery: 36+ real assets discovered (HR, Finance, Sales, Time dimensions)
  • 📊 Data Querying: Execute OData queries and ETL extraction through natural language on real data
  • 🧬 Data Lineage: Find assets by column name for impact analysis and lineage tracking
  • 📈 Data Quality: Statistical column analysis with null rates, percentiles, and outlier detection
  • 👥 User Management: Create, update, and manage database users with real API
  • 🧠 AI Integration: Claude Desktop, Cursor IDE, and other MCP-compatible assistants
  • 🏆 100% Foundation & Catalog Tools: All core discovery tools fully functional
  • 📦 Production Ready: Docker, Kubernetes, PyPI + npm packaging available

🛠️ Complete Tool Catalog (39 advertised by default, 49 with diagnostics)

🏆 Real Data Success Summary
CategoryTotal ToolsReal DataSuccess Rate
Foundation Tools55 ✅100%
Catalog Tools44 ✅100%
Space Discovery33 ✅100%
Search Tools22 ✅100% (client-side workarounds)
Data Discovery & Quality22 ✅100% (v1.0.3 - lineage & profiling)
Database User Management55 ✅100% (SAP CLI integration)
Metadata Tools44 ✅100%
Analytical Consumption Tools44 ✅100% (OData analytical queries)
Additional Tools55 ✅100% (connections, tasks, marketplace, etc.)
Relational Query Tool11 ✅100% (SQL to OData conversion)
Smart Query Engine11 ✅100% (v1.0.9 - all SQL patterns supported)
ETL-Optimized Relational Tools44 ✅100% (Phase 5.1 - up to 50K records)
Diagnostic Tools30 🟡Mock Mode (endpoint testing utilities)
Repository Tools (legacy)20 ❌0% (deprecated - use Catalog instead)
TOTAL4544 (98%)98% Coverage

🔐 Foundation Tools (5 tools) - 100% Real Data ✅
ToolStatusDescription
test_connection✅ Real DataTest OAuth connection and get health status
get_current_user✅ Real DataGet authenticated user information from JWT token
get_tenant_info✅ Real DataGet SAP Datasphere tenant configuration
get_available_scopes✅ Real DataList OAuth2 scopes from token
list_spaces✅ Real DataList all accessible spaces (DEVAULT_SPACE, SAP_CONTENT)

Example queries:

"Test the connection to SAP Datasphere"
"Who am I? Show my user information"
"What tenant am I connected to?"
"What OAuth scopes do I have?"
"List all SAP Datasphere spaces"

Real Data Examples:

  • Real tenant: your-tenant.eu20.hcs.cloud.sap
  • Real spaces: DEVAULT_SPACE, SAP_CONTENT
  • Real user info from OAuth JWT token
  • Real OAuth scopes (typically 3+ scopes)

🔍 Space Discovery Tools (3 tools) - 100% Real Data ✅
ToolStatusDescription
get_space_info✅ Real DataGet detailed information about a specific space
get_table_schema✅ Real DataGet column definitions and data types for tables
search_tables✅ Real DataSearch for tables and views by keyword (client-side filtering)

Example queries:

"Show me details about the SAP_CONTENT space"
"Get the schema for FINANCIAL_TRANSACTIONS table"
"Search for tables containing 'customer'"

Real Data Examples:

  • Real space metadata from API
  • Real table schemas (when tables exist in space)
  • search_tables uses client-side filtering workaround (API doesn't support OData filters)

📦 Catalog & Asset Tools (4 tools) - 100% Real Data ✅
ToolStatusDescription
list_catalog_assets✅ Real DataBrowse all catalog assets across spaces (36+ assets found!)
get_asset_details✅ Real DataGet comprehensive asset metadata and schema
get_asset_by_compound_key✅ Real DataRetrieve asset by space and name
get_space_assets✅ Real DataList all assets within a specific space

Example queries:

"List all catalog assets in the system"
"Get details for asset SAP_SC_FI_AM_FINTRANSACTIONS"
"Show me all assets in the SAP_CONTENT space"
"Get asset by compound key: space=SAP_CONTENT, id=SAP_SC_HR_V_Divisions"

Real Assets Discovered (36+ real assets):

  • HR Assets: SAP_SC_HR_V_Divisions, SAP_SC_HR_V_JobClass, SAP_SC_HR_V_Location, SAP_SC_HR_V_Job
  • Finance Assets: SAP_SC_FI_V_ProductsDim, SAP_SC_FI_AM_FINTRANSACTIONS
  • Time & Sales Models: Multiple analytical models with real metadata URLs
  • All assets include real metadata URLs pointing to your tenant

🔎 Search Tools (2 tools) - 100% Real Data ✅
ToolStatusDescription
search_catalog✅ Real DataSearch catalog assets by query (client-side workaround)
search_repository✅ Real DataSearch repository objects with filters (client-side workaround)

Example queries:

"Search catalog for 'sales'"
"Find repository objects containing 'customer'"
"Search for analytical models in SAP_CONTENT"

Real Data Examples:

  • Client-side search across name, label, businessName, and description fields
  • Support for facets (objectType, spaceId aggregation)
  • Support for filters (object_types, space_id)
  • Support for why_found tracking (shows which fields matched)
  • Pagination and total_matches reporting

Implementation: Both tools use client-side search workarounds since /api/v1/datasphere/consumption/catalog/search endpoint returns 404 Not Found. They fetch all assets from /catalog/assets and filter client-side.


🔬 Data Discovery & Quality Tools (2 tools) - 100% Real Data ✅
ToolStatusDescription
find_assets_by_column✅ Real DataFind all assets containing a specific column name for data lineage
analyze_column_distribution✅ Real DataStatistical analysis of column data distribution and quality profiling

Example queries:

"Which tables contain CUSTOMER_ID column?"
"Find all assets with SALES_AMOUNT"
"Analyze the distribution of ORDER_TOTAL column"
"What's the data quality of CUSTOMER_AGE field?"
"Profile the PRICE column for outliers"

Real Data Examples:

  • Data Lineage: Cross-space column search, impact analysis before schema changes
  • Quality Profiling: Null rates, distinct values, percentiles, outlier detection (IQR method)
  • Use Cases: Data discovery, schema relationship mapping, data quality assessment, pre-analytics profiling

Implementation: Both tools introduced in v1.0.3 provide advanced data discovery and quality capabilities:

  • find_assets_by_column: Searches across multiple spaces, case-insensitive by default, up to 200 results
  • analyze_column_distribution: Analyzes up to 10,000 records, automatic type detection, percentile analysis

📊 Metadata Tools (4 tools) - 100% Real Data ✅
ToolStatusDescription
get_catalog_metadata✅ Real DataRetrieve CSDL metadata schema for catalog service
get_analytical_metadata✅ Real DataGet analytical model metadata with pre-flight checks
get_relational_metadata✅ Real DataGet relational schema with SQL type mappings
list_analytical_datasets✅ Real DataList analytical datasets (fixed query parameters)

Example queries:

"Get the catalog metadata schema"
"Retrieve analytical metadata for SAP_SC_FI_AM_FINTRANSACTIONS"
"Get relational schema for CUSTOMER_DATA table"
"List analytical datasets"

Status: All 4 tools return real data with proper error handling and capability checks.


👥 Database User Management Tools (5 tools) - 100% Real Data ✅
ToolStatusDescriptionRequires Consent
list_database_users✅ Real DataList all database users (SAP CLI)No
create_database_user✅ Real DataCreate new database user (SAP CLI)Yes (ADMIN)
update_database_user✅ Real DataUpdate user permissions (SAP CLI)Yes (ADMIN)
delete_database_user✅ Real DataDelete database user (SAP CLI)Yes (ADMIN)
reset_database_user_password✅ Real DataReset user password (SAP CLI)Yes (SENSITIVE)

Example queries:

"List all database users in SAP_CONTENT space"
"Create a new database user named ETL_USER"
"Update permissions for DB_USER_001"
"Delete database user TEST_USER"
"Reset password for DB_USER_001"

Status: All 5 tools use real SAP Datasphere CLI integration with subprocess execution, temporary file handling, and comprehensive error handling.

Consent Management: High-risk operations (create, update, delete, reset password) require user consent on first use. Consent is cached for 60 minutes.


🔧 API Syntax Fixes (4 tools) - 100% Real Data ✅
ToolStatusDescription
search_tables✅ Real DataSearch tables/views (client-side filtering)
get_deployed_objects✅ Real DataList deployed objects (removed unsupported filters)
list_analytical_datasets✅ Real DataList datasets (fixed query parameters)
get_analytical_metadata✅ Real DataGet metadata (pre-flight capability checks)

Status: All 4 tools fixed during Phase 2 - removed unsupported OData filters and added client-side workarounds.


🔧 HTML Response Fixes (2 tools) - 100% Real Data ✅
ToolStatusDescription
get_task_status✅ Real DataGraceful error handling for HTML responses
browse_marketplace✅ Real DataProfessional degradation for UI-only endpoints

Status: Both tools fixed during Phase 3 - added content-type validation and helpful error messages when endpoints return HTML instead of JSON.


📈 Analytical Consumption Tools (4 tools) - 100% Real Data ✅
ToolStatusDescription
get_analytical_model✅ Real DataGet OData service document and analytical model metadata
get_analytical_service_document✅ Real DataGet service capabilities, entity sets, and navigation properties
list_analytical_datasets✅ Real DataList all analytical datasets and entity sets for a model
query_analytical_data✅ Real DataExecute OData analytical queries with select,select, filter, apply,apply, top

Example queries:

"Get analytical model for SAP_SC_FI_AM_FINTRANSACTIONS"
"Show me the service document for SAP_SC_HR_V_Divisions"
"List all datasets in the analytical model"
"Query analytical data from SAP_SC_FI_AM_FINTRANSACTIONS with filters"

Real Data Features:

  • OData v4.0 analytical consumption API (/api/v1/datasphere/consumption/analytical)
  • Full metadata discovery (service documents, entity sets, properties)
  • Advanced filtering with filter,filter, select, top,top, skip, $orderby
  • Aggregation support with $apply (groupby, aggregate functions)
  • Real tenant data from your SAP Datasphere instance

Status: All 4 analytical consumption tools fully operational with real SAP Datasphere data!


🔌 Additional Tools (5 tools) - 100% Real Data ✅
ToolStatusDescription
list_connections✅ Real DataList all configured connections (HANA, S/4HANA, etc.)
get_task_status✅ Real DataMonitor task execution status and progress
browse_marketplace✅ Real DataBrowse Data Marketplace assets and packages
get_consumption_metadata✅ Real DataGet consumption layer metadata (CSDL schema)
get_deployed_objects✅ Real DataList all deployed objects in a space

Example queries:

"List all connections in the system"
"Check the status of task 12345"
"Browse the Data Marketplace"
"Get consumption metadata schema"
"Show deployed objects in SAP_CONTENT"

Status: All additional tools provide essential system management capabilities with full real data support.


🧪 Diagnostic Tools (3 tools) - Endpoint Testing Utilities
ToolStatusDescription
test_analytical_endpoints🧪 DiagnosticTest analytical/query API endpoint availability
test_phase67_endpoints🧪 DiagnosticTest Phase 6 & 7 endpoint availability (KPI, monitoring, users)
test_phase8_endpoints🧪 DiagnosticTest Phase 8 endpoint availability (data sharing, AI features)

Purpose: These diagnostic tools help verify which SAP Datasphere API endpoints are available in your specific tenant configuration. They return structured reports with:

  • HTTP status codes for each endpoint
  • Error messages and troubleshooting guidance
  • Recommendations for workarounds or alternative tools

Status: Diagnostic tools intentionally use mock/test mode to validate endpoint availability without modifying data.


🗂️ Repository Tools (2 tools) - Deprecated (Use Catalog Instead)
ToolStatusDescription
list_repository_objects⚠️ DeprecatedList repository objects (use list_catalog_assets instead)
get_object_definition⚠️ DeprecatedGet object definition (use get_asset_details instead)

Recommendation: These legacy repository tools are deprecated. Use the modern Catalog Tools instead:

  • Replace list_repository_objects → list_catalog_assets or search_catalog
  • Replace get_object_definition → get_asset_details

Status: Catalog Tools provide superior functionality with full real data support.


🔐 Relational Query Tool (1 tool) - 100% Real Data ✅
ToolStatusDescriptionRequires Consent
execute_query✅ Real DataExecute SQL queries on Datasphere tables/views with SQL→OData conversionYes (WRITE)

Example queries:

"Execute query: SELECT * FROM SAP_SC_FI_AM_FINTRANSACTIONS LIMIT 10"
"Query: SELECT customer_id, amount FROM SALES_ORDERS WHERE status = 'COMPLETED' LIMIT 50"
"Get data: SELECT * FROM SAP_SC_HR_V_Divisions"

Real Data Features:

  • SQL to OData Conversion: Automatically converts SQL queries to OData API calls
  • Relational Consumption API: /api/v1/datasphere/consumption/relational/{space_id}/{view_name}
  • Supported SQL Syntax:
    • SELECT * or SELECT column1, column2 → OData $select
    • WHERE conditions → OData $filter (basic conversion)
    • LIMIT N → OData $top
  • Query Safety: Max 1000 rows, 60-second timeout
  • Error Handling: Helpful messages for table not found, parse errors, permission issues

SQL Conversion Examples:

SELECT * FROM CUSTOMERS WHERE country = 'USA' LIMIT 10
→ GET /relational/SPACE/CUSTOMERS?$filter=country eq 'USA'&$top=10

SELECT customer_id, name FROM ORDERS LIMIT 20
→ GET /relational/SPACE/ORDERS?$select=customer_id,name&$top=20

Limitations:

  • No JOINs (OData single-table queries only)
  • Basic WHERE clause conversion (simple comparisons work)
  • No GROUP BY, ORDER BY (future enhancement)
  • Table/view names are case-sensitive

Status: ✅ Fully functional with real SAP Datasphere data! Tested and confirmed working.


🧠 Smart Query Engine (1 tool) - 100% Real Data ✅ NEW v1.0.9!
ToolStatusDescriptionRequires Consent
smart_query✅ Real DataIntelligent SQL query router with client-side aggregation and multi-tier fallbackNo (READ)

Example queries:

"Query: SELECT * FROM SAP_SC_FI_V_ProductsDim LIMIT 5"
"Get product counts by category: SELECT PRODUCTCATEGORYID, COUNT(*) FROM SAP_SC_FI_V_ProductsDim GROUP BY PRODUCTCATEGORYID"
"Simple aggregation: SELECT COUNT(*), AVG(PRICE) FROM SAP_SC_FI_V_ProductsDim"
"Analytics with sorting: SELECT CATEGORY, COUNT(*), AVG(PRICE) FROM Products GROUP BY CATEGORY ORDER BY COUNT(*) DESC"

Real Data Features:

  • Intelligent Routing: Automatically chooses between analytical and relational endpoints based on query type and asset capabilities
  • Client-Side Aggregation: Full support for SQL aggregations when API doesn't support them
    • Simple aggregations: SELECT COUNT(*) FROM table (returns single row)
    • GROUP BY aggregations: SELECT category, COUNT(*) FROM table GROUP BY category
    • All aggregate functions: COUNT, SUM, AVG, MIN, MAX
  • Asset Capability Detection: Multi-strategy search to verify asset support before query execution
  • Enhanced Error Messages: Fuzzy table name matching with actionable suggestions
  • LIMIT Pushdown: Automatically converts SQL LIMIT to OData $top for optimal performance
  • Multi-Tier Fallback: Primary (analytical) → Fallback (relational + aggregation) → Helpful error

Query Types Supported:

-- Simple queries
SELECT * FROM table LIMIT 10

-- Simple aggregations (NEW in v1.0.9)
SELECT COUNT(*) FROM table
SELECT COUNT(*), AVG(price), MAX(price) FROM table

-- GROUP BY aggregations
SELECT category, COUNT(*), AVG(price) FROM table GROUP BY category

-- Complex queries with ORDER BY
SELECT category, COUNT(*) as cnt FROM table GROUP BY category ORDER BY cnt DESC LIMIT 5

Performance:

  • Response Times: 500ms - 2s depending on data volume
  • Batch Size: Up to 50,000 records per query
  • Optimization: LIMIT pushdown reduces data transfer by up to 95%

Status: ✅ Production-ready with comprehensive SQL support! All common query patterns working flawlessly (v1.0.7-v1.0.9 enhancements).


🏭 ETL-Optimized Relational Tools (4 tools) - 100% Real Data ✅ NEW Phase 5.1!
ToolStatusDescriptionRequires Consent
list_relational_entities✅ Real DataList all available relational entities (tables/views) within an asset for ETL operationsNo (READ)
get_relational_entity_metadata✅ Real DataGet entity metadata with SQL type mappings (OData→SQL) for data warehouse loadingNo (READ)
query_relational_entity✅ Real DataExecute OData queries with large batch processing (up to 50,000 records) for ETL extractionNo (READ)
get_relational_odata_service✅ Real DataGet OData service document with ETL planning capabilities and query optimization guidanceNo (READ)

Example queries:

"List all relational entities in SAP_CONTENT space for asset SAP_SC_SALES_V_Fact_Sales"
"Get entity metadata with SQL types for SAP_CONTENT/SAP_SC_SALES_V_Fact_Sales"
"Query relational entity from SAP_CONTENT, asset SAP_SC_SALES_V_Fact_Sales, entity Results, limit 1000"
"Get OData service document for SAP_CONTENT/SAP_SC_SALES_V_Fact_Sales with ETL capabilities"

Real Data Features:

  • Large Batch Processing: Extract up to 50,000 records per query (vs 1,000 for execute_query)
  • SQL Type Mapping: Automatic OData to SQL type conversion (NVARCHAR, BIGINT, DECIMAL, DATE, etc.)
  • ETL Planning: Service discovery, entity enumeration, batch size recommendations
  • Performance Optimization: Incremental extraction, parallel loading, pagination strategies
  • Production Quality: Sub-second response times with real production data

ETL Use Cases:

  • Data Warehouse Loading: Extract large datasets with proper SQL types for target databases
  • Incremental Extraction: Use $filter with date columns for delta loads
  • Parallel Extraction: Use $skip with multiple concurrent requests for high-volume data
  • Schema Discovery: Get complete metadata with column types, precision, scale before ETL jobs

Advanced Query Capabilities:

OData Parameters Supported:
- $filter: Complex filtering expressions (e.g., "amount gt 1000 and status eq 'ACTIVE'")
- $select: Column projection (e.g., "customer_id,amount,date")
- $top/$skip: Pagination (up to 50K per batch)
- $orderby: Sorting (e.g., "amount desc, date asc")

SQL Type Mapping Examples:

Edm.String       → NVARCHAR(MAX)
Edm.Int32        → INT
Edm.Int64        → BIGINT
Edm.Decimal      → DECIMAL(18,2)
Edm.Double       → DOUBLE
Edm.Date         → DATE
Edm.DateTime     → TIMESTAMP
Edm.Boolean      → BOOLEAN

Endpoint Pattern:

GET /api/v1/datasphere/consumption/relational/{space}/{asset}               → List entities
GET /api/v1/datasphere/consumption/relational/{space}/{asset}/$metadata     → Get metadata
GET /api/v1/datasphere/consumption/relational/{space}/{asset}/{entity}      → Query data

Status: ✅ All 4 tools fully functional with enterprise-grade ETL capabilities! Tested with real production sales data, achieving sub-second performance with large result sets.


🚀 Quick Start

Prerequisites
Python 3.10+
SAP Datasphere account with OAuth 2.0 configured
Technical User with appropriate permissions
Installation
# 1. Clone the repository
git clone https://github.com/MarioDeFelipe/sap-datasphere-mcp.git
cd sap-datasphere-mcp

# 2. Install dependencies
pip install -r requirements.txt

# 3. Configure OAuth credentials
cp .env.example .env
# Edit .env with your SAP Datasphere OAuth credentials

# 4. Start MCP Server
python sap_datasphere_mcp_server.py
Configuration

Create a .env file with your SAP Datasphere credentials:

# SAP Datasphere Connection
DATASPHERE_BASE_URL=https://your-tenant.eu10.hcs.cloud.sap
DATASPHERE_TENANT_ID=your-tenant-id

# OAuth 2.0 Credentials (Technical User)
DATASPHERE_CLIENT_ID=your-client-id
DATASPHERE_CLIENT_SECRET=your-client-secret
DATASPHERE_TOKEN_URL=https://your-tenant.authentication.eu10.hana.ondemand.com/oauth/token

# Optional: Mock Data Mode (for testing without real credentials)
USE_MOCK_DATA=false

⚠️ Important: Never commit your .env file to version control!

📖 Need help with OAuth setup? See the complete guide: OAuth Setup Guide


🤖 AI Assistant Integration

Claude Desktop

Option 1: Using npm (Recommended)

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "sap-datasphere": {
      "command": "npx",
      "args": ["@mariodefe/sap-datasphere-mcp"],
      "env": {
        "DATASPHERE_BASE_URL": "https://your-tenant.eu20.hcs.cloud.sap",
        "DATASPHERE_CLIENT_ID": "your-client-id",
        "DATASPHERE_CLIENT_SECRET": "your-client-secret",
        "DATASPHERE_TOKEN_URL": "https://your-tenant.authentication.eu20.hana.ondemand.com/oauth/token"
      }
    }
  }
}

Option 2: Using Python directly

{
  "mcpServers": {
    "sap-datasphere": {
      "command": "python",
      "args": ["-m", "sap_datasphere_mcp_server"],
      "env": {
        "DATASPHERE_BASE_URL": "https://your-tenant.eu20.hcs.cloud.sap",
        "DATASPHERE_CLIENT_ID": "your-client-id",
        "DATASPHERE_CLIENT_SECRET": "your-client-secret",
        "DATASPHERE_TOKEN_URL": "https://your-tenant.authentication.eu20.hana.ondemand.com/oauth/token"
      }
    }
  }
}

Location:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
Example Natural Language Queries

Once configured, ask your AI assistant:

Space & Discovery:

"List all SAP Datasphere spaces"
"Show me the schema for the CUSTOMERS table"
"Search for tables containing 'sales' in SAP_CONTENT"

Metadata Exploration:

"Get the analytical metadata for REVENUE_ANALYSIS"
"Show me the catalog metadata schema"
"Get relational schema for FINANCIAL_TRANSACTIONS"

Analytical Queries:

"Query financial data where Amount > 1000"
"Get analytical model for SALES_ANALYTICS.REVENUE_ANALYSIS"
"Execute aggregation: group by Currency and sum Amount"

User Management:

"List all database users"
"Create a new database user named ETL_READER"
"Update permissions for user DB_USER_001"

Repository Objects:

"Get the complete definition for SAP_SC_FI_AM_FINTRANSACTIONS"
"Show me all assets in SAP_CONTENT space"
"Get repository search metadata"

🔒 Security Features

OAuth 2.0 Authentication
  • ✅ Client Credentials Flow: Secure Technical User authentication
  • ✅ Automatic Token Refresh: Tokens refreshed 60 seconds before expiration
  • ✅ Encrypted Storage: Tokens encrypted in memory using Fernet encryption
  • ✅ No Credentials in Code: All secrets loaded from environment variables
  • ✅ Retry Logic: Exponential backoff for transient failures
  • ✅ Permission Levels: READ, WRITE, ADMIN, SENSITIVE
  • ✅ User Consent: Interactive prompts for high-risk operations
  • ✅ Audit Logging: Complete operation audit trails
  • ✅ Input Validation: SQL injection prevention with 15+ attack patterns
  • ✅ Data Filtering: Automatic PII and credential redaction
Security Best Practices
  • 🔐 Environment-based Configuration: No hardcoded credentials
  • 🔒 HTTPS/TLS: All communications encrypted
  • 📝 Comprehensive Logging: Detailed security audit trails
  • 🔑 Token Management: Automatic refresh and secure rotation
  • 🛡️ SQL Sanitization: Read-only queries, injection prevention

🔏 PII / Sensitive-Field Masking

The server ships a config-driven, fail-closed PII masking layer that runs inside the MCP response pipeline. Every data-returning tool (smart_query, query_relational_entity, query_analytical_data, get_space_assets, analyze_column_distribution) funnels results through apply_masking() before the data reaches the LLM client.

Defense-in-depth note. The authoritative access control remains upstream (SAP Datasphere Data Access Controls / not granting the technical user access to PII tables). This layer is the enforced, auditable net on top — no prompt can bypass it.

Configuration
Environment VariableValuesDefaultPurpose
DATASPHERE_PII_POLICYpath to YAML or JSON(unset)Policy file path. When unset masking is fully disabled — backwards-compatible default.
DATASPHERE_PII_MODEenforce | audit_only | offenforce (when policy present)audit_only logs what would be masked but passes data through; off disables.
DATASPHERE_PII_SALTsecret string(empty)Salt for deterministic hash / tokenize actions. Treat as a secret — never log.
# .env
DATASPHERE_PII_POLICY=/etc/datasphere/pii_policy.yaml
DATASPHERE_PII_MODE=enforce
DATASPHERE_PII_SALT=my-very-secret-salt
Fail-closed behaviour

If DATASPHERE_PII_POLICY is set but the file is missing or unparseable, the server raises a RuntimeError at startup and refuses to start. It never silently falls back to serving raw data with a broken policy.

Policy file schema

See the bundled pii_policy.yaml for a full annotated example. Key concepts:

mode: enforce           # overridden by DATASPHERE_PII_MODE if set
default_action: redact  # applied to value-pattern matches and unknown actions

rules:
  # Most-specific match wins: asset-level > space-level > global > glob pattern
  - space: ZDCS_08
    asset: ZR_SAP_CUSTOMER
    columns:
      EMAIL:  redact       # → "***"
      PHONE:  partial:4    # keep last 4 chars → "******1234"
      TAXID:  hash         # sha256(salt:value) — deterministic, supports grouping
      SSN:    drop         # column removed from every returned row entirely
  - space: "*"             # applies to every space
    columns:
      "*IBAN*": tokenize   # glob match on column name → "TKN_<8hex>"

allowlist:
  enabled: true
  assets:
    ZDCS_08.ZR_OTC_CUST_MONTH: [CUSTOMER, MONTH, REVENUE]  # ONLY these cols returned

patterns:
  email: '[A-Za-z0-9._%+\-]+@[A-Za-z0-9.\-]+\.[A-Za-z]{2,}'
  iban:  '\b[A-Z]{2}\d{2}[A-Z0-9]{10,30}\b'
Masking actions
ActionResultDeterministic?
redact"***"N/A
dropcolumn removed from rowN/A
hashsha256(salt:value) hex string✅ — safe for GROUP BY / JOIN
partial:Nlast N chars kept, rest replaced with *N/A
tokenize"TKN_<first8 of hash>" stable surrogate✅
Precedence
  1. Allowlist (strongest): if enabled for an asset, all non-listed columns are dropped before rules run.
  2. Column rules: most-specific match wins (asset > space > global; exact > glob).
  3. Value patterns: scanned on remaining string values; match → default_action.
Audit log

Every tool call emits a structured log line at INFO level:

[pii_masking] space=ZDCS_08 asset=ZR_SAP_CUSTOMER rows=42
              masked_fields=['EMAIL', 'PHONE', 'SSN'] mode=enforce

Raw masked values are never logged. This provides SIEM / EU-AI-Act evidence that masking fired on every call.

The MCP response also includes a masked_fields key listing which columns were touched, so the LLM client can see what was withheld.


📊 Architecture

System Architecture
┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   AI Assistant  │◄──►│   MCP Server     │◄──►│  SAP Datasphere │
│ (Claude, Cursor)│    │  32 Tools        │    │   (OAuth 2.0)   │
│                 │    │  Authorization   │    │                 │
│                 │    │  Caching         │    │                 │
│                 │    │  Telemetry       │    │                 │
└─────────────────┘    └──────────────────┘    └─────────────────┘
Core Components

Authentication Layer:

  • auth/oauth_handler.py - Token management and refresh
  • auth/datasphere_auth_connector.py - Authenticated API connector
  • auth/authorization.py - Permission-based authorization
  • auth/consent_manager.py - User consent tracking

Security Layer:

  • auth/input_validator.py - Input validation framework
  • auth/sql_sanitizer.py - SQL injection prevention
  • auth/data_filter.py - PII and credential redaction

Performance Layer:

  • cache_manager.py - Intelligent caching with TTL
  • telemetry.py - Request tracking and metrics

MCP Server:

  • sap_datasphere_mcp_server.py - Main server (39 tools advertised, 49 with diagnostics)

🚀 Production Deployment

Quick Deployment Options

Docker (Recommended):

# Build and run
docker build -t sap-datasphere-mcp:latest .
docker run -d --name sap-mcp --env-file .env sap-datasphere-mcp:latest

# Using Docker Compose
docker-compose up -d

PyPI Package (Coming Soon):

pip install sap-datasphere-mcp
sap-datasphere-mcp

Kubernetes:

# Create secrets
kubectl create secret generic sap-mcp-secrets \
  --from-literal=DATASPHERE_CLIENT_ID='...' \
  --from-literal=DATASPHERE_CLIENT_SECRET='...'

# Deploy
kubectl apply -f k8s/deployment.yaml
kubectl scale deployment sap-mcp-server --replicas=5

Manual:

git clone https://github.com/MarioDeFelipe/sap-datasphere-mcp.git
cd sap-datasphere-mcp
pip install -r requirements.txt
cp .env.example .env  # Edit with your credentials
python sap_datasphere_mcp_server.py

📖 See DEPLOYMENT.md for complete production deployment guide


📈 Performance Characteristics

Response Times
  • ⚡ Metadata Queries: Sub-100ms (cached)
  • ⚡ Catalog Queries: 100-500ms
  • ⚡ OData Queries: 500-2000ms (depends on data volume)
  • ⚡ Token Refresh: Automatic, transparent to user
Caching Strategy
  • 📊 Spaces: 1 hour TTL
  • 📦 Assets: 30 minutes TTL
  • 🔍 Metadata: 15 minutes TTL
  • 👥 Users: 5 minutes TTL
  • 🔄 LRU Eviction: Automatic cleanup of old entries
Scalability
  • 🔄 Concurrent Requests: Multiple simultaneous MCP operations
  • 🛡️ Error Recovery: Automatic retry with exponential backoff
  • 📊 Connection Pooling: Efficient resource management

🧪 Testing

Run Tests
# Test MCP server startup
python test_mcp_server_startup.py

# Test authorization coverage
python test_authorization_coverage.py

# Test input validation
python test_validation.py

# Test with MCP Inspector
npx @modelcontextprotocol/inspector python sap_datasphere_mcp_server.py
Test Results

Current suite: run pytest for the live number. The counts below are a point-in-time record from the v1.0.x era and are kept for history only.

  • ✅ 42/42 tools registered (as of v1.0.9) - All tools properly defined
  • ✅ 42/42 tools authorized (as of v1.0.9) - Authorization permissions configured
  • ✅ 41/42 tools working (as of v1.0.9) - 98% success rate

📁 Project Structure

sap-datasphere-mcp/
├── 📁 auth/                            # Authentication & Security
│   ├── oauth_handler.py                # OAuth 2.0 token management
│   ├── datasphere_auth_connector.py    # Authenticated API connector
│   ├── authorization.py                # Permission-based authorization
│   ├── consent_manager.py              # User consent tracking
│   ├── input_validator.py              # Input validation framework
│   ├── sql_sanitizer.py                # SQL injection prevention
│   └── data_filter.py                  # PII and credential redaction
├── 📁 config/                          # Configuration management
│   └── settings.py                     # Environment-based settings
├── 📁 docs/                            # Documentation
│   ├── OAUTH_SETUP.md                  # OAuth setup guide
│   ├── TROUBLESHOOTING_CLAUDE_DESKTOP.md
│   └── OAUTH_IMPLEMENTATION_STATUS.md
├── 📄 sap_datasphere_mcp_server.py     # Main MCP server (39 lean / 49 full)
├── 📄 odata_v4_annotations.py          # OData V4 CSDL annotation reader (V2 fallback)
├── 📄 odata_filter.py                  # $filter parsing, validation, capability gating
├── 📄 asset_capability.py              # Per-asset countability / filter profile
├── 📄 pii_masking.py                   # Config-driven PII masking (fail-closed)
├── 📄 error_helpers.py                 # Actionable error construction
├── 📄 tool_descriptions.py             # Tool text and visibility profiles
├── 📄 cache_manager.py                 # Intelligent caching
├── 📄 telemetry.py                     # Monitoring and metrics
├── 📄 mock_data.py                     # Mock data for testing
├── 📄 pii_policy.yaml                  # Masking policy (editable)
├── 📄 .env.example                     # Configuration template
├── 📄 requirements.txt                 # Python dependencies
├── 📄 README.md                        # This file
└── 📄 ULTIMATE_TEST_RESULTS.md         # Comprehensive test results

🙏 Acknowledgments

This MCP server was built with significant contributions from:

Amazon Kiro

Provided comprehensive specifications, architectural steering, and development guidance that shaped the MCP server's design and implementation.

Claude Code

AI-powered development assistant that contributed to:

Phase 1: Security & Authentication

  • OAuth 2.0 implementation with automatic token refresh
  • Permission-based authorization (READ, WRITE, ADMIN, SENSITIVE)
  • User consent flows for high-risk operations
  • Input validation and SQL sanitization
  • Sensitive data filtering and PII redaction

Phase 2: UX & AI Interaction

  • Enhanced tool descriptions with examples
  • Intelligent error messages with recovery suggestions
  • Parameter validation with clear format requirements

Phase 3: Performance & Monitoring

  • Intelligent caching with category-based TTL
  • Comprehensive telemetry and metrics
  • Performance optimization (up to 95% faster for cached queries)

Phase 4: Repository & Analytics

  • Repository object discovery tools
  • Analytical model access and OData query support
  • Metadata extraction and schema discovery

Mock Data Remediation Journey:

  • Phase 1: Database User Management (5/5 tools) - SAP CLI integration ✅
  • Phase 2: API Syntax Fixes (4/4 tools) - OData filter workarounds ✅
  • Phase 3: HTML Response Fixes (2/2 tools) - Graceful degradation ✅
  • Phase 4: Search Workarounds (2/2 tools) - Client-side search ✅
  • Achievement: From 42.9% → 80% real data integration! 🎯

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


📞 Support


🎯 Roadmap

Completed ✅
  • OAuth 2.0 authentication with automatic token refresh
  • 35 MCP tools implementation
  • 🎯 TARGET ACHIEVED: 80% real data integration (28/35 tools)
  • Authorization and consent management
  • Input validation and SQL sanitization
  • Intelligent caching and telemetry
  • Phase 1: Database User Management (5/5 tools) - SAP CLI integration
  • Phase 2: API Syntax Fixes (4/4 tools) - OData filter workarounds
  • Phase 3: HTML Response Fixes (2/2 tools) - Graceful degradation
  • Phase 4: Search Workarounds (2/2 tools) - Client-side search
  • Comprehensive testing with real SAP Datasphere tenant
  • 36+ real assets discovered (HR, Finance, Sales, Time dimensions)
  • 100% Foundation, Catalog, Search, Metadata & User Management Tools
Future Enhancements 🔮
  • Analytical tools real data integration (requires tenant configuration)
  • Enhanced query execution capabilities
  • Additional permission scopes for restricted endpoints
  • Vector database integration for semantic search
  • Real-time event streaming
  • Advanced schema visualization
  • Multi-tenant support
  • Machine learning integration

🏆 Production-Ready SAP Datasphere MCP Server

🎯 TARGET ACHIEVED: 28/35 Tools with Real Data (80%)

36+ Real Assets Discovered | All Critical Tools Working

GitHub stars MCP Compatible Real Data API Integration

Built with ❤️ for AI-powered enterprise data integration

From 42.9% → 80% real data integration through systematic mock data remediation!

MIT, read

History

Latest

v2.1.0

Features 17, Other 43

Notes
🚀 Major Platform Vision Evolution
Comprehensive SAP-to-AWS Integration Platform
  • NEW: Platform vision expanded from metadata sync to full SAP-to-AWS integration platform
  • NEW: Multi-pattern integration support (Federation, Replication, Direct Query)
  • NEW: AI-powered integration agent for SAP Datasphere expertise
  • NEW: Comprehensive asset discovery and cataloging with business context
  • NEW: RAG-powered metadata chatbot for intelligent data discovery
Intelligent Data Replication with AWS Glue ETL
  • NEW: AWS Glue ETL-based replication replacing Lambda approach for better performance
  • NEW: Apache Iceberg integration with S3 Tables for ACID transactions
  • NEW: Dynamic Glue ETL script generation for SAP Datasphere OData extraction
  • NEW: Real-time monitoring and validation system with cost tracking
  • NEW: Intelligent partitioning strategies and schema evolution support
Web Dashboard Enhancements
  • ENHANCED: Port configuration updated from 8000 to 8001 for DOG environment
  • ENHANCED: Connection testing interface with real SAP Datasphere and AWS Glue validation
  • ENHANCED: Features page with comprehensive capability overview
  • ENHANCED: Connection page with OAuth configuration and testing
  • ENHANCED: Real-time asset discovery showing 57 live assets from AWS Glue
RAG-Powered Metadata Chatbot System
  • NEW: Vector database integration for semantic metadata search
  • NEW: Automated metadata ingestion pipeline from all SAP APIs
  • NEW: Natural language interface for fundamental data questions
  • NEW: Real-time synchronization between APIs and vector database
  • NEW: Business context preservation in conversational format
🔧 Technical Improvements
Architecture Updates
  • IMPROVED: Three-environment architecture clarification (DOG with live connections)
  • IMPROVED: Design document updated to reflect AWS Glue ETL approach
  • IMPROVED: Requirements expanded to include platform vision and RAG capabilities
  • IMPROVED: Task structure reorganized with 9 new major task categories (16-24)
Connection and Authentication
  • FIXED: Port mismatch issues between frontend and backend (8000 vs 8001)
  • ENHANCED: Health check endpoint for connection validation
  • ENHANCED: Client secret handling for "FROM_BACKEND" placeholder
  • ENHANCED: Connection testing with comprehensive validation results
Web Dashboard Functionality
  • ADDED: Missing navigation links for Features and Connection pages
  • ADDED: API endpoints for connection testing and configuration management
  • ADDED: Real-time connection validation with detailed test results
  • ADDED: Comprehensive feature overview with development timeline
📊 Platform Capabilities Added
Asset Discovery and Cataloging
  • NEW: Unified asset discovery engine with business context
  • NEW: Integration pattern recommendation engine
  • NEW: Asset cataloging and classification system
  • NEW: Performance and cost impact analysis
AI-Powered Integration Agent
  • NEW: SAP Datasphere integration expert knowledge base
  • NEW: Replication flow design assistance
  • NEW: Manual guidance system for API limitations
  • NEW: Agent learning and improvement system
Multi-Pattern Integration Support
  • NEW: Federation pattern for real-time queries
  • NEW: Direct Query pattern for on-demand access
  • NEW: Hybrid pattern orchestration
  • NEW: Pattern governance and monitoring
Enterprise Governance and Monitoring
  • NEW: Unified governance framework
  • NEW: Comprehensive monitoring and alerting
  • NEW: Data lineage and impact analysis
  • NEW: Enterprise reporting and analytics
🎯 Business Value Delivered
Intelligent Data Discovery
  • ACHIEVED: Natural language search across all Datasphere assets
  • ACHIEVED: Business terminology mapping to technical names
  • ACHIEVED: Contextual recommendations and explanations
  • ACHIEVED: Multi-turn conversations with memory
Real-time Knowledge Management
  • ACHIEVED: 15-minute sync between APIs and vector database
  • ACHIEVED: Live integration status monitoring
  • ACHIEVED: Automatic embedding updates on metadata changes
  • ACHIEVED: Consistent data across all sources
Enterprise-Grade Capabilities
  • ACHIEVED: Governance policy explanations and compliance guidance
  • ACHIEVED: Data classification and sensitivity management
  • ACHIEVED: Impact analysis for data movement decisions
  • ACHIEVED: Automated compliance checking assistance
  1. v2.0.0

    Features 36, Performance 4, Docs 4, Other 4

    Notes
    🚀 Major Features Added
    Model Context Protocol (MCP) Server
    • NEW: Complete MCP server implementation for AI assistant integration
    • NEW: Support for Claude Desktop, Cursor IDE, and other MCP-compatible AI tools
    • NEW: Six comprehensive MCP tools for metadata operations:
      • search_metadata - Unified search across SAP and AWS
      • discover_spaces - OAuth-enabled space discovery
      • get_asset_details - Detailed asset information with schema
      • get_sync_status - Synchronization monitoring
      • explore_data_lineage - Data relationship tracing
      • trigger_sync - AI-controlled sync operations
    Three-Environment Architecture
    • NEW: Dog Environment (Development) - FastAPI web dashboard on port 8001
    • NEW: Wolf Environment (Testing) - FastAPI application on port 5000
    • NEW: Bear Environment (Production) - AWS Lambda serverless deployment
    • NEW: Environment-specific configuration and security controls
    Intelligent Data Replication
    • NEW: User-controlled selective data replication to AWS S3 Tables
    • NEW: Apache Iceberg integration with ACID transactions
    • NEW: AWS Glue ETL jobs for scalable Spark-based processing
    • NEW: Real-time progress monitoring with WebSocket updates
    • NEW: Comprehensive data validation and quality checks
    Enhanced Metadata Discovery
    • NEW: CSDL metadata extraction from SAP Datasphere OData services
    • NEW: Business context preservation with rich annotations
    • NEW: Multi-language support for global deployments
    • NEW: Hierarchical relationship tracking for analytical models
    🔧 Enhanced Components
    OAuth 2.0 Authentication
    • ENHANCED: Full OAuth Authorization Code Flow implementation
    • ENHANCED: Automatic token refresh and secure storage
    • ENHANCED: Environment-specific OAuth callback handling
    • ENHANCED: Browser-based authentication for enhanced API access
    AWS Integration
    • ENHANCED: S3 Tables integration with Apache Iceberg format
    • ENHANCED: Glue Data Catalog with rich business metadata
    • ENHANCED: Automated ETL job creation and management
    • ENHANCED: Advanced tagging and classification strategies
    Web Dashboard
    • ENHANCED: Multi-environment deployment support
    • ENHANCED: Real-time replication monitoring interface
    • ENHANCED: Asset selection and configuration UI
    • ENHANCED: Live progress tracking with detailed logs
    📊 Production Achievements
    Real Data Integration
    • ACHIEVED: Successfully replicated SAP_SC_FI_T_Products (2.5M records)
    • ACHIEVED: Integrated 14 real assets across multiple spaces
    • ACHIEVED: Production-tested with 197K+ record datasets
    • ACHIEVED: End-to-end validation with business data
    Performance Metrics
    • ACHIEVED: Sub-100ms MCP response times for AI queries
    • ACHIEVED: 10+ concurrent MCP requests supported
    • ACHIEVED: 2.5M record replication via Glue ETL jobs
    • ACHIEVED: 99.9% uptime with auto-recovery capabilities
    🛠️ Technical Improvements
    Code Quality
    • IMPROVED: Comprehensive error handling and retry logic
    • IMPROVED: Structured logging with audit trails
    • IMPROVED: Type hints and Pydantic model validation
    • IMPROVED: Modular architecture with clear separation of concerns
    Testing & Validation
    • ADDED: Comprehensive MCP server test suite
    • ADDED: OAuth authentication validation tests
    • ADDED: Real API integration tests
    • ADDED: End-to-end replication validation
    Documentation
    • ADDED: Complete MCP Server setup guide
    • ADDED: AI assistant integration examples
    • ADDED: Comprehensive API documentation
    • ADDED: Troubleshooting and performance guides
  2. v1.5.0

    Features 12, Other 8

    Notes
    🔄 Metadata Synchronization Platform
    Core Synchronization Engine
    • NEW: Priority-based job scheduling (Critical, High, Medium, Low)
    • NEW: Multi-threaded job processing with resource management
    • NEW: Conflict resolution strategies for schema and naming conflicts
    • NEW: Incremental synchronization with change detection
    Enhanced Connectors
    • NEW: SAP Datasphere connector with OAuth 2.0 support
    • NEW: AWS Glue connector with IAM authentication
    • NEW: Business context preservation across systems
    • NEW: Advanced asset mapping and transformation rules
    Web Dashboard
    • NEW: Real-time monitoring interface with WebSocket support
    • NEW: Job management and asset catalog
    • NEW: System health monitoring and metrics
    • NEW: Bootstrap 5 responsive UI design
    📈 Business Intelligence Features
    Asset Management
    • NEW: Comprehensive asset discovery and cataloging
    • NEW: Business metadata integration and preservation
    • NEW: Data lineage tracking and visualization
    • NEW: Automated classification and tagging
    Analytics Integration
    • NEW: AWS Glue Data Catalog optimization for analytics
    • NEW: Business-friendly naming conventions
    • NEW: Hierarchical relationship preservation
    • NEW: Multi-language business label support
  3. v1.0.0

    Features 4, Other 7

    Notes
    🎯 Initial Release
    Foundation Components
    • NEW: Basic SAP Datasphere API integration
    • NEW: AWS Glue Data Catalog connectivity
    • NEW: Simple metadata synchronization
    • NEW: Configuration management system
    Core Features
    • NEW: Space and asset discovery
    • NEW: Basic schema mapping
    • NEW: Simple web interface
    • NEW: Logging and error handling
    Authentication
    • NEW: SAP Datasphere API token authentication
    • NEW: AWS IAM role-based access
    • NEW: Basic credential management
37downloads per week, npm
Weekly downloads for @mariodefe/sap-datasphere-mcp26 complete calendar weeks from 2026-04-20 to 2026-10-18; the latest total is 37.20 Apr – 26 Apr: 5627 Apr – 3 May: 244 May – 10 May: 27211 May – 17 May: 8118 May – 24 May: 7225 May – 31 May: 2381 Jun – 7 Jun: 2868 Jun – 14 Jun: 7515 Jun – 21 Jun: 6922 Jun – 28 Jun: 29229 Jun – 5 Jul: 3896 Jul – 12 Jul: 8913 Jul – 19 Jul: 5920 Jul – 26 Jul: 7727 Jul – 2 Aug: 2743 Aug – 9 Aug: 65510 Aug – 16 Aug: 39717 Aug – 23 Aug: 55424 Aug – 30 Aug: 7631 Aug – 6 Sept: 967 Sept – 13 Sept: 7314 Sept – 20 Sept: 4521 Sept – 27 Sept: 7728 Sept – 4 Oct: 445 Oct – 11 Oct: 3512 Oct – 18 Oct: 37

Others providing48

Declared alternative
  1. mcp-sap-datasphere-serverRead-only MCP server for exploring SAP Datasphere
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. midasol/sap-mcp-serverPython MCP server for SAP Gateway OData operationsfrom BTP/BAIP
  24. odata_mcp_goGo binary bridging any OData v2 or v4 service to MCPfrom BTP/BAIP
  25. odata_mcpPython bridge generating MCP tools from OData v2 metadatafrom BTP/BAIP
  26. sap-bdc-mcpMCP tooling for SAP Business Data Cloud discovery and contractsfrom 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
Analytic modelling
  1. SAP Analytics CloudSaaS for business intelligence, planning and predictive analyticsfrom BTP/BAIP
  2. SAP DatasphereCloud data warehouse with spaces, views and analytic modelsfrom BTP/BAIP
  3. bw-modeling-mcpMCP server for BW/4HANA modelling objectsfrom BTP/BAIP
  4. sap_analytics_cloud_mcpMCP server for the SAP Analytics Cloud REST APIfrom BTP/BAIP
  5. MBT Logical Object ListerMetadata viewer for SAP BW, SAP BPC and SAP BW/4HANA object modelsfrom ABAP
  6. SAP Datasphere Plugin for ClaudeEighteen Datasphere skills over a bundled MCP serverfrom BTP/BAIP
Loading a warehouse
  1. SAP Analytics CloudSaaS for business intelligence, planning and predictive analyticsfrom BTP/BAIP
  2. SAP DatasphereCloud data warehouse with spaces, views and analytic modelsfrom BTP/BAIP
  3. ERPLDuckDB extension reading SAP ERP tables, CDS views and BW queriesfrom ABAP
  4. bw-modeling-mcpMCP server for BW/4HANA modelling objectsfrom BTP/BAIP
  5. sap_analytics_cloud_mcpMCP server for the SAP Analytics Cloud REST APIfrom BTP/BAIP
  6. pawelwiejkut/bw_remove_charactersABAP class stripping invalid characters in BW end routinesfrom ABAP
  7. pawelwiejkut/bw_trfn_pocketknifeFramework for BW transformation start routines from a tablefrom ABAP
  8. dbt-sap-hana-clouddbt adapter targeting SAP HANA Cloud as its warehousefrom BTP/BAIP
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. sap-bdc-mcpMCP tooling for SAP Business Data Cloud discovery and contractsfrom BTP/BAIP
  6. mcp-sap-datasphere-serverRead-only MCP server for exploring SAP Dataspherefrom BTP/BAIP

Details

Sources4
sap-ai-mcp-serversdiscovered herechecked
npm registry, @mariodefe/sap-datasphere-mcpversion, releases, installschecked
github.com/git+https://github.com/MarioDeFelipe/sap-datasphere-mcp.gittree, 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
latestv2.0.3
first release
releases and cadence16, ~5d median
discovered viasap-ai-mcp-servers
first seen in the atlas
ecosystem and domainbtp, ai-and-agents
Contributors146
Show 122 more

From the repository’s contributor list, .

History in the atlas6
  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:analytic-modelling 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. capability:warehouse-loading 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.
  5. 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.
  6. First seen.
For your agent
Ref
artifact:mariodefelipe-sap-datasphere-mcp
JSON
/artifacts/mariodefelipe-sap-datasphere-mcp.json
MCP
Connecting an agent