mcp-serverBLOCK
The abap2UI5 MCP server — an agent writes an app, runs it and sees the screenshot, without an SAP system
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
The MCP server for abap2UI5 — gives any AI coding agent (Claude Code, Cursor, VS Code Copilot, or any MCP client) the full abap2UI5 development loop, without an SAP system:
examples -> app_guide -> validate_view + screenshot_view -> deploy_app -> build_backend -> run_app -> pitfalls (has somebody (how an app (SECONDS, no system: (write ABAP, (transpile (boot headless, (what a green built it is built) is the view legal, lint) to Node) errors + run still already?) and what does it LOOK like) SCREENSHOT) does not prove)
The agent writes an ABAP class, validates the view and looks at a picture of it in seconds, deploys it, boots it in a real browser and looks at the running app — then iterates. Everything runs locally on infrastructure that already guards the abap2UI5 ecosystem in CI: the abaplint transpiler + open-abap runtime, the framework's express shim, the samples-controls build and boot gates, and the linter validation core.
Documentation
→ [The MCP server, in full](https://abap2ui5.github.io/docs/advanced/mcp_server.html) — what MCP means here, the three setup levels and what each one buys, how to register the server with your client, every tool with what the agent gets from it, and the loop they are meant to be used in.
→ [Building with AI](https://abap2ui5.github.io/docs/get_started/ai.html) — the whole AI setup in rising order of effort. This server is the top rung; the cheaper ones matter first.
Quick start
One-click install
[](https://insiders.vscode.dev/redirect/mcp/install?name=abap2ui5&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22--yes%22%2C%22-p%22%2C%22%40abap2ui5%2Fmcp-se
e18ad044d85cOBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add mcp-server -- npx -y @abap2ui5/[email protected]
Exposed tools (45)
33 read · 11 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
A2UI5_MCP_NOTHING | read | x |
ZCL_A | read | A & B |
add_agent_setup | write | Set up an EXISTING abap2UI5 project for AI work - what |
api_reference | read | The client API an app calls at runtime — z2ui5_if_client, parsed live from the framework |
app-building-guide | read | The abap2UI5 app-building guide, whole — the rulebook for writing a z2ui5_if_app class (live from the abap2UI5 checkout; the app_guide tool slices it by chapter and query) |
app-building-guide-chapter | read | One chapter of the app-building guide, by number (abap2ui5://guide/5) or heading keyword (abap2ui5://guide/events) — the whole guide is abap2ui5://guide |
app-screen | read | The interactive screen of the app tools (MCP Apps, text/html;profile=mcp-app): renders the agent snapshot of app_start/app_describe/app_act as fields, actions and tables the user can operate in the chat; what the user does goes back as app_act calls (self-contained HTML, no network) |
app_act | read | Operate a running app session on the SAP system semantically: fill fields and fire an event, then get the new |
app_describe | read | The current agent snapshot of a running app session (see app_start) - answered from the last response this |
app_guide | read | READ THIS BEFORE WRITING ABAP for an app of your own. The complete guide to BUILDING an |
app_list | write | The classes on the SAP system that app_start can start - an ADT class-name search (the system counterpart of |
app_start | write | Start an abap2UI5 app class on the SAP system and get its screen as an AGENT SNAPSHOT (v1): the fields you can |
backend | write | Manage the local express backend serving the transpiled apps: status | start | stop | restart. |
build-an-abap2ui5-app | read | Walks the full development loop for an app of your own: examples/app_guide first, then write the |
build_backend | write | Rebuild the transpiled Node backend so run_app and run_unit_tests pick up deployed/edited ABAP. |
build_log | write | Read the full output of the LAST build_backend run — the tool result itself carries only a |
capabilities | read | Query what abap2UI5 can express, from the verified capability map (CAPABILITIES.md — every entry |
capability-map | read | CAPABILITIES.md — the verified map of what abap2UI5 can express, every entry naming a proving port (live from the samples-controls checkout; the capabilities tool queries it) |
client-api-summary | read | The z2ui5_if_client API summary: every method, cs_* constant group and type, one line each (live-parsed from the abap2UI5 checkout; the api_reference tool answers queries with full signatures) |
deploy_app | write | Deploy an abap2UI5 app: writes <class_name>.clas.abap (+ abapGit sidecar) into the dev sandbox - |
docs_search | read | Full-text search over the abap2UI5 documentation site (abap2ui5.github.io/docs), from its |
examples | read | Find a WORKING APP that already does what you are about to build, across ALL THREE sample |
fix_view | write | Apply the linter\ |
generation_rules | read | The rulebook for PORTING one official UI5 demo-kit sample to abap2UI5 as a |
interact_app | read | Boot an app class headless like run_app, then DRIVE it: a short script of actions — click a control |
migrate_report | read | Convert a CLASSIC ABAP REPORT (REPORT ... PARAMETERS / SELECT-OPTIONS, event blocks, WRITE list, ALV) into an |
pitfalls | read | The catalogues of defects a green CI does NOT catch, read live from the abap2UI5 checkout: |
pitfalls-abap | read | abap-check — the ABAP defects a green CI does not catch: abapGit round trip and import, activation, extended check, downport/transpile, runtime (live from the abap2UI5 checkout) |
pitfalls-view | read | ui5-check — the view defects a green CI does not catch: names the oldest supported release does not have, layout that only works from a newer release on, views that fail to load (live from the abap2UI5 checkout) |
port-a-ui5-sample | read | The corpus job: rebuild one official UI5 demo-kit sample as an abap2UI5 port class. Starts from |
porting-rulebook | read | The rulebook for porting a UI5 demo-kit sample into samples-controls (live from that checkout; for building an app of your own, read abap2ui5://guide instead) |
read_app | read | Read back the source of a DEPLOYED dev app exactly as it sits in the dev sandbox — the file |
read_example | read | READ the source of a sample the |
remove_app | destructive | Remove a previously deployed dev app from the dev sandbox (takes effect in the served backend after the next build_backend). Without class_name lists the deployed dev apps. |
run_app | write | Boot an app class headless in Chromium against the local backend (?app_start=<class>) and LOOK at it: |
run_unit_tests | write | Run the ABAP Unit tests in the transpiled backend — the local test classes deployed with an app |
sample | read | the demo-kit sample to port — control and sample name or id, e.g. |
scaffold_app | read | The files a NEW abap2UI5 project starts from, named after the app you are writing — served |
scope_of | read | Authoritative in/out-of-scope verdict for UI5 control entities (exists since UI5 <= 1.71, not |
screenshot_view | read | LOOK at the view your ABAP builds, in seconds and without a system, a build or a backend. |
setup_status | read | What this server can do RIGHT NOW, in one read - call it first, or whenever a tool says something is |
system_status | read | Which SAP system this server is connected to and whether it works: the abap2UI5 endpoint and user from the |
task | read | what the app should do, in a sentence or two — e.g. |
validate_view | write | Fast static validation via abap2UI5-linter, BEFORE the build/run loop: reconstructs the view from the |
verify_app | read | The whole loop in ONE call, stopping at the first stage that fails: validate (the linter\ |
Trust audit
BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (10 observation(s))
- Network
- declared (3 observation(s))
- Shell
- declared (1 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (14)
message: `${x.text} - a dynamic WHERE condition is evaluated as JavaScript by the transpiled runtime (@abaplint/runtime eval()s what it does not rewrite): `password: 'A2UI5_MCP_SYSTEM_PASSWORD',
remove_app
import { buildDelta } from "../../../appclient.mjs";import { getAt, setAt } from "../../../snapshot.mjs";import { parseViewXml, parseBinding, parseWire, evalExpression, isAggregation, controlName } from "../../../viewxml.mjs";import { getAt } from "../../../snapshot.mjs";import { createAppClient } from '../../lib/appclient.mjs';await sweep(SYSTEM_TOOL_NAMES, { A2UI5_MCP_SYSTEM_URL: 'http://127.0.0.1:9/sap/bc/z2ui5', A2UI5_MCP_SYSTEM_USER: 'u', A2UI5_MCP_SYSTEM_PASSWORD: 'p' });const BASE = 'http://127.0.0.1:4471/';
assert.deepEqual(JSON.parse(seen.body), { value: { S_FRONT: { ORIGIN: 'http://127.0.0.1:4471', PATHNAME: '/', SEARCH: '?app_start=z_x' } } });export const BASE = 'http://127.0.0.1:4471/';
origin = `http://127.0.0.1:${server.address().port}`;@modelcontextprotocol/sdk, playwright
Gates applied: no_behavioural_pass.
e18ad044d85cfull audit observations/trust-audit/mcp-server/abap2ui5__mcp-server.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | e18ad044d85c | BLOCK | D | 69 | first audit |
Questions
What is the mcp-server MCP server?
The abap2UI5 MCP server — an agent writes an app, runs it and sees the screenshot, without an SAP system
What tools does mcp-server expose?
45 in total: 33 read-only, 11 that write, and 1 that can delete or overwrite (remove_app). Every one is listed on this page with its risk.
Is mcp-server safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (69/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does mcp-server need?
It reads GH_TOKEN and GITHUB_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does mcp-server run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as @abap2ui5/mcp-server at 1.0.0.
How current is this page?
The grade is for one exact copy of the source (e18ad044d85c), read on 2026-10-11. The repository is watched and re-audited when it changes.