
Abap Adt
一个服务器,它将模型上下文协议(MCP)与SAP ABAP系统连接起来,使像Cline这样的工具能够检索ABAP源代码、表结构和其他开发工件。
mcp-abap-adt: 通往 ABAP 开发工具 (ADT) 的门户
此项目提供了一个服务器,允许您使用模型上下文协议 (MCP) 与 SAP ABAP 系统进行交互。可以将其视为一座桥梁,让像 Cline(VS Code 扩展)这样的工具能够与您的 ABAP 系统通信并检索信息,如源代码、表结构等。就像拥有了一个远程控制,可以操控您的 ABAP 开发环境!
本指南专为初学者设计,我们将一步步地介绍所有内容。我们将涵盖:
- 先决条件: 开始之前需要准备的事项。
- 安装和设置: 让一切正常运行。
- 运行服务器: 在不同模式下启动服务器。
- 与 Cline 集成: 将此服务器连接到 Cline VS Code 扩展。
- 故障排除: 常见问题及解决方案。
- 可用工具: 可使用的命令列表。
1. 先决条件
在开始之前,您需要以下几项:
-
SAP ABAP 系统: 此服务器连接到现有的 ABAP 系统。您需要:
- 系统的 URL(例如,
https://my-sap-system.com:8000
) - 该系统的有效用户名和密码
- SAP 客户端编号(例如,
100
) - 确保您的 SAP 系统允许通过 ADT(ABAP 开发工具)进行连接。这通常涉及确保在事务
SICF
中激活了必要的服务。您的基础管理员可以帮助您完成此操作。具体来说,您需要以下服务处于活动状态:/sap/bc/adt
- 对于
GetTableContents
工具,您需要实现自定义服务/z_mcp_abap_adt/z_tablecontent
。您可以参考此指南 此处
- 系统的 URL(例如,
-
Git(或 GitHub Desktop): 我们将使用 Git 下载项目代码。您有两个选项:
- Git: 命令行工具。下载 Git。选择适用于您操作系统的版本(Windows、macOS、Linux)。按照安装说明进行安装。
- GitHub Desktop: Git 的图形用户界面。对初学者更友好!下载 GitHub Desktop。按照安装说明进行安装。
-
Node.js 和 npm: Node.js 是一个 JavaScript 运行时,可以让您在浏览器之外运行 JavaScript 代码。npm(Node 包管理器)包含在 Node.js 中,用于安装包(代码库)。
- 下载 Node.js。**选择 LTS(长期支持)版本。**这是最稳定的版本。按照您操作系统的安装说明进行安装。确保在安装过程中包含 npm(默认情况下通常已包含)。
- 验证安装: 安装 Node.js 后,打开一个新的终端(Windows 上的命令提示符,macOS/Linux 上的 Terminal),然后输入:
bash
node -v npm -v
2. 安装和设置
现在,让我们获取项目代码并进行设置:
通过 Smithery 安装
要通过 Smithery 自动安装 MCP ABAP 开发工具服务器,请使用以下命令:
bash
npx -y @smithery/cli install @mario-andreschak/mcp-abap-adt --client cline
手动安装
-
克隆仓库:
- 使用 Git(命令行):
- 打开终端(命令提示符或 Terminal)。
- 导航到您希望存储项目的目录。例如,要将其放在桌面上:
bash
cd Desktop
- 克隆仓库:
bash
git clone https://github.com/mario-andreschak/mcp-abap-adt
- 进入项目目录:
bash
cd mcp-abap-adt # 或者是其他文件夹名称
- 使用 GitHub Desktop:
- 打开 GitHub Desktop。
- 点击“File” -> “Clone Repository...”。
- 在“URL”标签页中粘贴仓库 URL。
- 选择本地路径(您希望在计算机上保存项目的路径)。
- 点击“Clone”。
- 使用 Git(命令行):
-
安装依赖项: 这将下载项目所需的所有必要库。在终端中,在根目录下运行:
bashnpm install
这可能需要几分钟时间。
-
构建项目: 这会将代码编译为可执行格式。
bashnpm run build
-
创建
.env
文件: 此文件存储敏感信息,如您的 SAP 凭证。非常重要的是要保持此文件的安全。- 在根目录中,创建一个名为
.env
的新文件(无扩展名)。 - 使用文本编辑器(如记事本、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 仓库!
- 在根目录中,创建一个名为
3. 运行服务器
公平地说,您通常不会单独运行此服务器。它应该集成到像 Cline 或 Claude Desktop 这样的 MCP 客户端中。但您可以通过两种主要方式手动运行服务器:
- 独立模式: 直接运行服务器,它会将消息输出到终端。服务器将启动并等待客户端连接,因此除非您想查看它是否启动,否则这样做可能没有实际用途。
- 开发/调试模式: 使用 MCP 检查器运行服务器。您可以在浏览器中打开它输出的 URL 并开始测试。
3.1 独立模式
要在独立模式下运行服务器,请在终端中(从根目录)使用以下命令:
bash
npm run start
您应该会在终端中看到指示服务器正在运行的消息。它将监听来自 MCP 客户端的连接。服务器将一直运行,直到您停止它(通常是按 Ctrl+C)。
3.2 开发/调试模式(带检查器)
此模式对于调试非常有用。
- 以调试模式启动服务器:
bash
npm run dev
🔍 MCP 检查器已在 http://localhost:5173 上运行 🚀
。
这是您将在浏览器中打开 MCP 检查器的 URL。
4. 与 Cline 集成
Cline 是一个 VS Code 扩展,使用 MCP 服务器提供语言支持。以下是将此 ABAP 服务器连接到 Cline 的方法:
-
安装 Cline: 如果尚未安装,请在 VS Code 中安装“Cline”扩展。
-
打开 Cline 设置:
- 打开 VS Code 设置(文件 -> 首选项 -> 设置,或 Ctrl+,)。
- 搜索“Cline MCP 设置”。
- 点击“在 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
文件中的servers
数组中添加一个条目。示例如下:json{ "mcpServers": { "mcp-abap-adt": { "command": "node", "args": [ "C:/PATH_TO/mcp-abap-adt/dist/index.js" ], "disabled": true, "autoApprove": [] } // ... 其他服务器配置 ... } }
-
测试连接:
- Cline 应自动连接到服务器。您将在“MCP 服务器”面板中看到该服务器(在 Cline 扩展中,您会在顶部找到不同的按钮)。
- 要求 Cline 获取某个程序的源代码,它应提到 MCP 服务器并尝试使用相应的工具。
5. 故障排除
node -v
或npm -v
返回错误:- 确保 Node.js 已正确安装。尝试重新安装。
- 确保 Node.js 安装目录在系统 PATH 环境变量中。在 Windows 上,您可以通过系统属性(在开始菜单中搜索“环境变量”)来编辑环境变量。
npm install
失败:- 确保您有互联网连接。
- 尝试删除
node_modules
文件夹并再次运行npm install
。 - 如果您位于代理后面,可能需要配置 npm 以使用代理。在线搜索“npm 代理设置”。
- Cline 无法连接到服务器:
- 检查
cline_mcp_settings.json
中的设置。必须是root-server
目录的正确绝对路径,并且在 Windows 上使用双反斜杠。 - 确保服务器正在运行(使用
npm run start
检查)。 - 重启 VS Code。
- 或者:
- 导航到 mcp-abap-adt 的根文件夹,在资源管理器中右键点击并选择“在此处打开 PowerShell”。(或者打开 PowerShell 并使用
cd C:/PATH_TO/mcp-abap-adt/
导航到文件夹) - 运行
npm install
- 运行
npm run build
- 运行
npx @modelcontextprotocol/inspector node dist/index.js
- 在浏览器中打开它输出的 URL。点击左侧的“连接”。
- 点击顶部的“工具”,然后点击“列出工具”
- 点击 GetProgram 并在右侧输入“SAPMV45A”或其他报告名称作为程序名称
- 测试并查看输出结果
- 检查
- SAP 连接错误:
- 验证
.env
文件中的 SAP 凭证。 - 确保 SAP 系统正在运行并且可以从您的网络访问。
- 确保您的 SAP 用户具有访问 ADT 服务所需的授权。
- 检查事务
SICF
中是否激活了所需的 ADT 服务。 - 如果您使用自签名证书或 SAP 系统的 HTTP 配置有问题,请确保按上述方法设置 TLS_REJECT_UNAUTHORIZED!
- 验证
6. 可用工具
此服务器提供了以下工具,可以通过 Cline(或其他任何 MCP 客户端)使用:
工具名称 | 描述 | 输入参数 | 示例用法(在 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 (数字, 可选, 默认 100) |
@tool GetTableContents table_name=ZMY_TABLE max_rows=50 |
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_name (字符串): ABAP 包含的名称` |
@tool GetInclude include_name=ZMY_INCLUDE |
SearchObject |
使用快速搜索搜索 ABAP 对象。 | query (字符串), maxResults (数字, 可选, 默认 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 |