mcpField
S
Sapient Mcp

Sapient Mcp

本地服务
github.com/toni-ramchandani商业与营销1335 周前更新

关于 Sapient Mcp

Sapient Mcp 是面向企业流程自动化的 MCP 服务,通过 RoboSAPiens 操作 SAP GUI,供 AI Agent 执行 SAP 界面任务。它支持本地标准输入输出及 SSE/HTTP 连接,并可按能力启用截图、脚本生成和窗口快照。

主要功能

  1. 01操作 SAP GUI 窗口与控件
  2. 02执行事务代码和填写表格
  3. 03读取字段、表格及状态栏
  4. 04可选截图与结构化窗口快照
  5. 05可选生成 Robot Framework 脚本

适用场景

  1. 01通过界面执行 SAP 事务
  2. 02填写并提交采购订单信息
  3. 03读取 SAP 窗口和状态栏结果
  4. 04在远程或 CI 环境连接 SAP GUI

MCP 相关

该服务向 MCP 客户端提供 SAP GUI 操作和读取工具,支持 stdio 或 SSE/HTTP 连接;可配置启用截图、脚本生成和高级快照能力。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

SAPient MCP

面向 AI Agent 的智能 SAP GUI 自动化

一个可用于生产环境的 Model Context Protocol(MCP)服务,通过 RoboSAPiens 库,让大模型(Claude、Copilot、Cursor 等)能够自动操作 SAP GUI。

兼容的 MCP 客户端
客户端模式备注
Claude Desktopstdio完全支持
Claude Codestdio完全支持
Cursorstdio or SSE完全支持
VS Code (GitHub Copilot)stdio or SSE需要 Copilot Agent 模式
Windsurfstdio or SSE完全支持
任何 MCP 客户端SSE/HTTP通过 --port 标志

前置条件

要求详情
操作系统仅限 Windows 10/11(SAP GUI 仅适用于 Windows)
Python3.10 或更高版本
SAP GUI已安装 SAP GUI for Windows
SAP 脚本必须在服务端启用(RZ11:sapgui/user_scripting=TRUE),并在 SAP Logon 客户端设置中启用
启用 SAP GUI 脚本(一次性设置)
  1. 打开 SAP Logon → Customize Local Layout (Alt+F12) → Options
  2. 前往 Accessibility & Scripting → Scripting
  3. ✅ 启用脚本
  4. ❌ 禁用“脚本连接到正在运行的 SAP GUI 会话时通知”
  5. ❌ 禁用“脚本打开连接时通知”
  6. 请 BASIS 管理员运行事务 RZ11 → 将 sapgui/user_scripting 设置为 TRUE

安装

# Clone the repo
git clone https://github.com/yourorg/sapient-mcp.git
cd sapient-mcp

# Install (using pip or uv)
pip install -e .

# Or with uv (recommended)
uv pip install -e .

快速开始

选项 A — stdio 模式(本地客户端)

SAPient MCP 适用于任何兼容 MCP 的客户端。请从下方选择你的客户端。


Claude Desktop

编辑 %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "sapient": {
      "command": "python",
      "args": ["-m", "sapient_mcp"],
      "env": {
        "SAPIENT_MCP_SAPLOGON_PATH": "C:\\Program Files (x86)\\SAP\\FrontEnd\\SAPgui\\saplogon.exe",
        "SAPIENT_MCP_CAPS": "screenshot,codegen,advanced",
        "SAPIENT_MCP_OUTPUT_DIR": "C:\\sapient_output"
      }
    }
  }
}

Claude Code(CLI)
claude mcp add sapient python -m sapient_mcp \
  -- --caps screenshot,codegen,advanced

或者编辑项目根目录中的 ~/.claude/mcp.json / .claude/mcp.json:

{
  "mcpServers": {
    "sapient": {
      "command": "python",
      "args": ["-m", "sapient_mcp", "--caps", "screenshot,codegen,advanced"],
      "env": {
        "SAPIENT_MCP_SAPLOGON_PATH": "C:\\Program Files (x86)\\SAP\\FrontEnd\\SAPgui\\saplogon.exe",
        "SAPIENT_MCP_OUTPUT_DIR": "C:\\sapient_output"
      }
    }
  }
}

Cursor

前往 Cursor Settings → MCP → Add new MCP Server → 输入 command,然后填写:

python -m sapient_mcp --caps screenshot,codegen,advanced

或者编辑 ~/.cursor/mcp.json:

{
  "mcpServers": {
    "sapient": {
      "command": "python",
      "args": ["-m", "sapient_mcp", "--caps", "screenshot,codegen,advanced"],
      "env": {
        "SAPIENT_MCP_SAPLOGON_PATH": "C:\\Program Files (x86)\\SAP\\FrontEnd\\SAPgui\\saplogon.exe",
        "SAPIENT_MCP_OUTPUT_DIR": "C:\\sapient_output"
      }
    }
  }
}

VS Code(GitHub Copilot)

通过 VS Code CLI 安装 MCP 服务:

code --add-mcp '{"name":"sapient","command":"python","args":["-m","sapient_mcp","--caps","screenshot,codegen,advanced"]}'

或者将以下内容添加到工作区中的 .vscode/mcp.json:

{
  "servers": {
    "sapient": {
      "type": "stdio",
      "command": "python",
      "args": ["-m", "sapient_mcp", "--caps", "screenshot,codegen,advanced"],
      "env": {
        "SAPIENT_MCP_SAPLOGON_PATH": "C:\\Program Files (x86)\\SAP\\FrontEnd\\SAPgui\\saplogon.exe",
        "SAPIENT_MCP_OUTPUT_DIR": "C:\\sapient_output"
      }
    }
  }
}

