mcp-abap-adt:abap开发工具(adt)的门户
](https://smithery.ai/server/@mario-andreschak/mcp-abap-adt)
此项目提供了一个服务器,允许您使用模型上下文协议(MCP)与SAP ABAP系统进行交互。把它想象成一座桥梁,让工具像 克莱恩 (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。您可以按照此指南进行操作 这里
- Git(或GitHub桌面): 我们将使用Git下载项目代码。您有两个选择:
- Git: 命令行工具。 下载Git。选择适用于您的操作系统(Windows、macOS、Linux)的版本。按照安装说明进行操作。 - GitHub桌面: Git的图形用户界面。对初学者来说更容易! 。按照安装说明进行操作。
- Node.js和npm: Node.js是一个JavaScript运行时环境,允许您在web浏览器之外运行JavaScript代码。npm(节点包管理器)包含在Node.js中,用于安装包(代码库)。
- . 选择LTS(长期支持)版本。 这是最稳定的版本。按照操作系统的安装说明进行操作。确保在安装中包含npm(默认情况下通常包含)。 - 验证安装: 安装Node.js后,打开一个新的终端(Windows上的命令提示符,macOS/Linux上的终端),然后键入:
node -v
npm -v你应该看到Node.js和npm的版本号。如果您看到错误,则可能是Node.js安装不正确,或者它可能不在系统的PATH中。(请参阅下面的故障排除)。
2.安装和设置
现在,让我们获取项目代码并进行设置:
通过Smithery安装
通过以下方式自动安装MCP ABAP Development Tools Server for Cline 史密瑟里:
npx -y @smithery/cli install @mario-andreschak/mcp-abap-adt --client cline手动安装
- 克隆存储库:
- 使用Git(命令行): 1. 打开终端(命令提示符或终端)。 1. 导航到要存储项目的目录。例如,要将其放在桌面上:
cd Desktop1. 克隆存储库:
git clone https://github.com/mario-andreschak/mcp-abap-adt1. 切换到项目目录:
cd mcp-abap-adt # Or whatever the folder name is- 使用GitHub桌面: 1. 打开GitHub桌面。 1. 单击“文件”->“克隆存储库…”。 1. 在“URL”选项卡中,粘贴存储库URL。 1. 选择本地路径(要在计算机上保存项目的位置)。 1. 单击“克隆”。
- 安装依赖关系: 这将下载项目所需的所有必要库。在终端的根目录中,运行:
npm install这可能需要几分钟的时间。
- 构建项目: 这将代码编译为可执行格式。
npm run build- 创建一个
.env文件: 此文件存储敏感信息,如您的SAP凭据。它是 *非常* 确保此文件的安全至关重要。
1. 在根目录中,创建一个名为的新文件 .env (无延期)。 1. 打开 .env 文本编辑器(如记事本、VS Code等)中的文件。 1. 添加以下行,用实际的SAP系统信息替换占位符: 重要提示:如果您的密码包含“#”字符,请确保将密码括在引号中!
SAP_URL=https://your-sap-system.com:8000 # Your SAP system URL
SAP_USERNAME=your_username # Your SAP username
SAP_PASSWORD=your_password # Your SAP password
SAP_CLIENT=100 # Your SAP client重要提示: 永远不要分享你的 .env 与任何人一起创建文件,永远不要将其提交到Git存储库!
3.运行服务器
公平地说,你通常不会自己“运行”这台服务器。它应该集成到像Cline或Claude Desktop这样的MCP客户端中。只有你 *能* 以两种主要方式手动运行服务器:
- 独立模式: 这将直接运行服务器,并将消息输出到终端。服务器将启动并等待客户端连接,因此除了查看是否启动外,可能会使其无用。
- 开发/调试模式: 这将使用MCP检查器运行服务器。您可以在浏览器中打开它输出的URL并开始播放。
3.1独立模式
要在独立模式下运行服务器,请在终端中使用以下命令(从根目录):
npm run start您应该在终端中看到消息,指示服务器正在运行。它将监听来自MCP客户端的连接。服务器将一直运行,直到您停止它(通常使用Ctrl+C)。
3.2开发/调试模式(带检查器)
此模式对调试很有用。
- 在调试模式下启动服务器:
npm run dev这将启动服务器并输出如下消息: 🔍 MCP Inspector is up and running at http://localhost:5173 🚀. 这是您将用于在浏览器中打开MCP检查器的URL。
4.与Cline整合
Cline是一个VS Code扩展,它使用MCP服务器提供语言支持。以下是如何将此ABAP服务器连接到Cline:
- 安装Cline: 如果还没有,请在VS Code中安装“Cline”扩展。
- 打开临床设置:
- 打开VS代码设置(文件->首选项->设置,或Ctrl+)。 - 搜索“临床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用户名)。
- 添加服务器配置: 您需要在
servers数组中cline_mcp_settings.json文件。这里有一个例子:
{
"mcpServers":
{
"mcp-abap-adt": {
"command": "node",
"args": [
"C:/PATH_TO/mcp-abap-adt/dist/index.js"
],
"disabled": true,
"autoApprove": []
}
// ... other server configurations ...
}
}- 测试连接:
- 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代码。 - 或者: - 在资源管理器中导航到mcp-abap-adt的根文件夹,按住Shift键并单击鼠标右键,然后选择“在此处打开Powershell”。(或者打开Powershell并使用导航到文件夹 cd C:/PATH_TO/mcp-abap-adt/ - 运行“npm install” - 运行“npm Run build” - 运行“npx@modelcontextprotocol/检查器节点dist/index.js” - 在浏览器输出的URL处打开浏览器。点击左侧的“连接”。 - 点击顶部的“工具”,然后点击“列出工具” - 点击GetProgram,在右侧输入“SAPMV45A”或任何其他报告名称作为程序名称 - 测试并查看输出结果
- SAP连接错误:
- 在中验证您的SAP凭据 .env 文件。 - 确保SAP系统正在运行,并且可以从您的网络访问。 - 确保您的SAP用户拥有访问ADT服务所需的授权。 - 检查交易中是否激活了所需的ADT服务 SICF. - 如果您使用的是自签名证书,或者您的SAP系统http配置有问题,请确保如上所述设置TLS_REJECT_UNAUTHORIZED!
6.可用工具
此服务器提供以下工具,可通过Cline(或任何其他MCP客户端)使用:
| 工具名称 | 描述 | 输入参数 | 示例用法(临床) | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GetProgram | 检索ABAP程序源代码。 | program_name (string):ABAP程序的名称。 | @tool GetProgram program_name=ZMY_PROGRAM | |||||||||||||||
GetClass | 检索ABAP类源代码。 | class_name (string):ABAP类的名称。 | @tool GetClass class_name=ZCL_MY_CLASS | |||||||||||||||
GetFunctionGroup | 检索ABAP函数组源代码。 | function_group (string):函数组的名称 | @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 (string):DDIC结构的名称。 | @tool GetStructure structure_name=ZMY_STRUCT | |||||||||||||||
GetTable | 检索ABAP表结构。 | table_name (string):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 (string):ABAP包的名称。 | @tool GetPackage package_name=ZMY_PACKAGE | |||||||||||||||
GetTypeInfo | 检索ABAP类型信息。 | type_name (string):ABAP类型的名称。 | @tool GetTypeInfo type_name=ZMY_TYPE | |||||||||||||||
GetInclude | 检索ABAP包括源代码 | include_name (string):ABAP的名称包括` | @工具GetIncludeinclude_name=ZMY_include | 搜索对象 | Search for ABAP objects using quick search. | 怎么翻译(string),max结果(number, optional, default 100) | @tool 搜索对象查询=ZMY\* maxResults=20 | GetInterface | Retrieve ABAP interface source code. | interface_name(string): Name of the ABAP interface. | @工具GetInterface interface_name=ZIF_MYINTERFACE | GetTransaction | Retrieve ABAP transaction details. | 交易_名称(string): Name of the ABAP transaction. | @工具GetTransaction transaction_name=ZMY_transaction\ |
