内容
# cds-kb-mcp
一款 **无数据** 的 MCP 服务器,通过语义搜索、业务分类法和按需定义检索,为 AI 代理提供即时、排名访问 **7,355 个 SAP S/4HANA 已发布 CDS 视图** 的能力。
> **快速了解:** 无需安装,无需下载数据,无需克隆。服务器集中托管在 SAP BTP Cloud Foundry 上。只需使用提供的 URL 通过 `supergateway` 配置您的 MCP 客户端。参见 [客户端配置](#客户端配置)。
**基准测试 vs. 原始文件访问:** ~830 倍更快,~94 倍更便宜(以 tokens 计),更好的前 3 名相关性 — 完整数据见 [BENCHMARK.md](./BENCHMARK.md)。
---
## 目录
- [您获得的内容](#您获得的内容)
- [客户端配置](#客户端配置) — 开始使用 MCP 的唯一步骤
- [工具参考](#工具参考)
---
## 您获得的内容
| | |
|---|---|
| **覆盖范围** | 7,355 个 S/4HANA Cloud Public Edition 已发布的 CDS 视图 |
| **增强** | 7,160 / 7,355 个视图具有语义描述 + 同义词 |
| **分类法** | 12 个业务线 → 829 个业务对象 → 关键词映射 |
| **搜索排名** | 字段增强的 MiniSearch(`名称×3`,`语义描述×2.5`,`同义词×2`) |
| **模块别名** | 按 `"Finance"` / `"Procurement"` / `"Sales"` 而非 `FI` / `MM` / `SD` 进行筛选 |
| **工具** | 5 个 MCP 工具:`search_cds`,`get_cds_view`,`get_views_by_tag`,`get_taxonomy`,`kb_info` |
| **捆绑包** | 单个 784 KB `.mjs` 文件,Node ≥ 18,零运行时依赖项需安装 |
| **数据隔离** | 服务器不提供 **视图数据**。数据存放在单独的存储库中,通过 GitHub 或本地克隆提供。 |
---
## 客户端配置
由于 MCP 服务器托管在 SAP BTP Cloud Foundry 上,**您无需克隆此存储库或安装任何本地依赖项**。
对于通过标准命令(Cursor、Claude Desktop、Gemini IDE)支持 MCP 的 **任何 IDE**,使用 `supergateway` 包安全地将远程 SSE 服务器桥接到本地标准输入/输出。
将以下块添加到您的 `mcpServers` 配置文件(例如 `claude_desktop_config.json` 或 `mcp_config.json`):
```json
{
"mcpServers": {
"cds-kb": {
"command": "npx",
"args": [
"-y",
"supergateway",
"--sse",
"https://cds-kb-mcp.cfapps.ap21.hana.ondemand.com/sse"
]
}
}
}
```
> **注意:** `npx -y supergateway` 自动下载代理实用程序,无需全局安装。
配置完成后,重启您的 IDE。工具将立即可供您的代理使用。
---
## 工具参考
服务器公开 **五个工具**。它们的设计使得 AI 代理可以从模糊的业务问题到完整的 CDS 视图定义,只需两到三个调用。
### 1. `search_cds`
按业务含义、名称、标签或经典 SAP 关键词(`VBAK`,`BSEG` 等)查找 CDS 视图。返回排名靠前的候选列表。
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| `query` | 字符串 | ✓ | 自然语言或关键词(例如 `"逾期客户发票"`) |
| `module` | 字符串 | 可选 | 模块筛选器 — 代码(`FI`,`SD`,`MM`)或自然名称(`"Finance"`,`"Procurement"`) |
| `lob` | 字符串 | 可选 | 业务线筛选器(部分匹配) |
| `bo` | 字符串 | 可选 | 业务对象筛选器(部分匹配,例如 `"salesorder"`) |
| `limit` | int 1-50 | 可选 | 最大结果数(默认 10) |
返回:带有 `name`、`score`、`module`、简短描述和路径的排名列表。
```text
1. **I_CAOPENITEMLIST** [FI-FIO-AR-2CL] (分数 14.2)
客户和供应商账户的未结项目列表。
路径:views/I_CAOPENITEMLIST.md
2. **I_PARKEDOPLACCTGDOCRBLSITEM** ...
```
### 2. `get_cds_view`
按确切名称获取一个视图的定义。默认:完整 Markdown(元数据 + 字段 + 关联 + 源)。使用 `sections` 缩小响应范围。
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| `name` | 字符串 | ✓ | 确切的视图名称(不区分大小写),例如 `I_SalesDocument` |
| `sections` | 字符串[] | 可选 | `["metadata", "fields", "associations", "source"]` 的子集。默认:全部。 |
典型模式:`search_cds` → 选择一个 → `get_cds_view(name, sections=["metadata", "fields"])` 以在不拉取 5-10 KB DDL 源的情况下确认字段列表。
### 3. `get_views_by_tag`
按标签确定性列表。使用 `search_cds` 过于模糊时使用。
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| `tag` | 字符串 | ✓ | 确切标签,例如 `"bo:salesorder"`,`"lob:finance"` |
| `limit` | int 1-200 | 可选 | 默认 50 |
首先使用 `get_taxonomy` 发现有效标签。
### 4. `get_taxonomy`
返回语义映射:12 个业务线 → 829 个业务对象,每个对象都有关键词和同义词。对于代理来说,在发出搜索之前或发现 `get_views_by_tag` 的有效标签非常有用。
无参数。
### 5. `kb_info`
报告活动数据源、视图数量、丰富度覆盖率和索引构建时间戳。使用此功能验证您正在与哪个版本的知识库进行通信。
```text
源:remote:https://raw.githubusercontent.com/truongdva2/cds-kb-data/main (缓存 ~/.cache/cds-kb/...)
视图:7355
丰富:7160
模块:31
构建时间:2026-06-25T09:13:52.301Z
```
---
## 架构
```text
┌──────────────────────────────────────────────────────────────────┐
│ AI 客户端(Claude) │
│ search_cds("供应商未结项目", "FI") │
└──────────────────────────┬───────────────────────────────────────┘
│ MCP / JSON-RPC 通过 stdio
┌──────────────────────────▼───────────────────────────────────────┐
│ cds-kb-mcp(此服务器) │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ search_cds│ │ get_view │ │ taxonomy │ │ kb_info │ ... │
│ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ │
│ └─────────────┴─────────────┴─────────────┘ │
│ │ │
│ ┌────────────────────▼───────────────────┐ │
│ │ MiniSearch(内存中,5.7 MB 索引) │ │
│ └────────────────────┬───────────────────┘ │
│ │ │
│ ┌────────────────────▼───────────────────┐ │
│ │ 数据源(本地 | 远程) │ │
│ │ • ETag 验证缓存 │ │
│ │ • 原子写入,SWR,重试 │ │
│ └─────────┬───────────────────┬──────────┘ │
└────────────┼───────────────────┼─────────────────────────────────┘
│ │
┌─────▼────┐ ┌────▼──────────────┐
│ 本地文件系统 │ │ GitHub Raw / CDN │
│ cds-kb- │ │ raw.github... │
│ data/ │ └───────────────────┘
└──────────┘
```