关于 mcp-abap-adt
mcp-abap-adt 是连接 SAP ABAP 系统的只读 MCP 服务,供开发工具和 MCP 客户端检索 ABAP 对象信息。它通过 ADT 提供 16 个工具,涵盖源代码与结构数据。
主要功能
- 01读取程序、类和 CDS 源码
- 02查看表结构
- 03提供 16 个只读工具
- 04无需 SAP 凭据即可发现工具
适用场景
- 01检索 ABAP 程序源代码
- 02检查 SAP 表结构
- 03从 MCP 客户端读取 CDS 对象
MCP 相关
作为 MCP 服务,它通过 SAP ADT 向 MCP 客户端提供只读工具,用于获取 ABAP 源码、表结构等信息。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y mcp-abap-adtSAP_URLBase URL of the SAP system, e.g. https://host:443SAP_USERNAMESAP usernameSAP_PASSWORD密钥SAP passwordSAP_CLIENTSAP client numberSAP_LANGUAGELogon language, e.g. enTLS_REJECT_UNAUTHORIZED密钥Set to 0 to allow self-signed certificates, 1 to enforce TLS verification本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
16收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| program_name | string | 是 | ABAP 程序名称 |
详细介绍
mcp-abap-adt:通往 ABAP 开发工具(ADT)的入口
本项目提供一个服务,让你能够使用 Model Context Protocol(MCP)与 SAP ABAP 系统交互。你可以把它看作一座桥梁,让 FLUJO、Claude 或 Cline(一个 VS Code 扩展)等工具与 ABAP 系统通信,并获取源代码、表结构等信息。它就像 ABAP 开发环境的远程控制器!
该服务以 npm 包 mcp-abap-adt 的形式发布,并在 MCP Registry 中列为 io.github.mario-andreschak/mcp-abap-adt,因此大多数 MCP 客户端都可以通过一条命令安装。无需 SAP 凭据即可发现工具;调用访问 SAP 的工具时则需要进行以下配置。这 16 个工具均为只读工具。
本指南面向初学者,因此我们会逐步介绍所有内容。我们将涵盖:
- 前置条件: 开始之前需要准备的内容。
- 安装和设置: 完成安装并做好一切准备。
- 运行服务: 以不同模式启动服务。
- 与 FLUJO 集成: 最简单的方式——通过 Spotlight/Marketplace 一键安装。
- 与 Cline 集成: 将此服务连接到 Cline VS Code 扩展。
- 与 Claude Desktop 集成: 将服务添加到 Claude Desktop 桌面应用。
- 与 Claude Code 集成: 通过
.mcp.json或 CLI 添加服务。 - 故障排除: 常见问题及解决方案。
- 可用工具: 可供你使用的命令列表。
1. 前置条件
开始之前,你需要准备以下内容:
-
SAP ABAP 系统: 此服务会连接到现有的 ABAP 系统。你需要:
- 系统 URL(例如,
https://my-sap-system.com:8000) - 该系统的有效用户名和密码。
- SAP 客户端编号(例如,
100)。 - 确保 SAP 系统允许通过 ADT(ABAP Development Tools)连接。这通常需要在事务
SICF中启用必要的服务。你的 Basis 管理员可以为你提供帮助。具体而言,你需要启用以下服务:/sap/bc/adt
- 系统 URL(例如,
-
Node.js 和 npm: Node.js 是一种 JavaScript 运行时,可让你在 Web 浏览器之外运行 JavaScript 代码。npm(Node Package Manager)随 Node.js 一同提供,用于安装软件包(代码库)。
- 下载 Node.js。**请选择 LTS(长期支持)版本。**这是最稳定的版本。按照适用于你操作系统的安装说明进行操作。确保在安装时包含 npm(通常默认已包含)。
- 验证安装: 安装 Node.js 后,打开一个新的终端(Windows 上为命令提示符,macOS/Linux 上为 Terminal),并输入:
你应该会看到 Node.js 和 npm 的版本号。如果出现错误,可能是 Node.js 未正确安装,或者未加入系统的 PATH。(请参阅下文的“故障排除”。)node -v npm -v
-
Git(或 GitHub Desktop)(大多数情况下可选): 我们将使用 Git 下载项目代码。你有两种选择:
- Git: 命令行工具。下载 Git。选择适用于你操作系统(Windows、macOS、Linux)的版本,并按照安装说明进行操作。
- GitHub Desktop: Git 的图形用户界面,对初学者更友好!下载 GitHub Desktop。按照安装说明进行操作。
2. 安装和设置
现在,我们来获取项目代码并进行设置:
使用 FLUJO 安装(推荐)
请参阅与 FLUJO 集成
从 npm 安装
该服务已发布到 npm,因此无需克隆或构建任何内容。大多数 MCP 客户端都可以直接使用 npx 运行:
npx -y mcp-abap-adt
通常,你会在 MCP 客户端中进行配置,而不是手动运行它——将客户端指向命令 npx,并传入参数 ["-y", "mcp-abap-adt"],然后通过环境变量提供 SAP 凭据(SAP_URL、SAP_USERNAME、SAP_PASSWORD、SAP_CLIENT;可选:SAP_LANGUAGE、SAP_CA_FILE)。请参阅下方有关 FLUJO 和 Cline 的集成部分。
若要改为全局安装:
npm install -g mcp-abap-adt
手动安装(从源代码安装)
-
克隆仓库:
- 使用 Git(命令行):
- 打开终端(命令提示符或 Terminal)。
- 导航到要存放项目的目录。例如,要将项目放在桌面上:
cd Desktop - 克隆仓库:
git clone https://github.com/mario-andreschak/mcp-abap-adt - 切换到项目目录:
cd mcp-abap-adt # 或其他文件夹名称
- 使用 GitHub Desktop:
- 打开 GitHub Desktop。
- 点击“File” -> “Clone Repository...”。
- 在“URL”选项卡中,粘贴仓库 URL。
- 选择本地路径(即要在电脑上保存项目的位置)。
- 点击“Clone”。
- 使用 Git(命令行):
-
安装依赖项: 这会下载项目所需的所有库。在终端中,进入根目录并运行:
npm ci这可能需要几分钟。
-
构建项目: 这会将代码编译为可执行格式。
npm run build -
创建
.env文件: 此文件用于存储 SAP 凭据等敏感信息。务必妥善保管此文件。- 在根目录中创建一个名为
.env的新文件(无扩展名)。 - 使用文本编辑器(例如 Notepad、VS Code 等)打开
.env文件。 - 添加以下内容,并将占位符替换为实际的 SAP 系统信息:
重要提示:如果密码中包含“#”字符,请务必用引号将密码括起来!
重要提示: 切勿与任何人分享SAP_URL=https://your-sap-system.com:8000 # 你的 SAP 系统 URL SAP_USERNAME=your_username # 你的 SAP 用户名 SAP_PASSWORD=your_password # 你的 SAP 密码 SAP_CLIENT=100 # 你的 SAP 客户端.env文件,也不要将其提交到 Git 仓库!
- 在根目录中创建一个名为
SAP TLS 和网络设置
默认启用证书和主机名验证。对于由贵组织的私有 CA 签名的 SAP 系统,请设置 SAP_CA_FILE=/absolute/path/sap-ca.pem,指向可读取的 PEM CA 证书包。该证书包会补充 Node 内置的根证书。在 Docker 中运行时,请以只读方式挂载证书包,并提供其容器内路径。这遵循 Node TLS 信任配置。
SAP_URL 必须是规范的 HTTP(S) 源,例如 https://sap.example:443,且不能包含路径、查询、片段或内嵌凭据。访问 SAP 凭据时请使用 HTTPS。重定向会被拒绝,以防身份验证信息和会话 Cookie 被转发到其他服务。如果反向代理会重定向请求,请配置最终源。
之前文档中提到的 TLS_REJECT_UNAUTHORIZED=0 现在是明确的故障排除选项,并会向 stderr 输出警告;默认值为 1。此前无论该设置为何值,证书验证都会被无条件禁用。信任私有证书通常应使用自定义 CA;此服务不会使用全局 NODE_TLS_REJECT_UNAUTHORIZED 设置。
SAP_LANGUAGE 接受两字母语言代码,例如 EN 或 de。每个 ADT/CSRF 请求都会将 SAP 客户端和可选语言作为查询参数发送。每个请求的超时时间为 30 秒,响应大小上限为 16 MiB;工具调用的总时限为 60 秒,并会传递取消信号。现有返回文本的分页仍限制在 40,000 个 UTF-8 字节以内。如果上游响应超过下载上限,请缩小查询范围。
3. 运行服务
说实话,你通常不会单独“运行”此服务。它旨在集成到 Claude、FLUJO、Cline 等 MCP 客户端中。不过,你也可以通过两种主要方式手动运行服务:
- 独立模式: 直接运行服务,并在终端中输出消息。服务启动后会等待客户端连接,因此除了确认它能否启动之外,可能没有其他用途。
- 开发/调试模式: 使用 MCP Inspector 运行服务。你可以在浏览器中打开它输出的 URL 并开始试用。
3.1 独立模式
要以独立模式运行服务,请在终端中(从根目录)使用以下命令:
npm run start
你应该会在终端中看到服务正在运行的消息。它会监听 MCP 客户端的连接。服务会持续运行,直到你停止它(通常按 Ctrl+C)。
3.2 开发/调试模式(使用 Inspector)
此模式适用于调试。
- 以调试模式启动服务:
服务将启动,并输出类似以下内容的消息:npm run dev🔍 MCP Inspector is up and running at http://localhost:5173 🚀。 你可以在浏览器中打开此 URL,访问 MCP Inspector。
4. 与 FLUJO 集成
FLUJO 是使用此服务最简单的方式——无需克隆、构建或编辑 JSON 配置。mcp-abap-adt 是精选的 Spotlight 服务,只需单击即可安装:
- 在 FLUJO 中,导航到 MCP。
- 单击 Add Server。
- 在 Spotlight 选项卡中,单击 mcp-abap-adt(或切换到 Marketplace 选项卡并在那里找到它)。
- FLUJO 会自动获取软件包并打开 Local Server 选项卡。输入 SAP URL、Username 和 Password(以及客户端),然后单击 Save。
就是这样——FLUJO 会为你下载并运行 npm 软件包。
流式 HTTP 传输(通过 FLUJO)
mcp-abap-adt 通过 stdio 运行。如果你需要通过流式 HTTP访问它——例如,从你电脑上的其他应用或仅支持 HTTP 的客户端访问——可以让 FLUJO 重新托管它:按上述步骤在 FLUJO 中安装该服务,然后在该服务上启用 "Expose to external apps"。FLUJO 内置的 mcp-proxy 随后会通过 HTTP 在 http://localhost:4200/mcp-proxy/mcp-abap-adt 提供该服务,任何支持 HTTP 的 MCP 客户端都可以使用类似以下的配置连接:
{
"mcpServers": {
"mcp-abap-adt": {
"type": "http",
"url": "http://localhost:4200/mcp-proxy/mcp-abap-adt"
}
}
}
FLUJO 会将你的 SAP 凭据保存在已安装的服务中,因此 HTTP 配置本身不包含任何凭据。
5. 与 Cline 集成
Cline 是一个使用 MCP 服务提供语言支持的 VS Code 扩展。以下是将此 ABAP 服务连接到 Cline 的方法:
-
**安装 Cline:**如果尚未安装,请在 VS Code 中安装 "Cline" 扩展。
-
打开 Cline 设置:
- 打开 VS Code 设置(File -> Preferences -> Settings,或按 Ctrl+,)。
- 搜索 "Cline MCP Settings"。
- 点击 "Edit in settings.json"。这会打开
cline_mcp_settings.json文件。完整路径通常类似于:C:\Users\username\AppData\Roaming\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json(将username替换为你的 Windows 用户名)。
-
**添加服务配置:**你需要在
cline_mcp_settings.json文件的mcpServers对象中添加一个条目。推荐的方式是通过npx运行已发布的 npm 包,并将 SAP 凭据作为环境变量传入——无需本地构建:{ "mcpServers": { "mcp-abap-adt": { "command": "npx", "args": ["-y", "mcp-abap-adt"], "env": { "SAP_URL": "https://your-sap-system.com:8000", "SAP_USERNAME": "your_username", "SAP_PASSWORD": "your_password", "SAP_CLIENT": "100" }, "disabled": false, "autoApprove": [] } // ... other server configurations ... } }如果你从源代码安装(请参阅手动安装),请将
command指向node,并通过绝对路径指定构建输出,例如"args": ["C:/PATH_TO/mcp-abap-adt/dist/index.js"],然后通过.env文件配置凭据。 -
测试连接:
- Cline 应会自动连接到服务。你会在 "MCP Servers" 面板中看到该服务(在 Cline 扩展中,顶部有几个不同的按钮。)
- 让 Cline 获取某个程序的源代码,它应该会提到 MCP 服务并尝试使用相应的工具
6. 与 Claude Desktop 集成
Claude Desktop 可以直接通过已发布的 npm 包运行此服务。
-
打开 Claude Desktop → 设置 → 开发者 → 编辑配置。这会打开
claude_desktop_config.json。文件位于:- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
-
在
mcpServers下添加mcp-abap-adt条目,并填写你的 SAP 凭据:{ "mcpServers": { "mcp-abap-adt": { "command": "npx", "args": ["-y", "mcp-abap-adt"], "env": { "SAP_URL": "https://your-sap-system.com:8000", "SAP_USERNAME": "your_username", "SAP_PASSWORD": "your_password", "SAP_CLIENT": "100" } } } } -
保存文件并重启 Claude Desktop。ABAP 工具会显示在工具(🔨)菜单中。
**Windows 提示:**如果找不到
npx,请将"command": "npx.cmd",或在从源代码安装时使用node的完整路径,并通过绝对路径指定dist/index.js。
7. 与 Claude Code 集成
Claude Code 会从项目根目录中的 .mcp.json 文件(与团队共享),或通过 CLI 从用户/项目范围读取 MCP 服务。
选项 A — 在项目根目录中使用 .mcp.json:
{
"mcpServers": {
"mcp-abap-adt": {
"command": "npx",
"args": ["-y", "mcp-abap-adt"],
"env": {
"SAP_URL": "https://your-sap-system.com:8000",
"SAP_USERNAME": "your_username",
"SAP_PASSWORD": "your_password",
"SAP_CLIENT": "100"
}
}
}
}
由于此文件会提交到你的代码仓库,请勿在其中填写真实密码——可以使用由每位开发者在本地填写的占位值,或引用环境变量(Claude Code 会展开 .mcp.json 中的 ${VAR}),例如 "SAP_PASSWORD": "${SAP_PASSWORD}"。
选项 B — 通过 CLI 添加:
claude mcp add mcp-abap-adt \
--env SAP_URL=https://your-sap-system.com:8000 \
--env SAP_USERNAME=your_username \
--env SAP_PASSWORD=your_password \
--env SAP_CLIENT=100 \
-- npx -y mcp-abap-adt
添加 --scope project 可将其写入共享的 .mcp.json,添加 --scope user 可让所有项目都能使用它。使用 claude mcp list 验证。
8. 大型响应分页
所有返回文本的工具都支持可选参数 startLine 和 maxLines:GetProgram、GetClass、GetFunctionGroup、GetFunction、GetStructure、GetTable、GetTableContents、GetPackage、GetTypeInfo、GetInclude、SearchObject、GetTransaction、GetCDSView、GetInterface、GetBehaviorDefinition 和 GetServiceDefinition。GetTableContents.max_rows 和 SearchObject.maxResults 仍会限制上游记录;分页则单独限制文本响应的大小。
startLine是从 1 开始的整数,默认值为 1。maxLines是介于 1 和 100,000 之间的整数。省略时,工具会请求所有剩余行。- 响应较小且未使用分页参数时,仍会原样返回现有的
content[0].text。 - 显式请求分页时,会在
content[0].text中返回 JSON 封装对象。 - 未分页的结果若超过 40,000 字节的保守 UTF-8 限额,会自动缩减,并以相同的封装格式返回,其中
autoPaged: true且capped: true。 - 请求超出文件末尾时,会返回
content: ""、returnedLines: 0和hasMore: false。
封装对象的格式如下:
{
"content": "...returned source lines...",
"totalLines": 7745,
"startLine": 1,
"returnedLines": 1200,
"hasMore": true,
"autoPaged": true,
"capped": true
}
content 是选取的文本,totalLines 表示完整序列化结果的总行数,returnedLines 统计已读取的源行数。当 hasMore 为 true 时,可使用 startLine + returnedLines 继续常规分页。autoPaged 仅在调用方未请求分页时出现。capped 表示为满足最终 content[0].text 的 UTF-8 字节限额,已缩减请求/默认范围。
如果某一源行自身就超过限额,封装对象还会包含 truncatedMidLine: true。返回的前缀符合 UTF-8 编码规范,且不会拆分 Unicode 代理对,但无法通过按行分页恢复省略的后缀。该行计为已读取;hasMore 仅表示后面是否还有源行。
此前将所有结果都视为原始源文本的客户端,在显式请求分页或自动截断返回封装对象时,应将 content[0].text 解析为 JSON。未分页的小型响应仍向后兼容。
默认的 npm test 运行无需凭证,并会跳过 SAP 实时集成测试。维护人员可在运行 npm test -- src/index.test.ts 前设置 RUN_SAP_INTEGRATION=1,选择加入该测试。
9. 故障排除
node -v或npm -v报错:- 确保已正确安装 Node.js。先尝试关闭执行命令时使用的 Terminal/Powershell/cmd.exe。尝试重启计算机,或重新安装。
- 确保 Node.js 安装目录已添加到系统的 PATH 环境变量中。在 Windows 上,可以通过“系统属性”编辑环境变量(在“开始”菜单中搜索“环境变量”)。
npm install失败:- 确保已连接互联网。
- 尝试删除
node_modules文件夹,然后重新运行npm install。 - 如果使用代理,可能需要配置 npm 使用该代理。在网上搜索“npm proxy settings”。
- Cline 无法连接到服务:
- 仔细检查
cline_mcp_settings.json中的设置。路径必须是指向root-server目录的正确绝对路径,且在 Windows 上使用双反斜杠。 - 确保服务正在运行(运行
npm run start进行检查)。 - 重启 VS Code。
- 或者:
- 在资源管理器中导航到 mcp-abap-adt 的根文件夹,按住 Shift 并右键单击,然后选择“在此处打开 Powershell”。(或者打开 Powershell,并使用
cd C:/PATH_TO/mcp-abap-adt/导航到该文件夹。) - 运行“npm install”
- 运行“npm run build”
- 运行“npx @modelcontextprotocol/inspector node dist/index.js”
- 在浏览器中打开它输出的 URL。点击左侧的“connect”。
- 点击顶部的“Tools”,然后点击“List Tools”
- 点击 GetProgram,并在右侧的 Program Name 中输入“SAPMV45A”或其他报表名称
- 测试并查看输出内容
- 仔细检查
- SAP 连接错误:
- 在
.env文件中验证 SAP 凭据。 - 确保 SAP 系统正在运行,并且可从你的网络访问。
- 确保 SAP 用户具有访问 ADT 服务所需的授权。
- 检查必需的 ADT 服务是否已在事务
SICF中激活。 - 对于私有 CA 或自签名服务器证书,请配置 SAP_CA_FILE,并验证证书主机名与 SAP_URL 匹配。HTTP 状态码会在不含上游响应正文的情况下返回;请检查 SAP 服务器日志以了解身份验证和授权详情。
- 在
10. 可用工具
此服务提供以下工具,可通过 FLUJO、Cline、Claude Desktop、Claude Code 或任何其他 MCP 客户端使用。上文所述的共享可选分页参数 startLine 和 maxLines 也适用于以下列出的每个工具:
| 工具名称 | 描述 | 输入参数 | 用法示例(在 Cline 中) |
|---|---|---|---|
GetProgram | 获取 ABAP 程序源代码。 | program_name(字符串):ABAP 程序名称。 | @tool GetProgram program_name=ZMY_PROGRAM |
GetClass | 获取 ABAP 类源代码。 | class_name(字符串):ABAP 类名称。 | @tool GetClass class_name=ZCL_MY_CLASS |
GetFunctionGroup | 获取 ABAP 函数组源代码。 | function_group(字符串):函数组名称 | @tool GetFunctionGroup function_group=ZMY_FUNCTION_GROUP |
GetFunction | 获取 ABAP 函数模块源代码。 | function_name(字符串),function_group(字符串) | @tool GetFunction function_name=ZMY_FUNCTION function_group=ZFG |
GetStructure | 获取 ABAP 结构。 | structure_name(字符串):DDIC 结构名称。 | @tool GetStructure structure_name=ZMY_STRUCT |
GetTable | 获取 ABAP 表结构。 | table_name(字符串):ABAP 数据库表名称。 | @tool GetTable table_name=ZMY_TABLE |
GetTableContents | 获取 ABAP 表的内容。 | table_name(字符串),max_rows(整数 1-10000,可选,默认值为 100) | @tool GetTableContents table_name=ZMY_TABLE max_rows=50 |
GetCDSView | 获取 CDS 视图(DDL 源)的源代码。 | cds_view_name(字符串):CDS 视图名称(DDL 源名称)。 | @tool GetCDSView cds_view_name=I_CURRENCY |
GetPackage | 获取 ABAP 包的详细信息。 | package_name(字符串):ABAP 包名称。 | @tool GetPackage package_name=ZMY_PACKAGE |
GetTypeInfo | 获取 ABAP 类型信息。 | type_name(字符串):ABAP 类型名称。 | @tool GetTypeInfo type_name=ZMY_TYPE |
GetInclude | 获取 ABAP include 源代码 | include_name(字符串):ABAP include 的名称` | @tool GetInclude include_name=ZMY_INCLUDE |
SearchObject | 使用快速搜索查找 ABAP 对象。 | query(字符串),maxResults(整数 1-10000,可选,默认值为 100) | @tool SearchObject query=ZMY* maxResults=20 |
GetInterface | 获取 ABAP 接口源代码。 | interface_name(字符串):ABAP 接口名称。 | @tool GetInterface interface_name=ZIF_MY_INTERFACE |
GetTransaction | 获取 ABAP 事务的详细信息。 | transaction_name(字符串):ABAP 事务名称。 | @tool GetTransaction transaction_name=ZMY_TRANSACTION |
GetBehaviorDefinition | 获取 RAP 行为定义(BDEF)源代码。需要 ~NW 7.54 / S/4HANA。 | behavior_definition_name(字符串):RAP 行为定义名称。 | @tool GetBehaviorDefinition behavior_definition_name=ZMY_ENTITY |
GetServiceDefinition | 获取 RAP 服务定义(SRVD)源代码。需要 ~NW 7.54 / S/4HANA。 | service_definition_name(字符串):RAP 服务定义名称。 | @tool GetServiceDefinition service_definition_name=ZMY_SERVICE |
使用 Node 22 或 24 且已安装 OpenSSL 时,运行 npm ci && npm run check。无需凭据的测试套件涵盖现有的分页和 ADT 回退逻辑、本地 HTTPS 服务(信任、主机名检查、重定向、限制、取消、Cookie/CSRF)、实际的新旧 SDK 客户端,以及仅包含生产依赖的打包 npm 安装。CI 还会构建并启动 Docker 镜像。
现有的 12 项 SAP 实时集成测试仍需通过 RUN_SAP_INTEGRATION=1 和有效的 SAP 配置选择性启用。模拟测试或 CI 运行成功,并不能证明客户的 ADT 服务已激活、授权配置正确、支持特定版本的端点,或网络可以访问。本次修复未连接任何 SAP 实时系统。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。