关于 Sapient Mcp
Sapient Mcp 是面向企业流程自动化的 MCP 服务,通过 RoboSAPiens 操作 SAP GUI,供 AI Agent 执行 SAP 界面任务。它支持本地标准输入输出及 SSE/HTTP 连接,并可按能力启用截图、脚本生成和窗口快照。
主要功能
- 01操作 SAP GUI 窗口与控件
- 02执行事务代码和填写表格
- 03读取字段、表格及状态栏
- 04可选截图与结构化窗口快照
- 05可选生成 Robot Framework 脚本
适用场景
- 01通过界面执行 SAP 事务
- 02填写并提交采购订单信息
- 03读取 SAP 窗口和状态栏结果
- 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 Desktop | stdio | 完全支持 |
| Claude Code | stdio | 完全支持 |
| Cursor | stdio or SSE | 完全支持 |
| VS Code (GitHub Copilot) | stdio or SSE | 需要 Copilot Agent 模式 |
| Windsurf | stdio or SSE | 完全支持 |
| 任何 MCP 客户端 | SSE/HTTP | 通过 --port 标志 |
前置条件
| 要求 | 详情 |
|---|---|
| 操作系统 | 仅限 Windows 10/11(SAP GUI 仅适用于 Windows) |
| Python | 3.10 或更高版本 |
| SAP GUI | 已安装 SAP GUI for Windows |
| SAP 脚本 | 必须在服务端启用(RZ11:sapgui/user_scripting=TRUE),并在 SAP Logon 客户端设置中启用 |
启用 SAP GUI 脚本(一次性设置)
- 打开 SAP Logon →
Customize Local Layout (Alt+F12)→Options - 前往
Accessibility & Scripting→Scripting - ✅ 启用脚本
- ❌ 禁用“脚本连接到正在运行的 SAP GUI 会话时通知”
- ❌ 禁用“脚本打开连接时通知”
- 请 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_PATH | C:\...\saplogon.exe | SAP Logon 可执行文件的路径 |
ROBOSAP_MCP_SAP_SERVER | null | 用于自动连接的服务描述 |
ROBOSAP_MCP_SAP_CLIENT | null | 用于自动登录的 SAP 客户端 |
ROBOSAP_MCP_SAP_USER | null | 用于自动登录的 SAP 用户 |
ROBOSAP_MCP_SAP_PASSWORD | null | SAP 密码(绝不会记录到日志中) |
ROBOSAP_MCP_PORT | null(stdio) | SSE 模式的端口 |
ROBOSAP_MCP_CAPS | "" | 以逗号分隔的功能:screenshot、codegen、advanced |
ROBOSAP_MCP_OUTPUT_DIR | ./sap_output | 屏幕截图和日志目录 |
ROBOSAP_MCP_SCREENSHOT_ON_ERROR | true | 工具失败时自动截屏 |
可用工具
核心(始终加载)
| 工具 | 描述 |
|---|---|
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:
- 调用
sap_execute_transaction("/nME21N") - 调用
sap_get_window_title()→ "Create Purchase Order" - 调用
sap_fill_text_field("Vendor", "100001") - 调用
sap_fill_text_field("Company Code", "1000") - 调用
sap_send_key("Enter")以确认抬头 - 调用
sap_activate_tab("Item Overview") - 调用
sap_fill_cell("1", "Material", "ABC-001") - 调用
sap_fill_cell("1", "Quantity", "50") - 调用
sap_push_button("Save") - 调用
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。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。