Skip to main content
Glama
mario-andreschak

MCP SAP GUI Server

MCP SAP GUI 服务器

用于 SAP GUI 自动化的模型上下文协议 (MCP) 服务器。该服务器提供用于自动化与 SAP GUI 交互的工具,从而支持对 SAP 事务进行编程控制。

图像

要求

  • Python 3.8 或更高版本

  • SAP GUI 安装和配置

  • 有效的 SAP 凭证(系统、客户端、用户、密码)

  • Node.js(用于 npx)

Related MCP server: MCP SAP GUI Server

安装

  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  # Configure for Cline
integrate.bat roo    # Configure for 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 模型解释该工具:

**Important Safety Notice:**
SAP is a highly sensitive system where incorrect interactions can have serious consequences. Every action must be performed with utmost precision and care. When in doubt about any action, STOP immediately and request user assistance.

**Available Tools:**
The `mcp-sap-gui` server provides tools for SAP GUI interaction:
* `launch_transaction`: Start a new transaction
* `sap_click`: Click at specific coordinates
* `sap_move_mouse`: Move mouse to coordinates
* `sap_type`: Enter text into fields
* `end_transaction`: Close the current transaction

**Technical Limitations and Requirements:**
1. You will receive only screenshot images of the SAP GUI window after each action
2. No direct access to screen element metadata or technical representation
3. You must use image recognition to:
   * Identify UI elements (fields, buttons, etc.)
   * Determine precise x/y coordinates for interactions
   * Verify element sizes and positions
4. All coordinates must be exact - approximate clicking is not acceptable

**Step-by-Step Process:**
1. Start SAP GUI Session:
   * Call `launch_transaction` with desired transaction code
   * Analyze the returned screenshot carefully
2. Interact with Screen:
   * Use image recognition to identify needed elements
   * Calculate exact coordinates for interaction
   * Execute appropriate action (`sap_click`, `sap_type`, etc.)
   * Verify result in next screenshot
3. Capture Screenshots:
   * Save screenshots at key points in the process
4. End Session:
   * Call `end_transaction` when finished

**Best Practices:**
1. Always verify screen state before any action
2. Double-check coordinates before clicking
3. Document each step with clear annotations
4. If uncertain about any element position, request user verification
5. Maintain consistent screenshot naming convention

可用工具

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": "Status: success"
}
  1. as_file :将截图保存到指定的目标文件夹并返回路径

{
    "type": "text",
    "text": "Screenshot saved as 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,..."
    }
}

使用示例:

# Default - no screenshot
result = await client.call_tool("launch_transaction", {
    "transaction": "VA01"
})

# Save to specific folder
result = await client.call_tool("launch_transaction", {
    "transaction": "VA01",
    "return_screenshot": "as_file",
    "as_file_target_folder": "C:/screenshots"
})

# Get base64 string
result = await client.call_tool("launch_transaction", {
    "transaction": "VA01",
    "return_screenshot": "as_base64"
})

工具参数摘要:

工具

范围

类型

默认

描述

launch_transaction

transaction

string

要启动的 SAP 事务代码(例如 VA01、ME21N、MM03)

return_screenshot

string

none

截图返回格式( none 、 as_file 、 as_base64 、 as_imagecontent 、 as_imageurl )

as_file_target_folder

string

使用“as_file”返回格式时保存屏幕截图的目标文件夹路径

sap_click

x

integer

点击发生的水平像素坐标(0-1920)

y

integer

点击发生的垂直像素坐标(0-1080)

return_screenshot

string

none

截图返回格式( none 、 as_file 、 as_base64 、 as_imagecontent 、 as_imageurl )

as_file_target_folder

string

使用“as_file”返回格式时保存屏幕截图的目标文件夹路径

sap_move_mouse

x

integer

光标移动到的水平像素坐标(0-1920)

y

integer

光标移动到的垂直像素坐标(0-1080)

return_screenshot

string

none

截图返回格式( none 、 as_file 、 as_base64 、 as_imagecontent 、 as_imageurl )

as_file_target_folder

string

使用“as_file”返回格式时保存屏幕截图的目标文件夹路径

sap_type

text

string

在 SAP GUI 窗口的当前光标位置输入的文本

return_screenshot

string

none

截图返回格式( none 、 as_file 、 as_base64 、 as_imagecontent 、 as_imageurl )

as_file_target_folder

string

使用“as_file”返回格式时保存屏幕截图的目标文件夹路径

sap_scroll

direction

string

