io.github.kts982/mcp-sap-gui
PYPI · MCP-SAP-GUI
SAP GUI for Windows automation for AI agents - 59 structured tools via SAP GUI Scripting API
Available components
Last scanned (5 hours ago)
Scores higher than 93% of PyPI servers
Category Workflow Automation
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 1 of 16 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to kts982/mcp-sap-gui). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 7 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability82
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 7918 tokens (~131/item across 60 items; 59 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management68
- Stability check failed: the tool surface changed between 0.5.1 and 0.6.0: 1 tool removals, 0 breaking changes, 0 additions. See how to fix → Fail
Tool Coverage73
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 4% of tool parameters carry a description.Partial
- Structured output schemas are declared (97% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 61 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 +15
- Malware scan: unverified → pass ▲ security
- 4 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 62 to 65.
- 3 Nov 26 −15
- Malware scan: pass → unverified ▼ security
- 2 Nov 26 +10
- Malware scan: unverified → pass ▲ security
- 1 Nov 26 −15
- Malware scan: pass → unverified ▼ security
- 31 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 28 Oct 26 −1
- Stability: pass → fail ▼ security
- Malware scan: unverified → pass ▲ security
- MCP protocol: Implements a current MCP spec version (2026-07-28). functional
- Package version: 0.5.4 → 0.6.0 functional
- 27 Oct 26 −14
- Malware scan: pass → unverified ▼ security
- Stability: 0.97 → pass security
- Package version: 0.5.2 → 0.5.4 functional
- Package version: 0.5.2 → 0.5.3 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed pypi/mcp-sap-gui@0.6.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | kts982/mcp-sap-gui |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/kts982/mcp-sap-gui/.github/workflows/release.yml@refs/tags/v0.6.0 |
| Rekor log index | 3544303571 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:b3f22d07242bfe06151694367413299470567af935b75417d0b783e3f369296c |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 16 packages
| Packages resolved | 16 |
|---|---|
| Stale | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
sap_click_tree_link Sap Click Tree Link ~83
Click a hyperlink in a tree node item. For SPRO/customizing trees, click on the execute icon column (typically item_name='2') to run an activity. Use sap_read_tree to see which columns have link-type items.
| Name | Type | Req | Description |
|---|---|---|---|
| item_name | string | yes | – |
| node_key | string | yes | – |
| tree_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_collapse_tree_node Sap Collapse Tree Node ~45
Collapse a folder node in a tree control (e.g. SPRO/customizing tree).
| Name | Type | Req | Description |
|---|---|---|---|
| node_key | string | yes | – |
| tree_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_connect Sap Connect ~102
Connect to an SAP system by its name in SAP Logon Pad. Credentials are resolved from a .env file (SAP_USER, SAP_PASSWORD, SAP_CLIENT, SAP_LANGUAGE) so passwords never appear in MCP tool calls. Parameters provided here override the .env values (except password). If SAP is already open and logged in, use sap_connect_existing instead.
| Name | Type | Req | Description |
|---|---|---|---|
| client | – | – | – |
| language | – | – | – |
| system_description | string | yes | – |
| user | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_connect_existing Sap Connect Existing ~207
Connect to an already open SAP session. Use this when SAP is already logged in. This is the most common starting point. connection_index=0 and session_index=0 connect to the first open session. Also attaches to SAP Business Client / embedded SAP GUI sessions. Indexes come from sap_list_connections; a connection with scripting_disabled=true cannot be attached. system: pass it only when the user named the SAP system, as 'DEV' or 'DEV/100' (system/client). One open session on it is attached; several, or none, return an error that lists what is open. The indexes are then ignored. With the 'attach' confirmation point on, the user picks the session in a dialog unless `system` names exactly one open session. The response says how it was chosen (`chosen_by`: named, dialog or index).
| Name | Type | Req | Description |
|---|---|---|---|
| connection_index | integer | – | – |
| session_index | integer | – | – |
| system | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_disconnect Sap Disconnect ~80
Disconnect from the current SAP session and release the binding. Closes only the sessions this MCP session opened: the one sap_connect logged on in and any /o window opened from it. Sessions that were attached (via sap_connect_existing), and /o windows opened from them, are detached but left open so the user can continue working manually.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
sap_double_click_cell Sap Double Click Cell ~79
Double-click a cell in a table/grid (often opens details or drills down). Row is zero-based. Column is the column name (from sap_read_table or sap_get_column_info). Works on both ALV and TableControl.
| Name | Type | Req | Description |
|---|---|---|---|
| column | string | yes | – |
| row | integer | yes | – |
| table_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_double_click_tree_item Sap Double Click Tree Item ~80
Double-click a specific item (column cell) in a tree node row. item_name is the column name (e.g., 'Column1', 'Column2'). Use sap_read_tree to discover column names for the tree.
| Name | Type | Req | Description |
|---|---|---|---|
| item_name | string | yes | – |
| node_key | string | yes | – |
| tree_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_double_click_tree_node Sap Double Click Tree Node ~85
Double-click a node in a tree control (often opens details or drills down). In SPRO/customizing trees, this may open documentation (hypertext) rather than executing the activity. Use sap_click_tree_link on the execute column (typically column '2') for SPRO activities.
| Name | Type | Req | Description |
|---|---|---|---|
| node_key | string | yes | – |
| tree_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_execute_transaction Sap Execute Transaction ~128
Execute (start/run) an SAP transaction code (tcode), e.g. MM03, VA01, SM30. Navigates to the transaction's initial screen. Always check the screen info in the response to understand what screen you landed on. Some transactions require /n prefix for SCWM (e.g., /n/SCWM/MON). A bare /n leaves the current transaction (unsaved data is lost). Subject to transaction blocklist/allowlist. Use sap_get_session_info to see the current transaction before navigating away.
| Name | Type | Req | Description |
|---|---|---|---|
| tcode | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_expand_tree_node Sap Expand Tree Node ~61
Expand a folder node in a tree control to reveal its children. After expanding, use sap_get_tree_node_children or sap_read_tree to see the newly visible child nodes.
| Name | Type | Req | Description |
|---|---|---|---|
| node_key | string | yes | – |
| tree_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_find_tree_node_by_path Sap Find Tree Node By Path ~65
Find a tree node key by its path. E.g., '2\1\2' = 2nd child of root, then 1st child, then 2nd.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | – |
| tree_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_get_alv_toolbar Sap Get Alv Toolbar ~81
Get all toolbar buttons from an ALV grid. Returns button IDs, texts, and types. Use this to discover available actions (sort, filter, export, etc.) before pressing them with sap_press_alv_toolbar_button. Only works on GuiGridView (ALV), not GuiTableControl.
| Name | Type | Req | Description |
|---|---|---|---|
| grid_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_get_cell_info Sap Get Cell Info ~120
Get detailed cell metadata from an ALV grid. Returns value, changeable, cell_type (Normal, CheckBox, ValueList, Button, ...), state (Normal, Error, Warning, Info: why a cell was rejected), f4_help, hotspot, color, tooltip, max_length; plus checked for a checkbox and list_box_count (entries) for a dropdown cell. Does NOT work on GuiTableControl.
| Name | Type | Req | Description |
|---|---|---|---|
| column | string | yes | – |
| grid_id | string | yes | – |
| row | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_get_column_info Sap Get Column Info ~94
Get detailed column info from an ALV grid or table control. Returns column names, titles and tooltips; for an ALV grid also each column's data_type (string, date, decimal, ...) and key flag, for a table control each column's cell_type and cell_id template. For a lighter alternative, use sap_read_table with columns_only=true.
| Name | Type | Req | Description |
|---|---|---|---|
| grid_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_get_combobox_entries Sap Get Combobox Entries ~42
List all entries in a combobox/dropdown. Returns key-value pairs so you know which values are valid.
| Name | Type | Req | Description |
|---|---|---|---|
| combobox_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_get_current_cell Sap Get Current Cell ~33
Get the currently focused cell position in an ALV grid or table control.
| Name | Type | Req | Description |
|---|---|---|---|
| table_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_get_popup_window Sap Get Popup Window ~185
Check if a popup/modal dialog is open (wnd[1], wnd[2], etc.). Returns the popup's title, text content, and available buttons so you know how to respond. Also classifies the popup and suggests a safe next action. Returns {popup_exists: false} if no popup. The popup's text is in `texts`: labels and display-only fields (a message popup's lines). A popup whose body is a classic list (an F4 hit list, a note, a message's long text) has `list` (`cells`, `rows`, `hint`) instead: its lines are never in `texts` or `interactive_elements`; read them with sap_read_list. Radio buttons and checkboxes in interactive_elements carry selected. `texts`, `buttons` and `interactive_elements` are left out when empty.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
sap_get_screen_elements Sap Get Screen Elements ~366
Discover all elements on the current SAP screen. Useful for finding field IDs when working with a new screen. Use type_filter and changeable_only to reduce response size on complex screens (e.g. type_filter="GuiTextField,GuiCTextField" to find only input fields). max_depth controls how deep to recurse into containers (default 2). Use max_depth=1 for a quick overview, max_depth=3+ for deeply nested layouts (splitter containers, tab strips with sub-containers). Pass container_id='wnd[0]/mbar' to discover the menu bar structure. Radio buttons and checkboxes report selected (true/false); a dropdown reports its selected key. A table control (SM30-style) is ONE element here, not one per cell: use sap_read_table(columns_only=true) for its columns and cell_id templates. A classic list (report WRITE output, SE16 standard list, F4 hit list) is left out and reported under 'lists': read it with sap_read_list. expand_tables=true lists every visible cell of both (large). Docking containers sit BESIDE the user area, not inside it: the dialog-structure tree of a view cluster (SM34, most IMG activities) and the SE80 tree are under 'wnd[0]/shellcont'. When the window has any, the response lists them as docking_containers; discover them with that id, or pass container_id='wnd[0]' (max_depth=1) for all top-level areas.
| Name | Type | Req | Description |
|---|---|---|---|
| changeable_only | boolean | – | – |
| container_id | string | – | – |
| expand_tables | boolean | – | – |
| max_depth | integer | – | – |
| type_filter | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_get_screen_info Sap Get Screen Info ~295
Get current SAP screen info: transaction, program, screen number, window title, and status bar message (success/error/warning text). Reads from ``session.ActiveWindow`` so the response always reflects what the user sees. The ``active_window`` field tells you which window is in focus (e.g. ``wnd[0]`` for the main screen, ``wnd[1]`` for a popup). The ``title`` comes from the active window. Every action tool (press_button, send_key, select_menu, etc.) returns this same screen info, so you always know when a popup appears. Use sap_get_popup_window for full popup content (texts, buttons). Present only when true: message_has_long_text (sap_press_button on 'wnd[0]/sbar' opens it) and message_as_popup (the message also sits in a popup that must be closed first). Present only when set: subscreens, the sub-screens on the active window as "program:dynnr", outer first (program / screen_number name only the main screen, so an RF step, a tab page or a detail area that changes shows only here), and cursor, the ID of the field the cursor is in. A screen redisplayed without a message, e.g. for an empty required field, still moves the cursor to that field.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
sap_get_session_info Sap Get Session Info ~59
Get information about the current SAP session (system, client, user, transaction, screen). Also the SAP GUI release (sap_gui_version) and scripting_read_only: when true, the SAP server allows read-only scripting and write tools refuse.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
sap_get_table_control_row_info Sap Get Table Control Row Info ~58
Get row metadata (selectable, selected) from a GuiTableControl. If rows is omitted, queries all visible rows. Does NOT work on ALV grids.
| Name | Type | Req | Description |
|---|---|---|---|
| rows | – | – | – |
| table_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_get_toolbar_buttons Sap Get Toolbar Buttons ~76
List all buttons on the system toolbar (tbar[0]) and app toolbar (tbar[1]). Returns button IDs, text, tooltip, and enabled state. This is for standard SAP toolbars, NOT ALV (use sap_get_alv_toolbar for ALV).
| Name | Type | Req | Description |
|---|---|---|---|
| window_id | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_get_transaction_guide Sap Get Transaction Guide ~147
Return a generic, read-first guide for a supported SAP transaction. Available transactions: - **/SCWM/MON**: EWM Warehouse Monitor with tree navigation and ALV results. - **SM30**: table/view maintenance and view clusters (SM34) - also what most IMG activities open: reading the table, the docked dialog-structure tree, new entries, saving and the customizing request prompt. Aliases accepted: `SCWM/MON`, `warehouse monitor`, `ewm warehouse monitor`, `SM34`, `table maintenance`, `view maintenance`, `view cluster`.
| Name | Type | Req | Description |
|---|---|---|---|
| task | string | – | – |
| transaction | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_get_tree_node_children Sap Get Tree Node Children ~89
Get direct children of a tree node. Much faster than read_tree for step-by-step navigation of deep trees (e.g., SPRO). Omit node_key or pass empty string for root-level nodes. Set expand=true to expand the node first (requires write permission).
| Name | Type | Req | Description |
|---|---|---|---|
| expand | boolean | – | – |
| node_key | string | – | – |
| tree_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_get_workflow_guide Sap Get Workflow Guide ~100
Return step-by-step guidance for a common SAP workflow. Available workflows: - **search_help**: F4 search help on a field. `target` = field ID. - **table_export**: Paginated table export. `target` = table element ID. - **spro_navigate**: SPRO customizing navigation. `target` = activity name.
| Name | Type | Req | Description |
|---|---|---|---|
| target | string | yes | – |
| workflow | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_handle_popup Sap Handle Popup ~269
Read and optionally act on the current popup/modal dialog. Use when active_window shows wnd[1] or higher. Combines popup inspection and response in a single call. Actions: - read: return popup content without acting (default) - confirm: press OK/Yes/Continue/Enter on the popup - cancel: press Cancel (or F12) on the popup; never No, which on a save prompt drops the changes - press: press a specific button by its text or tooltip - auto: take only a clearly safe action; otherwise return the popup read-only A press that may save (a Save button, or Yes/OK on a popup about saving, e.g. "Save the changes first?") asks the user first, like F11 in sap_send_key. So does any answer but Cancel when the popup's question cannot be read (question_readable: false; SAP GUI's Edge browser control). On such a popup, confirm never falls back to Enter, and auto only reads. An accepted press reports confirmed_by_user: true. Returns the popup contents plus classification, requested action, and post-action screen/popup state when something was pressed.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | – |
| button_text | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_list_connections Sap List Connections ~110
List all open SAP connections and sessions. Covers SAP Logon plus SAP Business Client / embedded SAP GUI sessions (`host`: saplogon | sapguiserver). A connection with no sessions and `scripting_disabled: true` means the server parameter sapgui/user_scripting is off, so no session can be read. Each session has its system, client, user, transaction, `session_number` (the "(2)" in "DEV(2)") and window `title`.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
sap_modify_cell Sap Modify Cell ~79
Modify the value of a cell in an ALV grid or table control. Only works on editable cells. Use sap_get_cell_info to check if a cell is changeable before attempting to modify it.
| Name | Type | Req | Description |
|---|---|---|---|
| column | string | yes | – |
| grid_id | string | yes | – |
| row | integer | yes | – |
| value | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_press_alv_toolbar_button Sap Press Alv Toolbar Button ~95
Press a toolbar button on an ALV grid (e.g., sort, filter, export). Use sap_get_alv_toolbar to find button IDs. A menu button (Menu / ButtonAndMenu) opens its menu and the response lists menu_items (text and function_code); pick one with sap_select_alv_context_menu_item.
| Name | Type | Req | Description |
|---|---|---|---|
| button_id | string | yes | – |
| grid_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_press_button Sap Press Button ~168
Press (click) a pushbutton or toolbar button on the current SAP screen. Returns screen info after the press so you can detect navigation or popups. Use sap_get_toolbar_buttons to discover toolbar button IDs. Use sap_get_screen_elements to find on-screen button IDs. When screen info has message_has_long_text, pressing 'wnd[0]/sbar' opens that long text (Diagnosis / Procedure), usually as a list popup: read it with sap_read_list(window_id='wnd[1]'). A popup button is checked like sap_handle_popup's press: a press that may save, or any answer but Cancel to a popup question the tool cannot read, asks the user first (confirmed_by_user: true when accepted).
| Name | Type | Req | Description |
|---|---|---|---|
| button_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_press_column_header Sap Press Column Header ~47
Click a column header in an ALV grid (triggers sort). Does NOT work on GuiTableControl.
| Name | Type | Req | Description |
|---|---|---|---|
| column | string | yes | – |
| grid_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_preview Sap Preview ~104
Render a preview card of the current SAP screen for the user: screenshot, session/transaction info, status bar, and the values the agent is about to write (pending_fields). Call before significant writes (batch fills, F11 save) or whenever the user asks to see what's about to happen. Read-only: nothing is written or saved.
| Name | Type | Req | Description |
|---|---|---|---|
| include_screenshot | boolean | – | – |
| note | string | – | – |
| pending_fields | – | – | – |
No output schema declared.
No examples provided.
sap_read_field Sap Read Field ~93
Read the value of a field on the current SAP screen. Returns value, type, changeable status, and labels (left/right). For a dropdown, value is the selected entry's text and key its key. For a radio button or checkbox, value is its label and selected says whether it is selected. Use sap_get_screen_elements to discover field IDs on unknown screens.
| Name | Type | Req | Description |
|---|---|---|---|
| field_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_read_list Sap Read List ~271
Read a classic ABAP list (WRITE output of a report) as lines of text. Use it when a report shows a plain list rather than an ALV grid (program SAPMSSY0, screen 120), and for F4 hit lists in a popup (window_id= 'wnd[1]'). Such a list has no table object: every word is its own label, so sap_get_screen_elements leaves the cells out and reports it under 'lists'. This returns the page as the lines the user sees, with no screenshot needed. - colors: rows whose text has a semantic list colour, e.g. 'negative' (red, errors), 'positive' (green), 'total', 'heading' - scroll: present when the list is longer than the page; pass scroll_to=position+page_size to read the next page - with_ids=true adds the ID of each line's first label, to set the focus on a line (sap_set_focus) before F2 / double-click - is_list=false means this screen has no list: use sap_read_table
| Name | Type | Req | Description |
|---|---|---|---|
| max_lines | integer | – | – |
| scroll_to | integer | – | – |
| window_id | string | – | – |
| with_ids | boolean | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_read_shell_content Sap Read Shell Content ~94
Read content from a GuiShell subtype (e.g., HTMLViewer). An HTML viewer's page text and URL are readable only with the Internet Explorer browser control; with the Edge control (SAP GUI 7.70+ default, e.g. the F1 Performance Assistant) the response says so in `note`. Use sap_get_screen_elements first to find shell element IDs.
| Name | Type | Req | Description |
|---|---|---|---|
| shell_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_read_table Sap Read Table ~341
Read rows from a table on the current screen — ALV grid (report/list output) or TableControl (SM30 maintenance view, customizing screens). Auto-detects the table type. The response includes a 'table_type' field ('GuiGridView' for ALV or 'GuiTableControl') so you know which type-specific tools to use next (e.g., sap_get_alv_toolbar for ALV, sap_scroll_table_control for TableControl). Use columns_only=true for schema discovery (returns column metadata only, no data). For a TableControl it also gives each column's cell_type and a cell_id template ({row} = zero-based visible row) for sap_set_batch_fields. Use columns to fetch only specific columns (CSV). Use start_row to paginate through large tables. On a TableControl a start_row (0 included) scrolls there first; without one the read starts where the table is scrolled now (e.g. after Position...). first_visible_row says which row is on top. A TableControl read returns at most the visible rows: page with start_row=next_start_row while has_more is true. start_row_note explains a clamped or failed scroll. total_rows counts its empty lines too (SM30 pads the view). When the read reaches the first empty row, the response has empty_rows_from, that row's absolute index: the data ends there.
| Name | Type | Req | Description |
|---|---|---|---|
| columns | string | – | – |
| columns_only | boolean | – | – |
| max_rows | integer | – | – |
| start_row | – | – | – |
| table_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_read_textedit Sap Read Textedit ~75
Read the content of a multiline text editor (GuiTextedit) — long texts, notes, comments, document text. Returns full text and line count. Use max_lines to cap output for large text editors (0 = all lines).
| Name | Type | Req | Description |
|---|---|---|---|
| max_lines | integer | – | – |
| textedit_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_read_tree Sap Read Tree ~122
Read data from a tree control (TableTreeControl, ColumnTreeControl, etc.). Returns node hierarchy with texts and column values. For large trees (e.g., SPRO with 1000+ nodes), use sap_get_tree_node_children for step-by-step navigation instead. Use sap_search_tree_nodes to find specific nodes by text. total_nodes is the number of nodes read; truncated=true means the tree has more loaded nodes (available_nodes) than max_nodes allowed.
| Name | Type | Req | Description |
|---|---|---|---|
| max_nodes | integer | – | – |
| tree_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_screenshot Sap Screenshot ~153
Take a screenshot of the current SAP window. Use as a fallback when structured tools (sap_get_screen_elements, sap_read_field, sap_read_table) return empty or confusing results, e.g., on Web Dynpro screens where the element tree is non-standard. To put a screenshot into a document, pass save_path (must end in .png, directory must exist, existing files are never overwritten). The file keeps SAP GUI's full resolution; the inline image is capped at 1920px. The response then also reports the absolute path and pixel size. Set inline=False to skip the image when only the file is needed.
| Name | Type | Req | Description |
|---|---|---|---|
| inline | boolean | – | – |
| save_path | string | – | – |
No output schema declared.
No examples provided.
sap_scroll_table_control Sap Scroll Table Control ~119
Scroll a GuiTableControl to a specific row position. Does NOT work on ALV grids (they handle scrolling internally). For reading data at a specific offset, prefer sap_read_table with start_row parameter — it handles scrolling automatically. position in the response is the row SAP actually put at the top, which can differ from the one asked for (then requested_position and a note say so). Cell IDs ([col,row]) count visible rows from that row.
| Name | Type | Req | Description |
|---|---|---|---|
| position | integer | yes | – |
| table_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_search_tree_nodes Sap Search Tree Nodes ~180
Search for tree nodes by text. Returns matches with full ancestor paths. Useful for finding nodes in deep trees where the same label appears in multiple branches. Case-insensitive substring match. Optionally pass column to search in a specific column instead of node text. **Important limitation**: Only searches nodes that are already loaded (expanded) in the tree. Collapsed subtrees are not searched. If you don't find what you expect, expand parent nodes first using sap_get_tree_node_children with expand=true, then search again. total_matches counts the matches returned. stopped_early=true means the search reached max_results before the last loaded node, so more matches are possible.
| Name | Type | Req | Description |
|---|---|---|---|
| column | string | – | – |
| max_results | integer | – | – |
| search_text | string | yes | – |
| tree_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_select_all_rows Sap Select All Rows ~35
Select all rows in an ALV grid. Does NOT work on GuiTableControl.
| Name | Type | Req | Description |
|---|---|---|---|
| grid_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_select_all_table_control_columns Sap Select All Table Control Columns ~47
Select or deselect all columns in a GuiTableControl. Does NOT work on ALV grids.
| Name | Type | Req | Description |
|---|---|---|---|
| select | boolean | – | – |
| table_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_select_alv_context_menu_item Sap Select Alv Context Menu Item ~218
Select an item from an opened ALV context menu. First use sap_press_alv_toolbar_button on a Menu button to open it, then use this to select an item. Alternatively, pass toolbar_button_id to open the menu and select in one atomic call (recommended). `menu_item_id` can be a technical function code (for example `@M00006`), visible menu text (for example `Confirm WT in Foreground`), or a position descriptor. You can pass human-readable menu text directly. The menu_items of sap_press_alv_toolbar_button list what a menu offers. `select_by` controls how selection is performed: - `auto` (default): heuristic based on whether `menu_item_id` has spaces - `id`: function code - `text`: visible menu text - `position`: position descriptor
| Name | Type | Req | Description |
|---|---|---|---|
| grid_id | string | yes | – |
| menu_item_id | string | yes | – |
| select_by | string | – | – |
| toolbar_button_id | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_select_checkbox Sap Select Checkbox ~62
Select or deselect a checkbox on the current SAP screen. Set selected=false to uncheck. Use sap_get_screen_elements with type_filter='GuiCheckBox' to find checkbox IDs.
| Name | Type | Req | Description |
|---|---|---|---|
| checkbox_id | string | yes | – |
| selected | boolean | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_select_combobox_entry Sap Select Combobox Entry ~89
Select an entry in a combobox/dropdown by its key or display value text. Accepts either the technical key or the visible display text. Use sap_get_combobox_entries first to see all valid options. F4 opens nothing on a dropdown; sap_set_field selects entries the same way.
| Name | Type | Req | Description |
|---|---|---|---|
| combobox_id | string | yes | – |
| key_or_value | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_select_menu Sap Select Menu ~77
Select a menu item from the menu bar or a submenu. Example: 'wnd[0]/mbar/menu[1]/menu[0]'. Use sap_get_screen_elements on 'wnd[0]/mbar' to discover menu structure. Returns screen info after selection so you can detect navigation.
| Name | Type | Req | Description |
|---|---|---|---|
| menu_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_select_multiple_rows Sap Select Multiple Rows ~58
Select multiple rows at once in an ALV grid or table control. Pass a list of row indices (e.g., [0, 2, 5]).
| Name | Type | Req | Description |
|---|---|---|---|
| rows | array | yes | – |
| table_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_select_radio_button Sap Select Radio Button ~51
Select a radio button on the current SAP screen. Use sap_get_screen_elements with type_filter='GuiRadioButton' to find radio button IDs on the current screen.
| Name | Type | Req | Description |
|---|---|---|---|
| radio_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
sap_select_tab Sap Select Tab ~57
Select a tab in a tab strip control. Returns screen info after selection (tab content changes). Tab IDs typically look like 'wnd[0]/usr/tabsTABSTRIP/tabpTAB01'.
| Name | Type | Req | Description |
|---|---|---|---|
| tab_id | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
How do I install the io.github.kts982/mcp-sap-gui server?
io.github.kts982/mcp-sap-gui runs locally as a PyPI package, launched with uvx mcp-sap-gui. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · mcp-sap-gui
claude mcp add kts982-mcp-sap-gui -- uvx mcp-sap-gui
What is the io.github.kts982/mcp-sap-gui server?
io.github.kts982/mcp-sap-gui is listed in the public MCP registry as io.github.kts982/mcp-sap-gui. SAP GUI for Windows automation for AI agents - 59 structured tools via SAP GUI Scripting API. This page covers its PyPI package (mcp-sap-gui).
Is the io.github.kts982/mcp-sap-gui server safe to use?
io.github.kts982/mcp-sap-gui scores 90 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.kts982/mcp-sap-gui server expose?
io.github.kts982/mcp-sap-gui exposes 59 tools: sap_connect, sap_connect_existing, sap_list_connections, sap_get_session_info, sap_execute_transaction, and 54 more. Their descriptions and schemas cost roughly 7,097 tokens of context every time the server is loaded.
Is the io.github.kts982/mcp-sap-gui server still maintained?
io.github.kts982/mcp-sap-gui is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.kts982/mcp-sap-gui server under?
io.github.kts982/mcp-sap-gui declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.