返回市场
麦克佩-萨普-图形界面

麦克佩-萨普-图形界面

作者:mario-andreschak74 星标更新:2025-02-26

项目介绍

MCP SAP GUI 服务器

这是一个用于 SAP GUI 自动化的 Model Context Protocol (MCP) 服务器。该服务器提供了工具来自动化与 SAP GUI 的交互,从而实现对 SAP 事务的程序化控制。

image

要求

  • Python 3.8 或更高版本
  • 已安装并配置好的 SAP GUI
  • 有效的 SAP 凭证(系统、客户端、用户、密码)
  • Node.js(用于 npx)

安装

  1. 克隆 GitHub 文件夹并通过设置脚本运行自动安装:
setup.bat

这将引导您完成构建过程,并在选择的情况下将其直接集成到 Cline 或 Roo 中。

  1. 或者使用构建脚本进行手动安装:
build.bat
  1. 配置 SAP 凭证:
  • .env.example 复制为 .env
  • 使用您的 SAP 凭证更新值
  1. 使用 mcp 检查器测试服务器:
run.bat debug
  1. 使用集成脚本自动配置 MCP 设置:
integrate.bat cline  # 配置为 Cline
integrate.bat roo    # 配置为 Roo

脚本将:

  • 自动确定正确的设置文件路径
  • 在进行任何更改之前创建备份
  • 安全地更新 MCP 配置
  • 验证更改以防止损坏

手动配置(如果需要):

    "mcp-sap-gui": {
      "command": "python",
      "args": [
        "-m",
        "sap_gui_server.server"
      ],
      "cwd": "PATH_TO_YOUR_FOLDER/mcp-sap-gui",
      "disabled": false,
      "autoApprove": []
    }
  1. 使用此提示向您的 AI 模型解释工具:
**重要安全通知:**
SAP 是一个高度敏感的系统,错误的交互可能会产生严重后果。每个操作都必须以最高的精度和谨慎执行。如果您对任何操作有疑问,请立即停止并请求用户帮助。

**可用工具:**
`mcp-sap-gui` 服务器提供以下 SAP GUI 交互工具:
* `launch_transaction`: 启动新的事务
* `sap_click`: 在特定坐标点击
* `sap_move_mouse`: 移动鼠标到坐标位置
* `sap_type`: 在字段中输入文本
* `end_transaction`: 关闭当前事务

**技术限制和要求:**
1. 您将在每次操作后仅收到 SAP GUI 窗口的截图
2. 没有直接访问屏幕元素元数据或技术表示
3. 您必须使用图像识别来:
   * 识别 UI 元素(字段、按钮等)
   * 确定精确的 x/y 坐标进行交互
   * 验证元素大小和位置
4. 所有坐标必须精确 - 近似点击是不可接受的

**逐步过程:**
1. 启动 SAP GUI 会话:
   * 使用所需的事务代码调用 `launch_transaction`
   * 认真分析返回的截图
2. 与屏幕交互:
   * 使用图像识别来识别所需元素
   * 计算精确的交互坐标
   * 执行适当的动作(`sap_click`、`sap_type` 等)
   * 在下一个截图中验证结果
3. 捕获截图:
   * 在过程的关键点保存截图
4. 结束会话:
   * 完成时调用 `end_transaction`

**最佳实践:**
1. 在任何操作前始终验证屏幕状态
2. 在点击前双检查坐标
3. 使用清晰的注释记录每一步
4. 如果不确定任何元素的位置,请请求用户验证
5. 维持一致的截图命名约定

可用工具

MCP SAP GUI 服务器提供了以下工具用于 SAP 自动化:

事务管理

  • launch_transaction: 启动特定的 SAP 事务代码
  • end_transaction: 结束当前的 SAP 事务

接口交互

  • sap_click: 在 SAP GUI 窗口的特定坐标点击
  • sap_move_mouse: 将鼠标光标移动到特定坐标
  • sap_type: 在当前光标位置输入文本
  • sap_scroll: 滚动 SAP GUI 屏幕(向上/向下)

屏幕捕获

  • save_last_screenshot: 保存 SAP GUI 窗口的最后一个捕获的截图。返回保存图像的绝对文件路径。

截图返回格式