滚动屏幕的方向(“向上”使内容向下移动,“向下”使内容向上移动)

return_screenshot

string

none

截图返回格式( none 、 as_file 、 as_base64 、 as_imagecontent 、 as_imageurl )

as_file_target_folder

string

使用“as_file”返回格式时保存屏幕截图的目标文件夹路径

end_transaction

save_last_screenshot

filename

string

屏幕截图保存的路径

发展

运行测试

  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 interaction logic
│       └── server.py         # MCP server implementation
├── tests/
│   ├── __init__.py
│   ├── test_sap_controller.py
│   └── test_server.py
├── build.bat          # Build and test script
├── integrate.bat      # Integration script for Cline/Roo
├── integrate.py       # Python script for safe MCP settings updates
├── requirements.txt   # Production dependencies
└── requirements-dev.txt  # Development dependencies

执照

[MIT许可证]

Available Tools

12 tools
end_transactionA

End only the configured session's current transaction. Unsaved work in that transaction can be lost.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full behavioral burden, and it does disclose the key risk that unsaved work in that transaction can be lost — valuable and non-obvious. However, it does not say what happens if no transaction is active, whether the call is idempotent, or whether ending commits or discards pending changes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no waste. The scope constraint leads and the loss-of-work warning is placed where it will actually be read before invoking, so every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool this is nearly sufficient: scope plus the destructive consequence are both covered. The remaining gap is the no-active-transaction / error behavior, which is minor given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema has nothing that needs compensating for; the baseline for a no-argument tool applies. The description's session-scoping language ('the configured session's') usefully clarifies that the target is implicit rather than passed in.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('End ... current transaction') and narrows scope to 'the configured session's current transaction,' which meaningfully differentiates it from the other transaction sibling. It stops short of naming launch_transaction as its counterpart, so the pairing must be inferred from the sibling list rather than the description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the agent can infer this is how a transaction session is closed, and the 'configured session' constraint hints at a prerequisite. There is no explicit guidance on when to end versus leave a transaction open, and launch_transaction is never referenced as the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

launch_transactionC

Start a transaction in the configured session; preserves unrelated SAP sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
transactionYes
return_screenshotNonone
as_file_target_folderNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does add one useful trait ("preserves unrelated SAP sessions"), but says nothing about what happens to an already-open transaction in the same session, permission/auth requirements, or execution side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded clause with no filler or repetition; it is well-structured. Its brevity is closer to under-specification than to wasteful padding, but as sizing/structure goes it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% parameter documentation, the description is too thin for a 3-parameter action tool. The one session-preservation note is a good start but leaves the agent missing parameter format, side effects, and return behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 3 parameters. The description hints at the transaction argument but never states the expected format (e.g., SAP transaction code), and completely ignores return_screenshot and as_file_target_folder, so it does not compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Start a transaction") plus a scoping clause ("in the configured session"), which cleanly pairs with the sibling end_transaction. It does not explicitly name alternatives, but the action is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use/when-not guidance and no prerequisites, such as whether a session must already be configured or whether this can be called mid-transaction. The only routing signal is implicit from the sibling name end_transaction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sap_clickC

Click physical screenshot pixels relative to the selected SAP window.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
return_screenshotNonone
as_file_target_folderNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, yet it only discloses the coordinate origin. It says nothing about focus/window requirements, mouse-down/up timing, whether the click has irreversible side effects in the SAP UI, or what the return_screenshot options do.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler — the scoping detail comes first. It is arguably under-specified rather than overly long, but on pure conciseness it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter, zero-annotation, no-output-schema tool, one sentence is insufficient: the screenshot-return mechanism and folder target are unexplained, and no side-effect or failure behavior is described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The phrase 'physical screenshot pixels relative to the selected SAP window' effectively defines x and y, which is real added value over a 0%-coverage schema. However, return_screenshot (5 enum options) and as_file_target_folder are entirely undocumented, including the evident dependency of the folder parameter on return_screenshot='as_file'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

A specific verb (click) on a specific resource (screenshot pixels) with the coordinate frame named ('relative to the selected SAP window'), which meaningfully distinguishes it from sap_move_mouse and coordinate-free input tools like sap_type/sap_press. It does not, however, name or contrast with any sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no routing to alternatives such as sap_press, sap_set_field, or sap_send_vkey for element-level interaction. The agent must infer that this is the fallback for pixel-precise clicking.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sap_get_screenA
Read-only

Read up to 300 SAP COM controls and text (password fields redacted), optionally with screenshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
return_screenshotNonone
as_file_target_folderNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is covered. The description adds genuinely non-obvious behavior: password fields are redacted and control enumeration is capped at 300. It doesn't say what happens when a screen exceeds 300 controls, which keeps it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight sentence that front-loads the verb, resource, and scope cap, then appends the optional screenshot clause. Every element earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with no output schema, the agent is told what is read and that passwords are masked, but not the shape of the result, how controls are represented, or how the screenshot modes interact with as_file_target_folder. Adequate, but real gaps remain for a 2-param call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden for two parameters. It alludes to an optional screenshot but never explains the five enum modes (none/as_file/as_base64/as_imagecontent/as_imageurl) or the role of as_file_target_folder, leaving the main parameter largely opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Read) and resource (SAP COM controls and text) with a concrete scope cap (up to 300) and a redaction behavior baked into the purpose itself. Against siblings like sap_click, sap_type, and sap_press, which mutate the screen, this is unambiguously the read-side tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance at all: it doesn't say to call this before inspecting state, before/after a click, or in relation to save_last_screenshot or launch_transaction. The word 'optionally' is the only hint, and it applies to a parameter rather than to tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sap_move_mouseC

Move within the selected SAP window using physical screenshot pixels.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
return_screenshotNonone
as_file_target_folderNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether moving the mouse has side effects, whether the operation is instant or animated, whether permissions are needed, or what happens to the cursor position on failure. The only behavioral clue is the coordinate system ('physical screenshot pixels').

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single tight sentence that front-loads the action and coordinate system. It contains no filler and is appropriately sized for a brief summary, though it could be slightly more structured with prerequisite or return details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and four parameters including an enum and a conditional folder argument, the description is substantially incomplete. It covers only the coordinate system for x and y, leaving return_screenshot behavior, as_file_target_folder conditions, and invocation prerequisites entirely unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for all parameters. It clarifies that x and y are in 'physical screenshot pixels', which is useful, but it says nothing about the return_screenshot enum options, its default of 'none', or when as_file_target_folder applies. Two of four parameters receive no semantic explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Move') and target ('within the selected SAP window') with a clear coordinate system ('physical screenshot pixels'). It distinguishes itself from sibling tools like sap_click and sap_scroll by describing pointer movement rather than clicking or scrolling, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as sap_click or sap_get_screen. It also omits prerequisites like whether the SAP window must already be selected or focused. Usage is only implied by the tool name and the brief description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sap_pressC

Press a SAP GUI button through its COM interface.

ParametersJSON Schema
NameRequiredDescriptionDefault
element_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: pressing a GUI button can trigger screen changes, dialogs, or committed transactions, but none of that is mentioned. There is no note on permissions, error behavior, or whether a screenshot/refresh is needed afterward.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-formed sentence with no filler and the action front-loaded. It is efficient, though borderline under-specified rather than genuinely concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter automation tool with no annotations and no output schema, the description omits the two things an agent most needs: what element_id refers to and how it differs from sap_click. The overlap with other interaction siblings is left unresolved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required 'element_id' parameter (minLength 6, maxLength 1024). The description does not explain what an element_id is, where to obtain it (e.g., from sap_get_screen), or what format it takes, so the parameter is effectively undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Press') and resource ('SAP GUI button') plus the mechanism ('through its COM interface'), which is enough to identify the action. However it does not distinguish itself from the sibling tool sap_click, which appears to serve an overlapping purpose, leaving the agent to guess which to use.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to prefer this over sap_click, sap_send_vkey, or sap_run_guixt_script. There are no prerequisites, no mention of requiring an active transaction, and no stated conditions under which pressing is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sap_run_guixt_scriptA

Submit a preinstalled GuiXT InputScript to this exact SAP window; requires configured GuiXT opt-in. Completion is asynchronous.

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries full burden and does disclose two important traits: the GuiXT opt-in/auth precondition and that 'Completion is asynchronous'. What it omits is whether the script can mutate or destroy SAP state and what happens on a failed script run, so the behavioral picture is good but not complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense sentence, semicolon-separated into three clauses, front-loaded with the action and resource. Every clause (what, precondition, async nature) earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, annotation-free tool with no output schema, the description covers action, target, precondition and async behavior, which is nearly everything an agent needs. The remaining gap is that it doesn't hint how to observe completion (e.g. via sap_get_screen) after the asynchronous submit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single required 'script' parameter, so the description must compensate. It adds meaningful semantics by calling it a 'preinstalled' script (i.e. a name of an existing script, not a path or inline content), but it never clarifies the naming/format rules implied by the schema pattern (alphanumerics, underscore/hyphen, .txt suffix).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Submit) and resource (a preinstalled GuiXT InputScript) scoped to 'this exact SAP window', which is clearly distinct from the low-level siblings like sap_click, sap_type and sap_press. It stops short of naming an alternative or contrasting explicitly with them, so it is clear but not maximally differentiating.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The prerequisite 'requires configured GuiXT opt-in' gives real context for when this tool will work, and 'preinstalled' implies the script must already exist. However, there is no guidance on when to prefer a GuiXT script over the sibling primitives (sap_type/sap_click/sap_send_vkey), leaving the choice to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sap_scrollC

Scroll the selected SAP window.

ParametersJSON Schema
NameRequiredDescriptionDefault
directionYes
return_screenshotNonone
as_file_target_folderNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, yet it only restates the action. It does not disclose scroll granularity, whether it blocks, what 'selected window' means, or how the screenshot options affect behavior. This is thin for a tool with a required enum direction and four screenshot modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no padding. It is efficiently sized, though the brevity reflects under-specification rather than true economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and three parameters (two enums, one a file-path dependent on a screenshot mode) at 0% schema coverage, the description is far too thin. An agent cannot determine scroll amount, timing, or how to correctly use the screenshot outputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description is responsible for explaining parameters and adds nothing. The complex return_screenshot modes (as_file/as_base64/as_imagecontent/as_imageurl) and their interaction with as_file_target_folder are left entirely undocumented, and the relationship between direction and the visible viewport is unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Scroll') and resource ('the selected SAP window'), clearly distinguishing it from action siblings like sap_click, sap_type and sap_press. It does not, however, explain how scrolling relates to the other navigation tools, so it earns a solid 4 rather than a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to scroll versus using another tool such as sap_press or sap_send_vkey, nor any prerequisites (e.g. whether a window must be selected first). Usage is only weakly implied by the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sap_send_vkeyC

Send a documented SAP virtual key (0 is Enter) to the configured session.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It never states what happens on failure (e.g. no session configured), what the response contains, or whether the call mutates UI state, which it clearly does. The only behavioral hint is the parenthetical that 0 maps to Enter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight sentence with no wasted words, and the key-mapping detail is placed inline where it is most useful. It is short to the point of under-specification rather than bloated, so it earns most of its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation-style input tool with no annotations and no output schema, the description omits critical context: how the target session is established, what a successful or failed send looks like, and how to find the key-code table it references. An agent cannot reliably call this without that information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single integer parameter (0-134) is undocumented in the schema, so the description must compensate. It partially does by saying it is a documented SAP virtual key and giving one concrete mapping (0 = Enter), but 133 other codes and the notion of 'documented' are left unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: sending a virtual key code to the configured SAP session. That is enough to understand what it does, but it does not differentiate itself from the sibling sap_press, which plausibly also sends keystrokes, leaving the agent to guess which key-sending tool applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus sap_press, sap_type, or sap_click, and no stated prerequisite such as an active session being required. The only implicit context is 'configured session', which the agent must infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sap_set_fieldC

Set literal text through SAP GUI ActiveX/COM scripting, scoped to wnd[N] in this session.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
element_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the execution mechanism and window scoping, but says nothing about whether setting text fires SAP events/validations, what happens on an invalid element_id, permissions, or error/reversibility behavior for this mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, and the most important fact (setting text) leads. It is compact, though 'through SAP GUI ActiveX/COM scripting' is implementation detail that consumes space without helping selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% parameter coverage, the description should compensate substantially. Instead it provides one sentence, leaving the agent without guidance on the element_id format, failure modes, or side effects — insufficient for a 2-parameter mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so neither element_id nor text is documented in structured data. The description's phrase 'literal text' loosely maps to the text parameter but gives no format, encoding, or length guidance, and element_id — the most opaque parameter — is not explained at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Set') and resource ('literal text') plus the mechanism (SAP GUI ActiveX/COM scripting) and scope (wnd[N] in this session). It clearly differentiates itself from sibling sap_type by emphasizing 'literal' value-setting, though it does not explicitly name that sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'literal text' hints at direct value assignment versus the keystroke emulation of sap_type, and 'scoped to wnd[N]' hints at the targeting context. There is no explicit when-to-use, when-not-to-use, or named alternative among the many siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sap_typeA

