abap2UI5
abap2UI5 dev loop for AI agents: validate views, screenshot, deploy and run apps - no SAP system
Connector by abap2UI5 · GitHub account verified by the MCP Registry
Chalk Labs
Need help deploying abap2UI5?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/abap2ui5-mcp-server
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 26, 2026.
- Tools
- 13 read · 9 write · 1 delete · 8 not yet classified
- Secrets
- 3 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 31
Read from the source code; the running server may list different tools.
Read 13 · Look things up without changing anything.
app_describeapp_guideapp_listcapabilitiesdocs_searchexamplesread_appread_examplescreenshot_viewsetup_statussystem_statusvalidate_view
Show 1 more tools
verify_app
Write 9 · Create, change, send or run things.
add_agent_setupapp_startbackendbuild_backendbuild_logdeploy_appmigrate_reportrun_apprun_unit_tests
Delete 1 · Delete, drop, revoke or wipe things.
remove_app
Not yet classified 8 · We could not tell from the name and description.
api_referenceapp_actfix_viewgeneration_rulesinteract_apppitfallsscaffold_appscope_of
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
A2UI5_MCP_SYSTEM_PASSWORDA2UI5_MCP_SYSTEM_PASSWORD_CMDGITHUB_TOKEN
Other settings (environment variables or headers).
A2UI5_HOMEA2UI5_MCP_APP_FORMATA2UI5_MCP_BACKENDA2UI5_MCP_BUILD_TIMEOUT_MSA2UI5_MCP_CHROMIUMA2UI5_MCP_LINT_IDLE_MSA2UI5_MCP_LINT_TIMEOUT_MSA2UI5_MCP_LINT_WORKERA2UI5_MCP_OFFLINEA2UI5_MCP_PORTA2UI5_MCP_PREBUILT_URLA2UI5_MCP_REMOTE
Show 22 more settings
A2UI5_MCP_REMOTE_DIRA2UI5_MCP_REMOTE_TTL_MSA2UI5_MCP_RENDER_PAGESA2UI5_MCP_RUNTIME_VERSIONA2UI5_MCP_SCOPE_TIMEOUT_MSA2UI5_MCP_SCREENSHOT_DIRA2UI5_MCP_SYSTEM_INSECURE_TLSA2UI5_MCP_SYSTEM_URLA2UI5_MCP_SYSTEM_USERA2UI5_MCP_UIA2UI5_MCP_UI5_CACHE_MBA2UI5_MCP_UNIT_TIMEOUT_MSA2UI5_MCP_WORKSPACEABAP_CLOUD_GUI_HOMEAI_VIEW_CHECK_HOMEAPP_TEMPLATE_HOMEDOCS_HOMEOPENUI5_SRCPOPUPS_HOMESAMPLES_CONTROLS_HOMESAMPLES_HOMESAMPLES_STACK_HOME
Network hosts it talks to 7
abap2ui5.github.io· found in codeapi.github.com· found in codegithub.com· found in codeglama.ai· found in coderaw.githubusercontent.com· found in codesap.com· found in codesdk.openui5.org· found in code
Files it touches
/opt/pw-browsers/chromium- Your home directory (~)
- Any path the agent passes to its tools
Tools (31)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
add_agent_setupSet up an EXISTING abap2UI5 project for AI work - what `npm create abap2ui5-app -- --agent-setup` does, executed from abap2UI5/app-template's own template.json (`agentSetup`): adds AGENTS.md (the app-building reference), CLAUDE.md, the agent skills, .mcp.json (this server), the .claude permission allowlist, the two gates (abaplint.jsonc with the framework pinned, abap2ui5lint.jsonc), the CI workflow that runs them and the scripts it calls. WRITES into the project directory, safely: a file the project has is never overwritten (skipped and named); package.json and .gitignore are merged and only …
api_referenceThe client API an app calls at runtime — z2ui5_if_client, parsed live from the framework checkout WITH its ABAP-Doc, so a signature is looked up instead of guessed from training data or fished out of the whole z2ui5_if_client source. Without arguments returns the compact surface: every method one line each (obsolete ones marked — they exist only so old apps keep compiling), the cs_* constant groups (cs_event, cs_view, cs_device, cs_nav_mode) and the named types. With `query` the matching entries come back WHOLE: a method with its full documentation and every parameter (type, default, per-param…
app_actOperate a running app session on the SAP system semantically: fill fields and fire an event, then get the new agent snapshot. `values` { "<field id | model path | name>": value } (table cells as "<table path or id>/<row>/<COLUMN>", e.g. "/T_TAB/2/SELKZ" to select a row) go out as the model delta of the roundtrip; `event` is an action's event name or its id ("a3"); `row` (0-based) fills the row-dependent arguments of a row action; on a SelectDialog/TableSelectDialog the `confirm` action is the pick: `row` selects that row; `args` (positional, null = let the client fill it) supplies arguments th…
app_describeThe current agent snapshot of a running app session (see app_start) - answered from the last response this server kept, no roundtrip, so it sends nothing to the system. Pending edits (values sent without an event) show as the fields' values and are listed under `pending`. Fitted to one answer like app_start's.
app_guideREAD THIS BEFORE WRITING ABAP for an app of your own. The complete guide to BUILDING an abap2UI5 app, live from the framework checkout (abap2UI5 docs/agents/building-apps.md, written to be self-contained so no web access is needed): the app class template and its lifecycle (check_on_init / check_on_event / check_on_navigated), the z2ui5_cl_ui5_view_builder chain, data binding, events, popups, navigation, and the rules that keep an app portable to the oldest supported UI5. Without arguments the whole guide comes back, chapter by chapter — it is meant to be read once at the start of a task. `sec…
app_listThe classes on the SAP system that app_start can start - an ADT class-name search (the system counterpart of the sandbox's app_list). `filter`: the start of the class name, `*` as a wildcard (default "Z"); at most 50 names, with description and package. Names only: whether a class implements z2ui5_if_app is not checked - app_start says so. Needs the ADT services and the user's authorization for them; starts nothing.
app_startStart an abap2UI5 app class on the SAP system and get its screen as an AGENT SNAPSHOT (v1): the fields you can fill (id, model path, label, kind, current value, editable, choice values), the actions you can fire (the event name and arguments of each button/link/row/value-help wire), the tables (columns, the first rows, selection), the messages (toast, message box, MessageStrip, field value states) and some static text - read from the real abap2UI5 JSON protocol, no browser. Continue with app_act using the snapshot's `session`. Optional `values` are applied as pending edits right after the star…
backendManage the local express backend serving the transpiled apps: status | start | stop | restart. run_app starts it automatically; use this for diagnostics or to free the port.
build_backendRebuild the transpiled Node backend so run_app and run_unit_tests pick up deployed/edited ABAP. Without an abap2UI5 checkout (the default on a fresh machine) mode auto is npm: the framework comes transpiled in the npm package @abap2ui5/node-runtime, installed once per release into ~/.abap2ui5-mcp (the registry's latest, or the release A2UI5_MCP_RUNTIME_VERSION pins; a minute the first time), and only the deployed apps are transpiled against it - seconds; no clone, no framework devDependencies. With a checkout (A2UI5_HOME or a sibling) auto is incremental when a prior build exists (only the dev…
build_logRead the full output of the LAST build_backend run — the tool result itself carries only a short tail, so this is how to see the error that tail cut off without paying another build. Returns the requested line slice plus when the build ran, its mode and how it ended (exit code, timeout, cancellation). Without `offset` the last `tail` lines come back; with it, `tail` lines from that line on (`start` and `totalLines` in the answer are the paging cursor; lines that do not fit one answer are left out and `cut` names the call that reads them, and a line longer than 4000 characters is shown shortene…
capabilitiesQuery what abap2UI5 can express, from the verified capability map (CAPABILITIES.md — every entry names a proving port). Call this BEFORE deciding a UI5 feature cannot be built. Without arguments returns a summary; with `query` and/or `status` returns matching entries (status: direct | workaround | needs-live-test | not-expressible) - paged: an answer stops at about 60,000 characters, and `more` names the `offset` to continue at.
deploy_appDeploy an abap2UI5 app: writes <class_name>.clas.abap (+ abapGit sidecar) into the dev sandbox - samples-controls' src/zz_dev/, else the abap2UI5 checkout's node/zz_dev/, else (no checkout at all, the default) the npm backend's ~/.abap2ui5-mcp/sandbox - and lints it (the corpus' abaplint config, or app-template's with the framework sources as the dependency: the lint a real project runs; on the npm backend the first lint installs its runtime, once). The class must implement z2ui5_if_app; ANY customer-namespace class name is accepted (zcl_my_app as much as z2ui5_cl_my_app), so an app of your ow…
docs_searchFull-text search over the abap2UI5 documentation site (abap2ui5.github.io/docs), from its markdown sources in the local docs checkout — the cookbook chapters, setup and configuration, the advanced guides. Use it for the prose the other tools do not carry: how a feature is meant to be used, which cookbook chapter walks through it, what the setup for a stack looks like. Each hit names the page, the best-matching heading, a snippet, and the published URL pair — `url` (the rendered page for a human) and `markdown` (the raw page, the one to fetch). Terms are AND-ed; `matches` counts every page that…
examplesFind a WORKING APP that already does what you are about to build, across ALL THREE sample repositories (live-read from their committed catalogues — catalogue.json, or SAMPLES.md on an older checkout): abap2UI5/samples (patterns — value help, navigation, trees, tables), abap2UI5/samples-controls (the UI5 demo kit rebuilt control by control — ask this for "how do I express sap.m.Wizard") and abap2UI5/samples-stack (apps that need an OData service, RAP, APC or the launchpad — only propose one when the user has that). This is the pattern question and it differs from `capabilities`, which answers w…
fix_viewApply the linter's MECHANICAL fixes to a source and get the corrected source back — nothing is written anywhere, you decide where it goes. Takes abap_source or xml exactly like validate_view (whose findings mark what this can clear with `fixable: true`): runs the property-gate findings, applies the fixes they carry (an obsolete client call renamed, a bare ABAP boolean moved onto the boolean parameter, a missing namespace declared), repeats until nothing more applies, and reports which findings were fixed and which remain — a remaining finding needs a decision a mechanical fix cannot make. The …
Show 16 more tools
generation_rulesThe rulebook for PORTING one official UI5 demo-kit sample to abap2UI5 as a z2ui5_cl_smpc_app_<n> class in the samples-controls corpus: what to do with the original Component.js/view.xml/controller, the corpus naming and file conventions, and the 1:1 fidelity rules its gates enforce. Use it when you are porting a named demo-kit sample. If you are building an app of your own, `app_guide` is the one you want — this document assumes an input sample you do not have and a corpus you are not writing into.
interact_appBoot an app class headless like run_app, then DRIVE it: a short script of actions — click a control (by its builder `id`, a CSS `selector` or its exact visible `text`), fill an input (`value`; the field is committed with Tab so the change event and its roundtrip fire), press a key, wait — performed in order against the running app, then the roundtrips settle and the result is photographed. This is the only tool that reaches the EVENT branch of `main( )` without a system: what a button does, what an input changes, whether a popup opens. Returns run_app's report plus one entry per action (perfor…
migrate_reportConvert a CLASSIC ABAP REPORT (REPORT ... PARAMETERS / SELECT-OPTIONS, event blocks, WRITE list, ALV) into an abap2UI5 app class of the abap-cloud-gui addon (inherits z2ui5_cl_cgui_report: selection_screen( ), start_of_selection( ), write( ), alv( ), message( )) - deterministically, by its converter report2cloud. Answers the generated files (class source, abapGit sidecar, local-class includes), the MIGRATION REPORT (markdown: the TODOs, the unreleased tables and APIs to replace for ABAP Cloud with successor hints, what was not carried over, every mapped construct by line) and the REFUSALS (fil…
pitfallsThe catalogues of defects a green CI does NOT catch, read live from the abap2UI5 checkout: `abap` covers ABAP that has to survive a real SAP system (abapGit round trip and import, activation, extended check, downport/transpiler, runtime), `view` covers the view side (names the 1.71 floor does not have, layout that only works on a newer release, views that fail to load rather than to render, CSP). Every entry is a defect that actually shipped. Read it before finishing a change — validate_view catches what a rule can decide, this is the rest. Paged by section, never cutting one: an answer stops …
read_appRead back the source of a DEPLOYED dev app exactly as it sits in the dev sandbox — the file run_app's backend was (or will be) built from — plus staleness: `staleInBackend: true` means the file is newer than the built backend, so run_app still boots the OLDER code until the next build_backend. Use it to check what is actually deployed before blaming an edit that never arrived; deploy_app writes, remove_app lists and deletes. A long class comes in pages of whole lines: `lines` says which, `next` names the `from_line` to call again with, and a `from_line` past the end answers the last line with …
read_exampleREAD the source of a sample the `examples` tool pointed at — the whole class, from the repository the hit named — without leaving the conversation. Pass `class` (the entry's class name, looked up across the three catalogues) or `repo` + `path` (as the entry carries them). Read live from the local checkout when there is one, fetched from GitHub otherwise, so an `examples` hit is always one call away from its code. A sample is a complete, gated app: read it whole, then take the pattern, not the file. A long one comes in pages of whole lines: `page` says which, `nextPage` names the `from_line` to…
remove_appRemove 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_appBoot an app class headless in Chromium against the local backend (?app_start=<class>) and LOOK at it: returns booted/ok, real page errors + failed backend calls (benign UI5 noise filtered; a repeated one listed once with its count, at most 20 distinct - `errorsCut` counts the rest; UI5 itself not loading - the CDN out of reach - is an error that says so, a theme or library that did not load a `ui5` note), and a full-page screenshot as an image (a page taller than 4096 px is pictured to that height, `screenshotCut` says so; the PNG is also saved and its path is `screenshot`, or `screenshotNotSa…
run_unit_testsRun the ABAP Unit tests in the transpiled backend — the local test classes deployed with an app (deploy_app `testclasses`, built by build_backend) — and get ASSERTIONS instead of a picture: which test methods ran, which the framework skips, and the first failure with its error. With `class_name` only that object's test classes run (the generated runner is filtered on it); without it every deployed app's tests run on the npm backend, and on a framework checkout every test of the transpiled tree, the framework's own included, which takes minutes. A test that passes here passes on the system too,…
scaffold_appThe files a NEW abap2UI5 project starts from, named after the app you are writing — served live from abap2UI5/app-template, the repository this ecosystem points people at to begin. Call this when the user wants an app of their own rather than a class to paste somewhere: `app_guide` tells you how to write the CLASS, this hands you everything AROUND it that you cannot invent — the abaplint config with the framework pinned at a release, the abap2ui5lint config the render gate needs, the CI workflow, the abapGit metadata, an AGENTS.md briefing for whoever works on the project next, and one working…
scope_ofAuthoritative in/out-of-scope verdict for UI5 control entities (exists since UI5 <= 1.71, not deprecated), read from the OpenUI5 source JSDoc. Needs an OpenUI5 checkout (OPENUI5_SRC or ../fork-openui5).
screenshot_viewLOOK at the view your ABAP builds, in seconds and without a system, a build or a backend. The view is reconstructed from the z2ui5_cl_ui5_view_builder calls (or taken as raw XML), seeded with a model derived from the class's own TYPES/DATA, rendered against the local OpenUI5 runtime and returned as an IMAGE. Use it while writing the view — beside validate_view, which says whether the view is legal; this says what it looks like, which is the half no finding can tell you (a control in the wrong aggregation, a layout that collapses, a table that is empty). Ask for several viewports at once (`size…
setup_statusWhat this server can do RIGHT NOW, in one read - call it first, or whenever a tool says something is missing: per repository whether a local checkout, the read-only GitHub mirror or nothing resolves (and the env var or clone that fixes it), which dev sandbox deploy_app writes into (the corpus, the framework checkout, or the npm backend's workspace sandbox when there is neither) and what is deployed there, which backend runs the apps (a framework checkout, or the npm package @abap2ui5/node-runtime: its release, where it is installed, its transpiler and abaplint, the open-abap-core commit, what …
system_statusWhich SAP system this server is connected to and whether it works: the abap2UI5 endpoint and user from the configuration (never the password), then ONE request to the endpoint that shows whether the host answers, the certificate is accepted, the logon works and what answers is the abap2UI5 start page (a form logon page or another service answers 200 too, and is not taken for a working logon) - each failure as a sentence that says what to change. Call it first, and whenever app_list or app_start says the system did not answer. A rejected logon is sent once and then refused here too, so a wrong …
validate_viewFast static validation via abap2UI5-linter, BEFORE the build/run loop: reconstructs the view from the z2ui5_cl_ui5_view_builder calls (or takes raw view XML), runs the UI5 property gate (@since floor, deprecation) and renders it headless with a typed mock model. Seconds instead of a build+boot — use it after writing ABAP, then deploy_app once it is clean. Each finding carries severity (error = the app breaks, warning = not necessarily on your target UI5, hint = advisory), a message and the line/column in the source you passed in, listed most severe first (source order within a severity); `coun…
verify_appThe whole loop in ONE call, stopping at the first stage that fails: validate (the linter's gates over the source, seconds), deploy (write the class and its test include into the sandbox, abaplint it), build (build_backend mode auto - incremental after the first time), unit (run_unit_tests for the class, when test classes were given) and boot (run_app: the running app, its errors and a screenshot). Returns every stage's result under `stages`, `ok`, and `stoppedAt` naming the stage that failed (the call is then an error result, isError) - so one call answers "is this app right", and the stage th…
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Weekly downloads
- 54
- Last commit
- Oct 22, 2026 (8 days ago)
- Last release
- Oct 14, 2026 (16 days ago)
- Last package publish
- Oct 14, 2026 (16 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.abap2UI5/mcp-server- Version
- 1.0.0
- Auth
- API key
- Packages
- npm @abap2ui5/mcp-server
- License
- MIT
- Repository
- github.com/abap2UI5/mcp-server
- First seen
- Oct 24, 2026
- Last checked
- Oct 25, 2026
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get abap2UI5 running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
abap2UI5 MCP server. Agent Mart. https://agentmart.dev/connectors/abap2ui5-mcp-server (last updated 2026-10-25)