Windsurf

编辑 ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "sapient": {
      "command": "python",
      "args": ["-m", "sapient_mcp", "--caps", "screenshot,codegen,advanced"],
      "env": {
        "SAPIENT_MCP_SAPLOGON_PATH": "C:\\Program Files (x86)\\SAP\\FrontEnd\\SAPgui\\saplogon.exe",
        "SAPIENT_MCP_OUTPUT_DIR": "C:\\sapient_output"
      }
    }
  }
}

**注意:**在 stdio 模式下,SAPient MCP 绝不会写入 stdout 或 stderr——所有日志仅写入日志文件。这是确保所有客户端之间 JSON-RPC 通信正常所必需的。

选项 B — SSE/HTTP 模式(远程 / CI / 多用户)

适用于 SAP 机器与运行 AI 客户端的机器分开,或多位开发者需要共享一个 SAPient 实例的情况。

在你的 Windows SAP 机器上运行服务:

python -m sapient_mcp --port 8765 --caps screenshot,codegen,advanced

然后将任何 MCP 客户端指向 HTTP 端点:

{
  "mcpServers": {
    "sapient": {
      "url": "http://sap-windows-machine:8765/mcp"
    }
  }
}

在 Claude Desktop、Claude Code、Cursor、VS Code、Windsurf 及任何其他兼容 MCP 的客户端中,使用方式都相同。

选项 C — 配置文件
python -m sapient_mcp --config C:\sap_config.json

环境变量

所有设置都可以通过带有 ROBOSAP_MCP_ 前缀的环境变量提供:

变量默认值描述
ROBOSAP_MCP_SAPLOGON_PATHC:\...\saplogon.exeSAP Logon 可执行文件的路径
ROBOSAP_MCP_SAP_SERVERnull用于自动连接的服务描述
ROBOSAP_MCP_SAP_CLIENTnull用于自动登录的 SAP 客户端
ROBOSAP_MCP_SAP_USERnull用于自动登录的 SAP 用户
ROBOSAP_MCP_SAP_PASSWORDnullSAP 密码(绝不会记录到日志中)
ROBOSAP_MCP_PORTnull(stdio)SSE 模式的端口
ROBOSAP_MCP_CAPS""以逗号分隔的功能:screenshot、codegen、advanced
ROBOSAP_MCP_OUTPUT_DIR./sap_output屏幕截图和日志目录
ROBOSAP_MCP_SCREENSHOT_ON_ERRORtrue工具失败时自动截屏

可用工具

核心(始终加载)
工具描述
sap_open启动 SAP Logon
sap_connect_to_server连接到 SAP 服务器
sap_connect_to_running附加到正在运行的 SAP 会话
sap_get_session_info只读:当前状态和标题
sap_close关闭 SAP
sap_execute_transaction运行事务代码
sap_activate_tab按标签点击选项卡
sap_get_window_title只读:当前窗口标题
sap_select_menu_item浏览菜单栏
sap_send_key发送键盘按键(Enter、F3 等)
sap_fill_text_field按标签填写字段
sap_clear_text_field清空字段
sap_set_checkbox勾选复选框
sap_unset_checkbox取消勾选复选框
sap_select_radio_button选择单选按钮
sap_push_button按标签点击按钮
sap_button_exists只读:检查按钮是否存在
sap_read_text_field只读:读取字段值
sap_read_text只读:读取任意文本元素
sap_read_status_bar只读:读取 SAP 状态栏消息
sap_count_table_rows只读:统计表格行数
sap_select_table_row选择表格行
sap_read_table_cell只读:读取单元格值
sap_fill_cell填写表格单元格
sap_double_click_cell双击表格单元格
sap_scroll_table向上或向下滚动表格
--caps screenshot
工具描述
sap_take_screenshot截取 SAP 窗口
--caps codegen
工具描述
sap_get_generated_script获取累积的 Robot Framework 脚本
sap_clear_script清空脚本缓冲区
--caps advanced
工具描述
sap_get_snapshot当前窗口的结构化 JSON 快照

LLM 对话示例

你: 为供应商 100001、公司代码 1000 创建采购订单,订购 50 件物料 ABC-001

SAPient 将引导 LLM:

  1. 调用 sap_execute_transaction("/nME21N")
  2. 调用 sap_get_window_title() → "Create Purchase Order"
  3. 调用 sap_fill_text_field("Vendor", "100001")
  4. 调用 sap_fill_text_field("Company Code", "1000")
  5. 调用 sap_send_key("Enter") 以确认抬头
  6. 调用 sap_activate_tab("Item Overview")
  7. 调用 sap_fill_cell("1", "Material", "ABC-001")
  8. 调用 sap_fill_cell("1", "Quantity", "50")
  9. 调用 sap_push_button("Save")
  10. 调用 sap_read_status_bar() → "Purchase order 4500001234 created"

项目结构

sapient-mcp/
├── pyproject.toml
├── README.md
├── sap_config.json              # Example config file
├── claude_desktop_config.json   # Example Claude Desktop config
└── src/
    └── sapient_mcp/
        ├── __init__.py
        ├── __main__.py          # Entry point + CLI arg parsing
        ├── config.py            # Pydantic settings (env/file/CLI)
        ├── session.py           # SAPSessionManager singleton
        └── server.py            # FastMCP server + all 27 tool definitions

日志

日志写入 {output_dir}/sapient_mcp.log。

在 stdio 模式下,日志不会写入 stdout/stderr(否则会破坏 JSON-RPC)。 在 SSE 模式下,日志也会显示在 stderr。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。