Type WScript SendKeys text/special keys in the selected SAP window. Use sap_set_field for literal text.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
return_screenshotNonone
as_file_target_folderNo

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It implies keys go to the currently selected window (a real risk if focus is wrong) but says nothing about whether existing field content is overwritten, permission/focus requirements, or how the operation reports success or failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with zero filler; the primary purpose leads and the disambiguation follows immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no annotations, yet the description omits focus prerequisites, overwrite behavior, and any explanation of the two screenshot parameters. For a 3-parameter interaction tool this leaves significant gaps an agent must guess at.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for 3 parameters, and the description only hints at the 'text' parameter semantics ('text/special keys'). The screenshot-related parameters (return_screenshot, as_file_target_folder) are undocumented in both schema and description, so no compensation occurs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Type) and mechanism (WScript SendKeys) targeting a defined resource (the selected SAP window), and explicitly contrasts itself with the sap_set_field sibling. An agent can distinguish this from sap_set_field and sap_press without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one explicit routing rule: use sap_set_field for literal text, implying this tool is for special/non-literal keys. It does not state prerequisites (window must be focused/selected) or when NOT to use it, but the alternative is named concretely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_last_screenshotB

Save the last requested screenshot under SAP_OUTPUT_ROOT without overwriting a file.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose two useful traits: output is written under SAP_OUTPUT_ROOT and existing files are not overwritten. However, it is ambiguous about the collision case — does it error, append a suffix, or refuse? — and says nothing about permissions or return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with the destination and the no-overwrite rule front-loaded; no filler. It is tight, though the brevity contributes to the unresolved ambiguities noted elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with no output schema and no annotations, the description covers the core action and one behavioral constraint but leaves key operational questions unanswered: the resulting file path/return value, collision behavior, and when the tool is appropriate. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description adds no meaning for the sole 'filename' parameter — no extension handling, path semantics, or how the name interacts with the no-overwrite rule (e.g., whether SAP_OUTPUT_ROOT is prepended). The parameter is only self-explanatory by convention.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Save) and resource (the last requested screenshot) plus the destination root, SAP_OUTPUT_ROOT, and the no-overwrite constraint. It is clearly distinguishable from siblings like sap_get_screen or sap_press, though it never names an alternative to sharpen the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'last requested screenshot' hints at a prerequisite (a prior screenshot request) but the description never states when to use this tool versus sap_get_screen or what happens if no screenshot has been requested. No exclusions, prerequisites, or alternatives are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv0.2.0
    • First observedend_transaction
    • First observedlaunch_transaction
    • First observedsap_click
    • First observedsap_get_screen
    • First observedsap_move_mouse
    • First observedsap_press
    • First observedsap_run_guixt_script
    • First observedsap_scroll
    • First observedsap_send_vkey
    • First observedsap_set_field
    • First observedsap_type
    • First observedsave_last_screenshot

