MCP server for SAP Web GUI browser automation using Playwright
This is a competent browser automation + SAP integration toolkit with clear naming conventions and structured schemas. 17 tools covering browser control, breakpoint debugging, git operations, and transaction/class search. Most tools follow verb_noun naming (sap_set_breakpoint, browser_click, search_transactions). Descriptions are generally present and actionable (average ~120 chars, acceptable range). Input schemas are visible and typed across all tools. However, output schemas are NOT documented anywhere in the provided source, a critical gap for LLM reasoning about return values. Error handling is minimal: no recovery guidance, no categorization (retryable vs fatal), no examples of actual error responses. Parameter descriptions are adequate but lack constraints (ranges, patterns) in many cases. The 'session' parameter appears in nearly every tool but lacks clear documentation of valid formats and behavior. Tool composition is sound, each tool has a single responsibility, but some tools could benefit from richer chaining data (e.g., search_transactions should return transaction codes that map to sap_* tool parameters). Security: sensitive parameters (pat, username) are accepted but no guidance on server-side secret injection. Overall, this is a B-/C+ implementation: solid basics, but missing output documentation, error guidance, and parameter constraints that would push it to A range.
Click an element by CSS selector. BEFORE clicking buttons, use sap_get_shortcuts to check if a keyboard shortcut is available - shortcuts are faster and more reliable than clicks.
Execute arbitrary JavaScript code in the browser context and return the result
Fill a single input field by CSS selector. For filling multiple fields on the same screen, use sap_fill_form instead - it fills all fields in a single call, which is much faster.
Get HTML content of the page or a specific element
Send keyboard input - can be text or special keys (VKey codes, arrow keys, function keys, etc.)
Navigate to a URL in the current browser tab
Output schemas completely undocumented. No tool provides a documented return type or response field structure. LLMs cannot reason about chaining tools or extracting fields for downstream calls.
No error handling guidance or recovery paths. Tools lack documented error categories (retryable, user-fixable, fatal) and actionable error messages. When a tool fails, LLM has no guidance on next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Take a screenshot of the current page or specific element. Returns large image that fills context rapidly - use browser_snapshot instead for most cases.
Select an option in a dropdown/select element by value, text, or index
Get accessibility tree snapshot of the current page. Returns a YAML representation of the ARIA tree - useful for understanding page structure when other tools fail.
Wait for an element to exist/be visible, or wait for a fixed duration
List all registered abapGit repositories and their metadata
Fetch and apply changes from a remote git repository via Z_ABAPGIT_PULL_MCP transaction
Delete an external breakpoint from ABAP source code (desktop backend only)
List all external breakpoints for a specific ABAP object (desktop backend only)
Set an external breakpoint at a specific line in ABAP source code (desktop backend only)
Search for SAP classes by name or description. Use this when the user asks things like: 'What class handles installations?', 'Find classes for IS-U contracts', 'Which class works with devices?', 'Show me FI-CA classes'. The catalog contains IS-U and FI-CA classes. Returns matching classes with relevance scores.
Search for SAP transactions by description or transaction code. Use this when the user asks things like: 'How do I create a sales order?', 'What transaction displays customer master?', 'Show me material management transactions', 'What is VA01?'. Returns matching transactions with relevance scores.
Parameter 'session' appears in 14/17 tools but lacks clear documentation of valid format, defaults, and multi-session behavior. What does 'None uses primary session' mean? Does s1, s2, s3 work? What's the primary session?
Numeric parameters lack bounds. 'timeout' in browser_wait, 'line_number' in sap_set_breakpoint, 'limit' in search_* tools have no min/max constraints documented. LLMs can pass absurd values.
Sensitive parameters (pat, username) accepted as inputs without guidance on server-side secret injection. GitHub PAT should not be exposed in tool parameters, credentials leak into agent logs.
browser_evaluate accepts arbitrary JavaScript but lacks warning about execution context, performance, or security implications. No guidance on what code is safe to run.
search_transactions and search_classes return relevance scores but no guidance on how LLM should interpret score ranges or when to request more results.
No pagination cursor or offset documented for search results. 'limit' parameter exists but no 'offset', 'page', or 'next_cursor' for large result sets.