所有与 SAP GUI 窗口交互的工具(launch_transaction, sap_click, sap_move_mouse, sap_type, sap_scroll)支持由 return_screenshot 参数控制的不同截图返回格式:

  1. none(默认):仅返回成功/错误消息
{
    "type": "text",
    "text": "状态:成功"
}
  1. as_file: 将截图保存到指定的目标文件夹并返回路径
{
    "type": "text",
    "text": "截图保存为 C:/path/to/file/screenshot.png"
}

注意:当使用 as_file 时,您必须使用 as_file_target_folder 参数指定目标文件夹。如果不存在,文件夹将被创建。

  1. as_base64: 返回原始 base64 字符串
{
    "type": "text",
    "text": "base64_encoded_string_here"
}
  1. as_imagecontent: 返回 MCP ImageContent 对象
{
    "type": "image",
    "data": "base64_encoded_string_here",
    "mimeType": "image/png"
}
  1. as_imageurl: 返回带有数据 URL 的嵌入资源
{
    "type": "resource",
    "resource": {
        "uri": "application:image",
        "mimeType": "image/png",
        "text": "data:image/png;base64,..."
    }
}

示例用法:

# 默认 - 不截图
result = await client.call_tool("launch_transaction", {
    "transaction": "VA01"
})

# 保存到特定文件夹
result = await client.call_tool("launch_transaction", {
    "transaction": "VA01",
    "return_screenshot": "as_file",
    "as_file_target_folder": "C:/screenshots"
})

# 获取 base64 字符串
result = await client.call_tool("launch_transaction", {
    "transaction": "VA01",
    "return_screenshot": "as_base64"
})

工具参数总结:

工具参数类型默认值描述
launch_transactiontransactionstring要启动的 SAP 事务代码(例如,VA01,ME21N,MM03)
return_screenshotstringnone截图返回格式 (none, as_file, as_base64, as_imagecontent, as_imageurl)
as_file_target_folderstring当使用 'as_file' 返回格式时保存截图的目标文件夹路径
sap_clickxinteger应发生的点击的水平像素坐标(0-1920)
yinteger应发生的点击的垂直像素坐标(0-1080)
return_screenshotstringnone截图返回格式 (none, as_file, as_base64, as_imagecontent, as_imageurl)
as_file_target_folderstring当使用 'as_file' 返回格式时保存截图的目标文件夹路径
sap_move_mousexinteger移动光标到的水平像素坐标(0-1920)
yinteger移动光标到的垂直像素坐标(0-1080)
return_screenshotstringnone截图返回格式 (none, as_file, as_base64, as_imagecontent, as_imageurl)
as_file_target_folderstring当使用 'as_file' 返回格式时保存截图的目标文件夹路径
sap_typetextstring在 SAP GUI 窗口的当前光标位置输入的文本
return_screenshotstringnone截图返回格式 (none, as_file, as_base64, as_imagecontent, as_imageurl)
as_file_target_folderstring当使用 'as_file' 返回格式时保存截图的目标文件夹路径
sap_scrolldirectionstring屏幕滚动方向('up' 向下移动内容,'down' 向上移动)
return_screenshotstringnone截图返回格式 (none, as_file, as_base64, as_imagecontent, as_imageurl)
as_file_target_folderstring当使用 'as_file' 返回格式时保存截图的目标文件夹路径
end_transaction
save_last_screenshotfilenamestring截图将被保存的路径

开发

运行测试

  1. 使用 mcp 检查器测试服务器(构建 + 调试):
./run.bat full
  1. 或使用测试套件: 测试套件包括与 SAP GUI 交互的实时测试。确保在运行测试之前已安装并配置好 SAP GUI。

运行测试:

run.bat test server

测试套件包括:

  • SapGuiServer 测试(test_server.py)
    • 工具注册
    • 请求处理
    • 响应格式化
    • 错误处理

项目结构

mcp-sap-gui/
├── src/
│   └── sap_gui_server/
│       ├── __init__.py
│       ├── sap_controller.py  # SAP GUI 交互逻辑
│       └── server.py         # MCP 服务器实现
├── tests/
│   ├── __init__.py
│   ├── test_sap_controller.py
│   └── test_server.py
├── build.bat          # 构建和测试脚本
├── integrate.bat      # 集成脚本用于 Cline/Roo
├── integrate.py       # Python 脚本用于安全的 MCP 设置更新
├── requirements.txt   # 生产依赖项
└── requirements-dev.txt  # 开发依赖项

许可证

[MIT 许可证]