TDQS

B3.2/5.0

Scored across 12 tools

Disambiguation4/5

Most tools target distinct actions (pixel click, mouse move, scroll, transaction lifecycle, COM field set, button press, virtual key, screenshot). Two pairs overlap somewhat: sap_type vs sap_set_field for entering text, and sap_press vs sap_send_vkey for triggering controls; descriptions mitigate by recommending COM for literal text and documenting vkey behavior.

Naming Consistency4/5

All names use snake_case and mostly follow a verb_noun pattern, with a consistent sap_ prefix on interaction tools. However, three lifecycle/screenshot tools (launch_transaction, end_transaction, save_last_screenshot) omit the sap_ prefix, a minor inconsistency.

Tool Count5/5

Twelve tools is well-scoped for a GUI automation server: transaction lifecycle, screen reading, several input modalities, screenshots, and GuiXT scripting each earn a place without obvious redundancy.

Completeness4/5

The surface covers core GUI automation: transaction start/end, screen scraping, pixel and COM input, scrolling, screenshots, and GuiXT scripting. Minor gaps remain for explicit window selection, waiting for screen readiness, and targeted field value extraction, but agents can work around these with existing tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with SAP systems through RESTful APIs via MCP protocol. Supports calling SAP functions like BAPI with parameters and returns structured responses for SAP data operations.
    2
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that provides seamless integration with SAP systems through RFC (Remote Function Call) connections. This server enables AI assistants and applications to interact with SAP functions, retrieve metadata, and perform operations with enhanced caching and version compatibility.
    14
    MIT