Fourteen tools to find, inspect, and compose against the CDS-view knowledge base, plus an optional read-only slice for a live SAP DEV system. Every tool returns readable text and structured JSON, so an agent can chain them without regex-parsing anything.
Looking up a raw field like MATNR? Skip fuzzy search — jump straight to get_views_by_field in Find & Explore below.
{
"mcpServers": {
"cds-kb": {
"type": "http",
"url": "https://mcp.tringhia.io.vn/mcp"
}
}
}
supergateway --streamableHttpStart here — locate a view by meaning, by exact field, or by tag.
Business-meaning or keyword search across views — accepts classic SAP names (VBAK, BSEG) or plain language. Vietnamese, accent-insensitive.
"Tìm view liên quan tới vật tư" → search_cds(query:"material")
Exact lookup by field name, raw DDIC column, or table/view name — not fuzzy. Use this the moment you already have a concrete name like MATNR or VWERK.
"MATNR nằm ở view nào?" → get_views_by_field(name:"MATNR")
Fetch one view's full definition by exact name — metadata, fields, associations, DDL source. Trim the response with sections.
Pattern: search_cds → pick a hit → get_cds_view(name, sections:["metadata","fields"])
Deterministic listing by exact tag — use when search_cds feels too fuzzy. Discover valid tags via get_taxonomy first.
e.g. get_views_by_tag(tag:"bo:salesorder")
The full semantic map — 12 Lines of Business → 829 Business Objects, with English + Vietnamese keywords. Orient before searching, or discover valid tags.
Views built FROM or associating to a given view or table. Handy for spotting a released alternative even when your starting view isn't.
Once you've picked a view: check the shared library first, then compose → generate → validate.
Search shared saved-query recipes and variants by title, view name, or intent. Call this before inventing a shape — on a hit, feed its views[]/select/where straight into compose_query.
Recommend concrete FROM-base views for a new query — hard-filters out abstract and unverified views.
Build OpenSQL + a CDS define view entity skeleton from a Query Builder JSON shape. Warns when a referenced view is not_released, unknown, or deprecated for Developer Extensibility.
Generate annotated DDL — @AccessControl, @EndUserText.label — from a base view. You supply select/where; it won't invent a field list from Hub metadata alone.
Parse DDL with @abaplint/core's CDS parser. Returns soft diagnostics — never crashes the process, no live SAP connection involved.
Feed a good query back to the shared library, or check what's new in the KB.
Build a JSON snippet + PR body for the shared query library. With a configured GitHub token, opens a draft PR — never auto-merges.
Recently added/updated views straight from the data repo's changelog — "what's new" without re-searching everything.
Server health snapshot — active data source, version, view count, enrichment %, private-overlay count, index build time.
Read-only ADT access for learning your own Z*/Y* repository objects. System alias locked to DEV, never PRD; no table/business-row reads; nothing is ever auto-merged into the public KB. When the SAP_ADT_* variables are unset, every call below still appears but returns configured: false.
| Tool | Role |
|---|---|
| sap_connection_test | Probe ADT discovery endpoint |
| sap_list_packages | List Z*/Y* packages |
| sap_list_objects | List DDLS objects in a package |
| sap_get_object | Fetch one custom object's source |
| sap_get_dependencies | Best-effort static DDL names (standard → external) |
| sap_plan_export | Dry-run export plan only |
| sap_export_snapshot | Local write — source + metadata + manifest, skip-if-exists |
| sap_diff_snapshot | Compare two local snapshot manifests/hashes |
Required to enable: SAP_ADT_BASE_URL, SAP_ADT_USERNAME, SAP_ADT_PASSWORD, SAP_ADT_CLIENT — secrets live in env/secret manager only, never in files or logs.
The other two MCP primitives — attach context directly, or load a canned prompt in one call.
| Resource URI | Gives you |
|---|---|
| cds://view/{name} | Full markdown of one view by name |
| cds://taxonomy | LOB → BO → keyword map (EN + VI) |
| cds://stats | Live KB stats + auth mode |
| cds://query-library | The shared saved-query list as JSON |
| Prompt | Argument | Does |
|---|---|---|
| explain_view | name | Fetch + explain in plain language |
| compose_query | intent | Library-first compose → generate → validate |
| validate_ddl | ddl | Validate a pasted DDL snippet |