内容
# sap-abap-mcp
一个本地的模型上下文协议(Model Context Protocol)服务器,允许 Codex 和 Claude 通过官方的 ABAP 开发工具(ADT)HTTP 服务与 SAP ABAP 协同工作。
它可以检查和编辑 ABAP 源代码,运行质量检查,管理传输,使用 abapGit 和 RAP 生成器,检查运行时数据,比较系统,执行仓库重构,而无需 VS Code,SAP GUI 或 ABAP FS 虚拟工作区。
## 快速入门
您需要 Node.js 20 或更高版本,网络或 VPN 访问 SAP,以及 SAP HTTPS URL,三位客户端编号,用户名和 ADT 基本身份验证权限。
### 1. 配置 SAP
Windows:
```powershell
npx.cmd @coaspe/sap-abap-mcp@latest setup
```
macOS 或 Linux:
```bash
npx @coaspe/sap-abap-mcp@latest setup
```
向导调用本地连接别名 `服务器名称` 和端点 `SAP URL`。Windows 和 macOS 在保存之前验证 SAP 并使用 DPAPI 或 Keychain 保护密码。Linux 只保存非秘密设置并打印在启动 MCP 客户端之前运行的密码环境变量命令。
### 2. 注册 MCP 服务器
设置完成后,在 Windows 上运行适用于您的客户端的命令:
```powershell
codex mcp add sap-abap -- npx.cmd --yes --prefer-online @coaspe/sap-abap-mcp@latest serve --profile DEV100
claude mcp add --transport stdio --scope user sap-abap -- npx.cmd --yes --prefer-online @coaspe/sap-abap-mcp@latest serve --profile DEV100
```
在 macOS 或 Linux 上,将 `npx.cmd` 替换为 `npx`:
```bash
codex mcp add sap-abap -- npx --yes --prefer-online @coaspe/sap-abap-mcp@latest serve --profile DEV100
claude mcp add --transport stdio --scope user sap-abap -- npx --yes --prefer-online @coaspe/sap-abap-mcp@latest serve --profile DEV100
```
将 `DEV100` 替换为向导中选择的服务器名称。重启客户端,然后使用 `codex mcp list`,`claude mcp get sap-abap` 或 `/mcp` 确认进程启动。已完成的向导已经执行了实时的 SAP 验证;单独的 `/mcp` 不能证明 SAP 身份验证成功。
更喜欢插件安装?请遵循 [Claude Code 和 Codex 插件市场](#claude-code-and-codex-plugin-marketplaces);包含的设置技能指导相同的本地向导,而无需将 SAP 密码放入聊天中。有关平台特定行为和服务器管理的详细信息,请参见 [Windows](#detailed-setup-on-windows),[macOS](#detailed-setup-on-macos) 和 [Linux](#linux-and-containers) 部分。
## ABAP FS 兼容性状态
固定的 ABAP FS 2.6.5 源代码公开了 43 个 MCP 工具。此服务器提供 42 个严格兼容的子集;省略的工具是 `manage_subagents`,它依赖于 VS Code 代理主机。使用 10 个无头功能扩展和 `read_deferred_result`,此服务器总共公开了 53 个工具。
第一个开发兼容性切片实现了 BDEF 源代码创建,单次请求批量激活,类运行器执行,ABAP FS REPL 合同和详细的语义检查。这些依赖于 SAP 的功能在它们成功针对选定的实时连接之前保持 `未验证` 状态;调用 `get_sap_capabilities` 以获取每个连接的证据。
代码片段执行需要 `ZCL_ABAP_REPL` 和 `/sap/bc/z_abap_repl` 处的活动 SICF 服务。通用报告/程序控制台执行未实现。
## 支持的功能
服务器提供了来自固定 ABAP FS 基线的 42 个严格兼容的无头工具,10 个分组的功能扩展和一个用于继续超大结果的基础设施工具。
| 领域 | 功能 |
|---|---|
| 连接 | 多个 SAP 配置文件,延迟登录,系统元数据,ADT 发现导出 |
| 仓库读取 | 搜索,元数据,源代码范围,批量读取,URI 读取,源代码搜索,增强功能 |
| 语义服务 | 完成详细信息,定义查找,文档,类型层次结构,组件,快速修复发现,SAP 格式化器预览 |
| 源代码写入 | 精确源代码替换,BDEF 源代码创建,语法诊断,单个和一次性批量激活,文本元素 |
| 重构 | 重命名,包移动,提取方法,快速修复应用,格式化,删除 |
| 质量 | ABAP 单元,ATC,诊断,测试包含创建 |
| 传输 | 列表,详细信息,对象,比较,创建,发布,删除,所有者/用户管理,对象解析 |
| 版本 | 活动修订历史,修订比较,非活动源代码,保护修订恢复 |
| abapGit | 仓库列表,远程信息,创建,拉取,取消链接,阶段,推送,检查,分支切换 |
| RAP | 可用性,分页模式,默认值,验证,预览,生成,服务绑定详细信息和发布 |
| 运行时 | 保护类运行器和固定合同 ABAP REPL 执行,调试器,断点,堆栈,变量,转储,跟踪,心跳检查 |
| 跨系统 | 跨配置的 SAP 系统的源代码比较 |
| 依赖分析 | 有界的 where-used 依赖图 |
| SAP GUI 集成 | 验证的 WebGUI 事务 URL 生成和可选的本地启动 |
| 数据 | 只读 ADT SQL 查询,带有有界或基于文件的输出 |
| 工件 | Mermaid 验证/查看器和 DOCX 测试文档 |
十个分组的扩展工具是:
- `inspect_abap_code`
- `refactor_abap_code`
- `manage_abapgit`
- `manage_rap_generator`
- `manage_abap_versions`
- `compare_abap_systems`
- `get_abap_dependency_graph`
- `run_sap_transaction`
- `get_sap_capabilities`
- `run_abap_application`
将相关操作分组在一起,以保持工具模式的占用空间低于公开每个操作作为单独的 MCP 工具。
`read_deferred_result` 是附加的基础设施工具;它读取大型结果的剩余 UTF-8 块,而无需重复 SAP 操作。
## MCP 目录和注册表
规范的注册表身份是 `io.github.Coaspe/sap-abap-mcp`,在 [`server.json`](server.json) 中定义。目录安装必须将此包作为本地 `stdio` 服务器运行;SAP 配置文件和凭证保留在用户的机器上,永远不会被注册表托管。
在第一个面向 SAP 的请求之前,使用 [快速入门](#quick-start) 或 [`llms-install.md`](llms-install.md) 中的命令创建并验证至少一个本地 SAP 配置文件。Claude 插件可能在没有配置文件的情况下启动成功;安装后,运行 `/sap-abap-mcp:sap-abap-setup` 以完成本地 SAP 设置。通用注册表启动运行 `@coaspe/sap-abap-mcp` 并带有 `serve` 参数,公开所有本地配置的配置文件;每个面向 SAP 的工具仍然需要明确的 `connectionId`。
注册表发布不会更改实时证据边界。依赖于 SAP 的开发兼容性功能在它们成功针对选定的实时连接之前保持 `未验证` 状态。
公共 [Smithery 列表](https://smithery.ai/servers/aspalt85/sap-abap-mcp) 当前公开了已发布的 52 工具版本,并安装了验证的本地 MCPB 包。
## 隐私政策
SAP ABAP MCP 在本地运行,不会将 SAP 配置文件,凭证,源代码或工具结果发送到发布者运营的服务。它仅与用户选择的目的地进行通信,包括配置的 SAP 系统和用户的 MCP 主机。请参阅完整的 [`PRIVACY.md`](PRIVACY.md) 和 [`TERMS.md`](TERMS.md)。
### Claude Code 和 Codex 插件市场
此存储库也是一个双兼容的插件市场。插件启动与 npm `latest` 包相同的本地 `stdio` 进程,因此 SAP 配置文件,凭证和 ADT 流量保留在用户的计算机上。配置文件在插件缓存之外按用户范围限定,并在插件更新后存活。
克劳德代码:
```text
/plugin marketplace add Coaspe/sap-abap-mcp
/plugin install sap-abap-mcp@coaspe-sap
/reload-plugins
```
重新加载后运行命名空间设置技能:
```text
/sap-abap-mcp:sap-abap-setup
```
该技能重用现有的配置文件或指导配置文件创建,本地密码输入和实时 ADT 验证。使用 `/mcp` 确认 `sap-abap` 进程已连接,但不要将该状态视为 SAP 配置文件已身份验证的证明;设置技能使用 `doctor` 验证 SAP。
Codex:
```bash
codex plugin marketplace add Coaspe/sap-abap-mcp
```
然后在 Codex 应用程序中从 `Coaspe SAP Developer Tools` 市场安装 **SAP ABAP MCP** 并启动新任务。要求 Codex 设置 SAP ABAP MCP;包含的 `sap-abap-setup` 技能将密码排除在聊天之外,并指导配置文件创建,身份验证和实时 ADT 验证。
## 先决条件
向您的 SAP 管理员询问:
- SAP HTTPS 基本 URL,例如 `https://sap-dev.company.com`
- 三位 SAP 客户端编号
- 您的 SAP 用户名
- ADT 开发权限,由您打算使用的操作所需
- 确认 `/sap/bc/adt` 和基本身份验证已启用
您的机器需要:
- Node.js 20 或更高版本
- Codex 或 Claude Code
- 网络或 VPN 访问 SAP
- npm 注册表访问以安装公共包
首先验证 Node.js:
```powershell
node --version
```
## Windows 详细设置
### 1. 运行交互式设置
```powershell
npx.cmd @coaspe/sap-abap-mcp@latest setup
```
第一次运行可能会询问 npm 是否可以下载包;输入 `y` 继续。设置向导收集 SAP URL,客户端,用户名,环境和可选的可写包限制。`服务器名称` 是本地名称,后来用作 `connectionId`,例如 `DEV100`。将生产服务器分类为 `production`;即使包限制为空,它们也是只读的。
当出现 `SAP 密码:` 时,输入密码并按 Enter;输入保持隐藏。服务器配置和密码仅在 MCP 验证凭证针对 SAP 后存储。Windows 使用 DPAPI 保护密码,永远不会将其写入配置文件。
设置命令在 PowerShell 和命令提示符中均为一行。对于多行高级命令,PowerShell 使用反引号(`` ` ``)继续一行,而命令提示符(`cmd.exe`)使用插入符号(`^`);请勿混用它们。
### 2. 验证 ADT 连接
```powershell
npx.cmd --yes --prefer-online @coaspe/sap-abap-mcp@latest doctor DEV100
```
已完成的设置已经执行此实时检查。重新运行 `doctor` 以重新检查 ADT 连接;成功的响应包含 `"ok": true`。
### 3. 注册 MCP 服务器
Codex CLI:
```powershell
codex mcp add sap-abap -- npx.cmd --yes --prefer-online @coaspe/sap-abap-mcp@latest serve --profile DEV100
```
克劳德代码:
```powershell
claude mcp add --transport stdio --scope user sap-abap -- npx.cmd --yes --prefer-online @coaspe/sap-abap-mcp@latest serve --profile DEV100
```
注册后重启客户端。使用 `codex mcp list`,`claude mcp get sap-abap` 或客户端的 `/mcp` 命令验证连接。
注册故意使用动态 npm 标签 `@latest` 和 `--prefer-online`。每当 Codex 或 Claude 启动新的 MCP 进程时,npm 检查 `latest` 指向哪个已发布的版本并运行该版本。例如,最初运行 `0.4.7` 的用户将在 `0.4.8` 提升到 `latest` 并重启客户端后自动运行 `0.4.8`。已经运行的 MCP 进程不会原地替换。维护者应仅将经过测试的版本提升到 `latest`。
### 4. 更改或删除已保存的服务器
使用当前值编辑服务器作为默认值。向导在替换保存的配置之前测试更新的设置和密码:
```powershell
npx.cmd @coaspe/sap-abap-mcp@latest setup edit DEV100
```
删除服务器及其存储的 SAP 和 abapGit 凭证:
```powershell
npx.cmd @coaspe/sap-abap-mcp@latest setup remove DEV100
```
省略 `DEV100` 以选择已保存的服务器。删除始终显示选定的服务器并要求确认;默认答案为 `否`。
### 5. 以只读请求启动
```text
列出配置的 SAP 系统并验证 DEV100。
在 DEV100 中查找类 ZCL_DEMO 并读取其 RUN 方法。
运行语法诊断并在不更改源代码的情况下显示格式化器预览。
为 ZCL_DEMO 构建深度 1 的依赖图。
```
## macOS 详细设置
使用 `npx` 代替 `npx.cmd`:
```bash
npx @coaspe/sap-abap-mcp@latest setup
npx @coaspe/sap-abap-mcp@latest setup edit DEV100
npx @coaspe/sap-abap-mcp@latest setup remove DEV100
codex mcp add sap-abap -- npx --yes --prefer-online @coaspe/sap-abap-mcp@latest serve --profile DEV100
```
向导测试 SAP 连接并将密码存储在 macOS 钥匙串中。
## Linux 和容器
Linux 运行相同的交互式设置,但它不保留凭证:
```bash
npx @coaspe/sap-abap-mcp@latest setup
```
向导保存非秘密服务器配置并打印其配置文件特定的密码变量的精确隐藏输入和 `export` 命令。在启动 MCP 客户端的同一个 shell 中运行这些命令,然后运行打印的 `doctor` 命令。例如,服务器名称 `DEV-100` 使用 `SAP_ABAP_MCP_PASSWORD_DEV_100`。Linux 环境存储是只读的,因此 `auth login` 和 `auth logout` 不可用,也不会创建纯文本凭证文件。
## Codex 桌面设置
如果 `codex` 命令不可用,请在 Codex 设置中添加 stdio MCP 服务器:
- 名称:`sap-abap`
- Windows 命令:`npx.cmd`
- macOS 命令:`npx`
- 参数:
```text
--yes
--prefer-online
@coaspe/sap-abap-mcp@latest
serve
--profile
DEV100
```
## 多个 SAP 系统
为每个 SAP 客户端创建一个配置文件,例如 `DEV100`,`QAS200` 和 `PRD100`。要通过一个 MCP 服务器公开所有配置文件,请在不带 `--profile` 的情况下注册 `serve`:
```powershell
codex mcp add sap-abap -- npx.cmd --yes --prefer-online @coaspe/sap-abap-mcp@latest serve
```
每个面向 SAP 的工具都需要明确的 `connectionId`,以防止意外跨系统路由。跨系统比较需要在两个选定的配置文件中存在相同的对象。
## abapGit 凭证
公共仓库不需要额外设置。为每个私有仓库 URL 存储凭证:
```powershell
npx.cmd --yes --prefer-online @coaspe/sap-abap-mcp@latest abapgit auth login DEV100 `
--repository-url "https://github.example.com/team/repo.git" `
--username "GIT_USER"
```
状态和删除:
```powershell
npx.cmd --yes --prefer-online @coaspe/sap-abap-mcp@latest abapgit auth status DEV100 `
--repository-url "https://github.example.com/team/repo.git"
npx.cmd --yes --prefer-online @coaspe/sap-abap-mcp@latest abapgit auth logout DEV100 `
--repository-url "https://github.example.com/team/repo.git"
```
凭证由规范的仓库 URL 选择,因此一个远程的凭证不能发送到另一个。密码和令牌不被接受为 MCP 工具参数,嵌入在仓库 URL 中的凭证被拒绝。
## 写安全模型
仓库更改操作强制执行这些规则:
- 标记为 `production` 的配置文件拒绝写入。
- 非空的 `allowedPackages` 列表限制写入到这些包;空列表允许所有包。
- 除 `$TMP` 外的包需要传输请求。
- 精确的源代码替换读取当前源代码,获取 SAP 锁,重新检查它在锁下,写入,运行语法诊断,可选地激活,并解锁。
- 重命名,包移动,方法提取,快速修复应用,格式化,删除和修订恢复使用预览计划。
- 预览计划在十分钟后过期,需要返回的确切确认值。
- 执行重新运行 SAP 预览或源状态检查,并拒绝过时的计划。
- 多对象快速修复执行语法预检,并在后续写入失败时尝试回滚。
- RAP 生成在生成前执行初始验证,内容验证和干预预览。
- abapGit 推送仅接受新鲜的 SAP 分段快照,并要求明确的对象选择或 `stageAll=true`。
- SAP 事务参数使用受限字符集,并作为参数数组值传递给 OS 启动器,而不是 shell 文本。
- ADT SQL 仅接受 `SELECT` 和 `WITH` 语句。
传输发布和删除可能不可逆。使用专用传输并在执行任一操作之前验证确切的确认值。
## Token-efficient operation
服务器设计用于在不删除有用数据的情况下限制模型上下文的使用:
- 相关操作被分组为基于操作的工具。
- 完整的 53 工具模式被限制在 64 KiB 的自动防护线以下。
- 源、搜索、SQL、ATC、转储、跟踪、传输、版本、Git 和 RAP 模式响应被分页或摘要。
- 统一差异由行数和字节大小共同限制。
- 大型源响应受内联字节预算限制。
- 发现数据和大型下载清单可以导出到本地文件。
- 紧凑的 JSON 在不添加额外空格的情况下返回。
- 40 KiB 以内的紧凑 JSON 通常不做更改地返回。较大的结果返回有限的结构摘要、精确的 UTF-8 预览和 `compact-v1` 信封中的内存 `resultId`,其大小不超过 12 KiB。
- `search_abap_object_lines` 在 16 KiB 处切换,因为相邻的匹配项会重复上下文。它的摘要合并重叠的源窗口,报告匹配行号和样本,并将确切的原始 JSON 保存在相同的 `resultId` 后。
继续分页响应,包含 `nextStartIndex`、`nextLine`、`nextRowStart` 和 `nextContentOffset` 等字段。
对于 `format: "compact-v1"` 的响应,首先使用 `summary`。仅当需要省略的确切数据时,使用 `resultId` 和 `nextOffset` 调用 `read_deferred_result`。每个块最多 24 KiB;继续直到 `done` 为真。延迟结果在十分钟后过期,永远不会写入磁盘,读取它们也不会重复 SAP 请求。
没有自动工具搜索的主机只能注册选定的工具集:
```bash
sap-abap-mcp serve --profile DEV100 --toolsets core,write,analysis
```
可用的工具集是 `core`、`write`、`analysis`、`debug`、`operations`、`artifacts` 和 `all`。默认为 `all`。
## 真实的 SAP 验收测试
首先在开发系统和专用包、对象、传输、存储库和 RAP 工件上运行验收测试。
对于 BDEF 创建、批量激活、类执行、固定的 ABAP REPL 合同和详细的语义检查,请遵循 [`docs/live-sap-acceptance.md`](docs/live-sap-acceptance.md) 中的证据和清理程序。在选定的连接上,直到这些检查成功后,功能仍保持 `unverified` 状态。
推荐顺序:
1. 连接、发现、存储库读取、语义读取、版本、传输和仅 URL 的事务生成。
2. 创建一个专用测试类,并验证源写入、诊断、激活、格式化、快速修复、重命名、提取方法、非活动源、恢复、包移动和受保护的删除。
3. 仅使用一次性传输测试传输突变。
4. 仅使用一次性远程存储库测试 abapGit。
5. 在批准生成或服务发布之前运行 RAP 验证和预览。
报告故障时,请保留 MCP 错误代码、HTTP 状态、ADT 端点和 SAP 响应文本。不要使用猜测的参数变体重试失败的 ADT 操作。
## CLI 参考
```text
setup
setup edit [<server-name>]
setup remove [<server-name>]
profile add <id> --url <url> --client <nnn> [--language 中文]
[--environment development|quality|production]
[--username <user>] [--packages ZPKG1,ZPKG2]
[--login [--password-stdin]]
profile list
profile remove <id>
auth login <id> [--username <user>] [--password-stdin]
auth status <id>
auth logout <id>
abapgit auth login <id> --repository-url <url> --username <user> [--password-stdin]
abapgit auth status <id> --repository-url <url>
abapgit auth logout <id> --repository-url <url>
doctor <id> [--include-components]
serve [--profile <id>] [--toolsets core,write,analysis,debug,operations,artifacts|all]
```
删除配置文件也会删除其 SAP 密码和存储的 abapGit 凭证库。
## 故障排除
| 问题 | 检查 |
|---|---|
| `node` 未找到 | 安装 Node.js 20 或更高版本并重新打开终端。 |
| npm 无法下载包 | 检查互联网访问、代理配置和 npm 注册表策略。 |
| `PROFILE_NOT_FOUND` | 再次运行 `setup` 并验证服务器名称。 |
| SAP 登录失败 | 验证 URL、客户端、用户名、密码、VPN、基本身份验证和 ADT 激活。 |
| 证书或连接错误 | 检查公司 CA、代理、VPN 和 SAP HTTPS 端点。 |
| 工具丢失 | 确认 MCP 命令包含 `@latest` 和 `--prefer-online`,重新启动它,并检查 `/mcp`。 |
| 写入返回 `PACKAGE_NOT_ALLOWED` | 配置文件有非空 `--packages` 限制;添加目标包或删除限制。 |
| 写入返回 `TRANSPORT_REQUIRED` | 为非本地包提供开放的传输。 |
| RAP 生成器不可用 | SAP 版本或安装的组件可能未公开 RAP 生成器端点。 |
| 私有 Git 访问失败 | 为确切的规范存储库 URL 存储凭证。 |
此版本不支持仅 SSO 或仅 MFA 的 SAP 系统。请向 SAP 管理员询问是否可以为 ADT 端点启用基本身份验证。
## 本地开发
```bash
npm install
npm run check
npm audit --omit=dev
npm pack --dry-run
```
注册当前本地构建进行预发布测试:
```bash
npm run build
codex mcp add sap-abap-local -- node "/absolute/path/to/sap-abap-mcp/dist/src/index.js" serve --profile DEV100
```
兼容性和工具集清单在 `src/compat/abap-fs-tools.ts` 中维护。ADT 包装器合同测试在 `test/sap-client-contract.test.ts` 中,端到端内存 MCP 测试在 `test/integration.test.ts` 中。
## 发布状态
- 包:`@coaspe/sap-abap-mcp`
- 当前源版本:`0.4.11`
- 已发布的 npm 版本:`0.4.11`
- 发布渠道:npm `latest`(在 MCP 进程启动时自动解析)
- 运行时:Node.js 20 或更高版本
- 传输:本地 MCP 通过 stdio
- 身份验证:SAP 基本身份验证
- 机密存储:macOS 钥匙串、Windows DPAPI 或 Linux 上的只读环境变量
- SAP API 客户端:`abap-adt-api` 8.4.1
- ABAP FS 兼容性基线:2.6.5,提交 `3041418d35558e043993a4d7f9fa6b727fcf9cf1`
自动化套件验证 MCP 合同、ADT 参数排序、安全策略、陈旧预览保护、输出边界和所有 53 个注册工具,使用的是一种内存 SAP 实现。实时 SAP 验收测试仍然是必需的,因为端点可用性和授权因 SAP 版本和系统配置而异。
## 详细的 Windows 指南
参见 [`docs/localhost-mcp-end-to-end.md`](docs/localhost-mcp-end-to-end.md),了解多系统 Windows 设置、生命周期、安全模型和操作检查清单。
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器