内容
# ROSA — 已发布对象搜索助手
[](https://www.npmjs.com/package/@rosa-mcp/server)
[](https://github.com/ClementRingot/ROSA/pkgs/container/rosa)
[](https://github.com/ClementRingot/ROSA/actions/workflows/ci.yml)
[](https://github.com/ClementRingot/ROSA/actions/workflows/release.yml)
[](https://www.npmjs.com/package/@rosa-mcp/server)
[](./LICENSE)
[](https://modelcontextprotocol.io/)
**ROSA 为 AI 代理提供 SAP 对象发布的实时知识,以便用于 ABAP Cloud / Clean Core — 并在对象不可用时提供替代方案。**
它与 [SAP Cloudification Repository](https://github.com/SAP/abap-atc-cr-cv-s4hc)(官方真实来源)相连,并以 **两种方式** 公开,使用相同的业务逻辑 — 两种方式之间没有功能差距:
| 访问模式 | 协议 | 用例 |
| --- | --- | --- |
| **MCP 服务器** | [模型上下文协议](https://modelcontextprotocol.io/) 上的 `POST /mcp` | 支持原生 MCP 的 AI 代理(Claude Desktop、Claude Code、Cline、Cursor…) |
| **REST API** | `GET` 端点上的 `/api/*` 返回 JSON | LLM 技能、脚本、CI 管道 — 任何支持 HTTP 的程序 |
> 询问 *"表 MARA 是否在 ABAP Cloud 中可用?"* 代理立即知道:**否 — 使用 `I_PRODUCT` 代替。**
## 快速开始 — 托管实例(推荐)
ROSA 被公开托管 — 无需安装,无需运行服务器。直接连接您的 AI 代理:
### MCP(Claude Desktop、Claude Code、Cursor、Cline…)
**Claude Code**(`.mcp.json) / **Claude Desktop**(`claude_desktop_config.json`):
```json
{
"mcpServers": {
"rosa": {
"type": "url",
"url": "https://sap-released-objects-server-production.up.railway.app/mcp"
}
}
}
```
**Cursor**(`~/.cursor/mcp.json` 或 `.cursor/mcp.json`):
```json
{
"mcpServers": {
"rosa": {
"type": "url",
"url": "https://sap-released-objects-server-production.up.railway.app/mcp"
}
}
}
```
### REST API
所有端点均为 `GET`,返回 JSON,并支持 CORS:
```bash
curl "https://sap-released-objects-server-production.up.railway.app/api/search?query=purchase+order"
curl "https://sap-released-objects-server-production.up.railway.app/api/object?object_type=TABL&object_name=MARA"
curl "https://sap-released-objects-server-production.up.railway.app/api/compliance?object_names=MARA,BSEG,I_PRODUCT"
```
对于 LLM 技能的使用,两个现成的技能公开了完整的 API 参考:
- [`skills/sap-released-objects/SKILL.md`](./skills/sap-released-objects/SKILL.md) — 指向托管的公共实例;可以直接使用。
- [`skills/rosa-global/SKILL.md`](./skills/rosa-global/SKILL.md) — 适用于您自己的**自托管**部署:复制它并将 `{{ROSA_BASE_URL}}` 占位符替换为您的实例 URL。
---
## 自托管 / 替代部署
| 我想要… | 使用 | 一行命令 |
| --- | --- | --- |
| 通过 npx 本地运行(stdio) | **npm** | `npx -y @rosa-mcp/server` |
| 在没有安装 Node.js 的情况下运行 | **原生可执行文件** | 从 [Releases](https://github.com/ClementRingot/ROSA/releases/latest) 下载 |
| 作为服务器 / 自托管运行 | **Docker** | `docker run -p 3001:3001 ghcr.io/clementringot/rosa` |
| 在通用 Node 主机上部署 | **Node PaaS** | Railway / Render / Fly.io — 设置 `TRANSPORT=http` |
| 在 SAP BTP Cloud Foundry 上部署 | **MTA** 或 **npm 包装器** | 参见 [DEPLOYMENT](./docs/DEPLOYMENT.md#sap-btp-cloud-foundry-two-paths) |
| 在经典 Cloud Foundry 上部署 | **`cf push`** | 参见 [cloud-foundry-classic](./docs/cloud-foundry-classic.md) |
每个选项的完整详细信息: **[docs/DEPLOYMENT.md](./docs/DEPLOYMENT.md)**。
### 本地 MCP(stdio 模式)
```json
{
"mcpServers": {
"rosa": {
"command": "npx",
"args": ["-y", "@rosa-mcp/server"]
}
}
}
```
## 功能
- **搜索 SAP 对象** — 类、CDS 视图、表、数据元素、BDEF…
- **按 Clean Core 级别过滤**(A / B / C / D)— 替换 3 级系统的模型,自 2025 年 8 月起。
- **查找已弃用或未发布的对象的继任者**。
- **Clean Core 合规性检查**,适用于对象列表(带有合规率)。
- **统计数据** — 按级别、类型和应用程序组件计数。
- **智能搜索** — 多令牌评分(`"purchase order"` → `I_PURCHASEORDER`)。
- **多系统** — S/4HANA Cloud Public、BTP ABAP 环境、私有云、本地;动态发现 PCE 版本。
数据在运行时从 SAP 的公共 GitHub 仓库中获取,并在内存中缓存 24 小时 — 无需连接 SAP 系统。
### Clean Core 级别概念
| 级别 | 含义 | 升级安全性 |
| --- | --- | --- |
| **A** | 已发布的 API(ABAP Cloud) | ✅ 升级安全 |
| **B** | 经典 API | ⚠️ 升级稳定 |
| **C** | 内部 / 未分类 | 🟡 可控风险 |
| **D** | noAPI(不推荐) | 🔴 高风险 |
## MCP 工具和 REST 端点
`POST /mcp` 上的每个 MCP 工具都有一个相同的 REST 对应端点 `/api`:
| MCP 工具 | REST 端点 | 目的 |
| --- | --- | --- |
| `sap_search_objects` | `GET /api/search` | 搜索对象,按相关性排名,带有过滤器 |
| `sap_get_object_details` | `GET /api/object` | 对象的完整详细信息 + Clean Core 评估 |
| `sap_find_successor` | `GET /api/successor` | 已弃用 / 未发布对象的继任者(s) |
| `sap_check_clean_core_compliance` | `GET /api/compliance` | 对象列表的合规率 |
| `sap_list_versions` | `GET /api/versions` | 可用的 S/4HANA PCE 版本 |
| `sap_list_object_types` | `GET /api/types` | 带有每级计数的 TADIR 对象类型 |
| `sap_get_statistics` | `GET /api/statistics` | 仓库统计数据 |
参数和响应形状在 [`skills/sap-released-objects/SKILL.md`](./skills/sap-released-objects/SKILL.md) 中有记录。
## 服务器模式和身份验证
ROSA 在 **stdio**(默认;本地 MCP 客户端)或 **HTTP**( `--http` / `TRANSPORT=http` ;远程/自托管)上运行。在 HTTP 上,它从环境中自动检测四种身份验证模式 — **公共**、**OIDC / OAuth 2.1**、**XSUAA**(SAP BTP)和 **API 密钥** — 无需重建:
| 模式 | 触发 |
| --- | --- |
| 公共 | 无身份验证环境变量 |
| OIDC / OAuth 2.1 | `OAUTH_ISSUER` + `OAUTH_AUDIENCE` |
| XSUAA | `VCAP_SERVICES` xsuaa 绑定(SAP BTP) |
| API 密钥 | `API_KEYS`(与任何模式一起) |
传输、身份验证自动检测、身份验证 × 部署矩阵和系统图的工作原理: **[docs/ARCHITECTURE.md](./docs/ARCHITECTURE.md)**。
## 使用示例
```
您: "表 MARA 在 ABAP Cloud 中可用吗?"
代理: → sap_get_object_details(TABL, MARA) → "已弃用;继任者 I_PRODUCT"
您: "我的代码使用 BSEG、MARA、CL_GUI_ALV_GRID。它是 Clean Core 吗?"
代理: → sap_check_clean_core_compliance(...) → "合规率:0%"
您: "BTP 上有哪些可用于发送电子邮件的功能?"
代理: → sap_search_objects(query="send email", system_type="btp")
```
## 文档
| 文档 | 适用于 |
| --- | --- |
| [ARCHITECTURE.md](./docs/ARCHITECTURE.md) | 传输、身份验证模式、系统图、MCP 工具 |
| [DEPLOYMENT.md](./docs/DEPLOYMENT.md) | 每个部署选项 + 配置参考 + 故障排除 |
| [cloud-foundry-classic.md](./docs/cloud-foundry-classic.md) | 经典(非 BTP)Cloud Foundry |
| [RELEASE.md](./docs/RELEASE.md) | 发布流程和管道(维护者) |
| [CONTRIBUTING.md](./CONTRIBUTING.md) | 开发设置、测试、提交约定 |
| [CHANGELOG.md](./CHANGELOG.md) | 值得注意的变化 |
## 贡献和发布
欢迎 PR — 参见 [CONTRIBUTING.md](./CONTRIBUTING.md)。此仓库使用 [Conventional Commits](https://www.conventionalcommits.org/);发布由自动化 [发布流程](./docs/RELEASE.md) 切割,该流程从单个标签发布 npm 包、多架构 Docker 镜像和原生可执行文件。
## 许可证
[MIT](./LICENSE)