NestDaddy

abap2UI5

io.github.abap2UI5/mcp-server ยท v1.0.0

abap2UI5 dev loop for AI agents: validate views, screenshot, deploy and run apps - no SAP system

Connect Runs on your machine

Terminal
claude mcp add mcp-server -e AI_VIEW_CHECK_HOME=<AI_VIEW_CHECK_HOME> -e A2UI5_HOME=<A2UI5_HOME> -e SAMPLES_CONTROLS_HOME=<SAMPLES_CONTROLS_HOME> -e SAMPLES_HOME=<SAMPLES_HOME> -e SAMPLES_STACK_HOME=<SAMPLES_STACK_HOME> -e APP_TEMPLATE_HOME=<APP_TEMPLATE_HOME> -e DOCS_HOME=<DOCS_HOME> -e ABAP_CLOUD_GUI_HOME=<ABAP_CLOUD_GUI_HOME> -e POPUPS_HOME=<POPUPS_HOME> -e OPENUI5_SRC=<OPENUI5_SRC> -e A2UI5_MCP_WORKSPACE=<A2UI5_MCP_WORKSPACE> -e A2UI5_MCP_BACKEND=<A2UI5_MCP_BACKEND> -e A2UI5_MCP_RUNTIME_VERSION=<A2UI5_MCP_RUNTIME_VERSION> -e A2UI5_MCP_PORT=<A2UI5_MCP_PORT> -e A2UI5_MCP_UI=<A2UI5_MCP_UI> -e A2UI5_MCP_APP_FORMAT=<A2UI5_MCP_APP_FORMAT> -e A2UI5_MCP_OFFLINE=<A2UI5_MCP_OFFLINE> -e A2UI5_MCP_REMOTE=<A2UI5_MCP_REMOTE> -e A2UI5_MCP_REMOTE_DIR=<A2UI5_MCP_REMOTE_DIR> -e A2UI5_MCP_REMOTE_TTL_MS=<A2UI5_MCP_REMOTE_TTL_MS> -e A2UI5_MCP_UI5_CACHE_MB=<A2UI5_MCP_UI5_CACHE_MB> -e A2UI5_MCP_RENDER_PAGES=<A2UI5_MCP_RENDER_PAGES> -e A2UI5_MCP_CHROMIUM=<A2UI5_MCP_CHROMIUM> -e A2UI5_MCP_SCREENSHOT_DIR=<A2UI5_MCP_SCREENSHOT_DIR> -e A2UI5_MCP_PREBUILT_URL=<A2UI5_MCP_PREBUILT_URL> -e A2UI5_MCP_LINT_WORKER=<A2UI5_MCP_LINT_WORKER> -e A2UI5_MCP_LINT_IDLE_MS=<A2UI5_MCP_LINT_IDLE_MS> -e A2UI5_MCP_LINT_TIMEOUT_MS=<A2UI5_MCP_LINT_TIMEOUT_MS> -e A2UI5_MCP_SCOPE_TIMEOUT_MS=<A2UI5_MCP_SCOPE_TIMEOUT_MS> -e A2UI5_MCP_BUILD_TIMEOUT_MS=<A2UI5_MCP_BUILD_TIMEOUT_MS> -e A2UI5_MCP_UNIT_TIMEOUT_MS=<A2UI5_MCP_UNIT_TIMEOUT_MS> -e A2UI5_MCP_SYSTEM_URL=<A2UI5_MCP_SYSTEM_URL> -e A2UI5_MCP_SYSTEM_USER=<A2UI5_MCP_SYSTEM_USER> -e A2UI5_MCP_SYSTEM_PASSWORD=<A2UI5_MCP_SYSTEM_PASSWORD> -e A2UI5_MCP_SYSTEM_PASSWORD_CMD=<A2UI5_MCP_SYSTEM_PASSWORD_CMD> -e A2UI5_MCP_SYSTEM_INSECURE_TLS=<A2UI5_MCP_SYSTEM_INSECURE_TLS> -e GITHUB_TOKEN=<GITHUB_TOKEN> -- npx -y @abap2ui5/[email protected]
claude_desktop_config.json
{
  "mcpServers": {
    "mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@abap2ui5/[email protected]"
      ],
      "env": {
        "AI_VIEW_CHECK_HOME": "<AI_VIEW_CHECK_HOME>",
        "A2UI5_HOME": "<A2UI5_HOME>",
        "SAMPLES_CONTROLS_HOME": "<SAMPLES_CONTROLS_HOME>",
        "SAMPLES_HOME": "<SAMPLES_HOME>",
        "SAMPLES_STACK_HOME": "<SAMPLES_STACK_HOME>",
        "APP_TEMPLATE_HOME": "<APP_TEMPLATE_HOME>",
        "DOCS_HOME": "<DOCS_HOME>",
        "ABAP_CLOUD_GUI_HOME": "<ABAP_CLOUD_GUI_HOME>",
        "POPUPS_HOME": "<POPUPS_HOME>",
        "OPENUI5_SRC": "<OPENUI5_SRC>",
        "A2UI5_MCP_WORKSPACE": "<A2UI5_MCP_WORKSPACE>",
        "A2UI5_MCP_BACKEND": "<A2UI5_MCP_BACKEND>",
        "A2UI5_MCP_RUNTIME_VERSION": "<A2UI5_MCP_RUNTIME_VERSION>",
        "A2UI5_MCP_PORT": "<A2UI5_MCP_PORT>",
        "A2UI5_MCP_UI": "<A2UI5_MCP_UI>",
        "A2UI5_MCP_APP_FORMAT": "<A2UI5_MCP_APP_FORMAT>",
        "A2UI5_MCP_OFFLINE": "<A2UI5_MCP_OFFLINE>",
        "A2UI5_MCP_REMOTE": "<A2UI5_MCP_REMOTE>",
        "A2UI5_MCP_REMOTE_DIR": "<A2UI5_MCP_REMOTE_DIR>",
        "A2UI5_MCP_REMOTE_TTL_MS": "<A2UI5_MCP_REMOTE_TTL_MS>",
        "A2UI5_MCP_UI5_CACHE_MB": "<A2UI5_MCP_UI5_CACHE_MB>",
        "A2UI5_MCP_RENDER_PAGES": "<A2UI5_MCP_RENDER_PAGES>",
        "A2UI5_MCP_CHROMIUM": "<A2UI5_MCP_CHROMIUM>",
        "A2UI5_MCP_SCREENSHOT_DIR": "<A2UI5_MCP_SCREENSHOT_DIR>",
        "A2UI5_MCP_PREBUILT_URL": "<A2UI5_MCP_PREBUILT_URL>",
        "A2UI5_MCP_LINT_WORKER": "<A2UI5_MCP_LINT_WORKER>",
        "A2UI5_MCP_LINT_IDLE_MS": "<A2UI5_MCP_LINT_IDLE_MS>",
        "A2UI5_MCP_LINT_TIMEOUT_MS": "<A2UI5_MCP_LINT_TIMEOUT_MS>",
        "A2UI5_MCP_SCOPE_TIMEOUT_MS": "<A2UI5_MCP_SCOPE_TIMEOUT_MS>",
        "A2UI5_MCP_BUILD_TIMEOUT_MS": "<A2UI5_MCP_BUILD_TIMEOUT_MS>",
        "A2UI5_MCP_UNIT_TIMEOUT_MS": "<A2UI5_MCP_UNIT_TIMEOUT_MS>",
        "A2UI5_MCP_SYSTEM_URL": "<A2UI5_MCP_SYSTEM_URL>",
        "A2UI5_MCP_SYSTEM_USER": "<A2UI5_MCP_SYSTEM_USER>",
        "A2UI5_MCP_SYSTEM_PASSWORD": "<A2UI5_MCP_SYSTEM_PASSWORD>",
        "A2UI5_MCP_SYSTEM_PASSWORD_CMD": "<A2UI5_MCP_SYSTEM_PASSWORD_CMD>",
        "A2UI5_MCP_SYSTEM_INSECURE_TLS": "<A2UI5_MCP_SYSTEM_INSECURE_TLS>",
        "GITHUB_TOKEN": "<GITHUB_TOKEN>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@abap2ui5/[email protected]"
      ],
      "env": {
        "AI_VIEW_CHECK_HOME": "<AI_VIEW_CHECK_HOME>",
        "A2UI5_HOME": "<A2UI5_HOME>",
        "SAMPLES_CONTROLS_HOME": "<SAMPLES_CONTROLS_HOME>",
        "SAMPLES_HOME": "<SAMPLES_HOME>",
        "SAMPLES_STACK_HOME": "<SAMPLES_STACK_HOME>",
        "APP_TEMPLATE_HOME": "<APP_TEMPLATE_HOME>",
        "DOCS_HOME": "<DOCS_HOME>",
        "ABAP_CLOUD_GUI_HOME": "<ABAP_CLOUD_GUI_HOME>",
        "POPUPS_HOME": "<POPUPS_HOME>",
        "OPENUI5_SRC": "<OPENUI5_SRC>",
        "A2UI5_MCP_WORKSPACE": "<A2UI5_MCP_WORKSPACE>",
        "A2UI5_MCP_BACKEND": "<A2UI5_MCP_BACKEND>",
        "A2UI5_MCP_RUNTIME_VERSION": "<A2UI5_MCP_RUNTIME_VERSION>",
        "A2UI5_MCP_PORT": "<A2UI5_MCP_PORT>",
        "A2UI5_MCP_UI": "<A2UI5_MCP_UI>",
        "A2UI5_MCP_APP_FORMAT": "<A2UI5_MCP_APP_FORMAT>",
        "A2UI5_MCP_OFFLINE": "<A2UI5_MCP_OFFLINE>",
        "A2UI5_MCP_REMOTE": "<A2UI5_MCP_REMOTE>",
        "A2UI5_MCP_REMOTE_DIR": "<A2UI5_MCP_REMOTE_DIR>",
        "A2UI5_MCP_REMOTE_TTL_MS": "<A2UI5_MCP_REMOTE_TTL_MS>",
        "A2UI5_MCP_UI5_CACHE_MB": "<A2UI5_MCP_UI5_CACHE_MB>",
        "A2UI5_MCP_RENDER_PAGES": "<A2UI5_MCP_RENDER_PAGES>",
        "A2UI5_MCP_CHROMIUM": "<A2UI5_MCP_CHROMIUM>",
        "A2UI5_MCP_SCREENSHOT_DIR": "<A2UI5_MCP_SCREENSHOT_DIR>",
        "A2UI5_MCP_PREBUILT_URL": "<A2UI5_MCP_PREBUILT_URL>",
        "A2UI5_MCP_LINT_WORKER": "<A2UI5_MCP_LINT_WORKER>",
        "A2UI5_MCP_LINT_IDLE_MS": "<A2UI5_MCP_LINT_IDLE_MS>",
        "A2UI5_MCP_LINT_TIMEOUT_MS": "<A2UI5_MCP_LINT_TIMEOUT_MS>",
        "A2UI5_MCP_SCOPE_TIMEOUT_MS": "<A2UI5_MCP_SCOPE_TIMEOUT_MS>",
        "A2UI5_MCP_BUILD_TIMEOUT_MS": "<A2UI5_MCP_BUILD_TIMEOUT_MS>",
        "A2UI5_MCP_UNIT_TIMEOUT_MS": "<A2UI5_MCP_UNIT_TIMEOUT_MS>",
        "A2UI5_MCP_SYSTEM_URL": "<A2UI5_MCP_SYSTEM_URL>",
        "A2UI5_MCP_SYSTEM_USER": "<A2UI5_MCP_SYSTEM_USER>",
        "A2UI5_MCP_SYSTEM_PASSWORD": "<A2UI5_MCP_SYSTEM_PASSWORD>",
        "A2UI5_MCP_SYSTEM_PASSWORD_CMD": "<A2UI5_MCP_SYSTEM_PASSWORD_CMD>",
        "A2UI5_MCP_SYSTEM_INSECURE_TLS": "<A2UI5_MCP_SYSTEM_INSECURE_TLS>",
        "GITHUB_TOKEN": "<GITHUB_TOKEN>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@abap2ui5/[email protected]"
      ],
      "env": {
        "AI_VIEW_CHECK_HOME": "<AI_VIEW_CHECK_HOME>",
        "A2UI5_HOME": "<A2UI5_HOME>",
        "SAMPLES_CONTROLS_HOME": "<SAMPLES_CONTROLS_HOME>",
        "SAMPLES_HOME": "<SAMPLES_HOME>",
        "SAMPLES_STACK_HOME": "<SAMPLES_STACK_HOME>",
        "APP_TEMPLATE_HOME": "<APP_TEMPLATE_HOME>",
        "DOCS_HOME": "<DOCS_HOME>",
        "ABAP_CLOUD_GUI_HOME": "<ABAP_CLOUD_GUI_HOME>",
        "POPUPS_HOME": "<POPUPS_HOME>",
        "OPENUI5_SRC": "<OPENUI5_SRC>",
        "A2UI5_MCP_WORKSPACE": "<A2UI5_MCP_WORKSPACE>",
        "A2UI5_MCP_BACKEND": "<A2UI5_MCP_BACKEND>",
        "A2UI5_MCP_RUNTIME_VERSION": "<A2UI5_MCP_RUNTIME_VERSION>",
        "A2UI5_MCP_PORT": "<A2UI5_MCP_PORT>",
        "A2UI5_MCP_UI": "<A2UI5_MCP_UI>",
        "A2UI5_MCP_APP_FORMAT": "<A2UI5_MCP_APP_FORMAT>",
        "A2UI5_MCP_OFFLINE": "<A2UI5_MCP_OFFLINE>",
        "A2UI5_MCP_REMOTE": "<A2UI5_MCP_REMOTE>",
        "A2UI5_MCP_REMOTE_DIR": "<A2UI5_MCP_REMOTE_DIR>",
        "A2UI5_MCP_REMOTE_TTL_MS": "<A2UI5_MCP_REMOTE_TTL_MS>",
        "A2UI5_MCP_UI5_CACHE_MB": "<A2UI5_MCP_UI5_CACHE_MB>",
        "A2UI5_MCP_RENDER_PAGES": "<A2UI5_MCP_RENDER_PAGES>",
        "A2UI5_MCP_CHROMIUM": "<A2UI5_MCP_CHROMIUM>",
        "A2UI5_MCP_SCREENSHOT_DIR": "<A2UI5_MCP_SCREENSHOT_DIR>",
        "A2UI5_MCP_PREBUILT_URL": "<A2UI5_MCP_PREBUILT_URL>",
        "A2UI5_MCP_LINT_WORKER": "<A2UI5_MCP_LINT_WORKER>",
        "A2UI5_MCP_LINT_IDLE_MS": "<A2UI5_MCP_LINT_IDLE_MS>",
        "A2UI5_MCP_LINT_TIMEOUT_MS": "<A2UI5_MCP_LINT_TIMEOUT_MS>",
        "A2UI5_MCP_SCOPE_TIMEOUT_MS": "<A2UI5_MCP_SCOPE_TIMEOUT_MS>",
        "A2UI5_MCP_BUILD_TIMEOUT_MS": "<A2UI5_MCP_BUILD_TIMEOUT_MS>",
        "A2UI5_MCP_UNIT_TIMEOUT_MS": "<A2UI5_MCP_UNIT_TIMEOUT_MS>",
        "A2UI5_MCP_SYSTEM_URL": "<A2UI5_MCP_SYSTEM_URL>",
        "A2UI5_MCP_SYSTEM_USER": "<A2UI5_MCP_SYSTEM_USER>",
        "A2UI5_MCP_SYSTEM_PASSWORD": "<A2UI5_MCP_SYSTEM_PASSWORD>",
        "A2UI5_MCP_SYSTEM_PASSWORD_CMD": "<A2UI5_MCP_SYSTEM_PASSWORD_CMD>",
        "A2UI5_MCP_SYSTEM_INSECURE_TLS": "<A2UI5_MCP_SYSTEM_INSECURE_TLS>",
        "GITHUB_TOKEN": "<GITHUB_TOKEN>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
AI_VIEW_CHECK_HOME
Optional
Checkout or install of @abap2ui5/linter (validate_view, fix_view, screenshot_view). Default: the peer npm installs beside the server. A set value is authoritative.
A2UI5_HOME
Optional
abap2UI5 framework checkout (app_guide, api_reference, pitfalls; backend when present). Default: ../abap2UI5, else the GitHub mirror and the npm runtime.
SAMPLES_CONTROLS_HOME
Optional
samples-controls checkout (capabilities, examples, generation_rules, scope_of, UI5 for screenshots). Default: ../samples-controls, else the GitHub mirror.
SAMPLES_HOME
Optional
abap2UI5/samples checkout, one of the catalogues examples searches. Default: ../samples, else the GitHub mirror.
SAMPLES_STACK_HOME
Optional
abap2UI5/samples-stack checkout (OData, RAP, APC, launchpad samples). Default: ../samples-stack, else the GitHub mirror.
APP_TEMPLATE_HOME
Optional
abap2UI5/app-template checkout that scaffold_app serves and add_agent_setup executes. Default: ../app-template, else the GitHub mirror.
DOCS_HOME
Optional
abap2UI5/docs checkout that docs_search reads. Default: ../docs, else the GitHub mirror.
ABAP_CLOUD_GUI_HOME
Optional
abap2UI5-addons/abap-cloud-gui checkout (with npm ci done) whose report2cloud converter migrate_report runs. Default: ../abap-cloud-gui; no mirror.
POPUPS_HOME
Optional
abap2UI5-addons/popups checkout whose popups migrate_report with deploy: true writes into the dev sandbox beside the converted class. Default: .deps/popups of the abap-cloud-gui checkout, ../popups beside it, then its build/popups.
OPENUI5_SRC
Optional
OpenUI5 source checkout scope_of reads the JSDoc from (via samples-controls). Default: ../fork-openui5 next to samples-controls.
A2UI5_MCP_WORKSPACE
Optional
Where the npm backend installs, the dev sandbox lives and a framework clone lands. Default: ~/.abap2ui5-mcp.
A2UI5_MCP_BACKEND
Optional
Which backend runs the apps: npm (the @abap2ui5/node-runtime package, even beside a checkout) or clone (clone the framework). Default: decided per call.
A2UI5_MCP_RUNTIME_VERSION
Optional
Pin the @abap2ui5/node-runtime release (X.Y.Z) the npm backend installs. Default: the registry's latest.
A2UI5_MCP_PORT
Optional
Port of the local backend run_app boots against. Default: 3000.
A2UI5_MCP_UI
Optional
Whether app_start/app_describe/app_act declare their MCP Apps screen (ui://abap2ui5/app-screen): auto (default - when the client advertises the io.modelcontextprotocol/ui extension), on, off.
A2UI5_MCP_APP_FORMAT
Optional
The default answer format of the app tools: snapshot (default) or adaptive-card (the snapshot plus an Adaptive Card 1.5 as an embedded resource, for card-rendering hosts).
A2UI5_MCP_OFFLINE
Optional
Set to 1 for no network: no UI5 CDN fallback, no GitHub mirror, no registry lookup.
A2UI5_MCP_REMOTE
Optional
Set to 0 to switch off the read-only GitHub mirror used when no checkout is found.
A2UI5_MCP_REMOTE_DIR
Optional
Cache directory of the GitHub mirror. Default: <tmp>/abap2ui5-mcp-remote.
A2UI5_MCP_REMOTE_TTL_MS
Optional
How long a mirrored copy is used before it is refreshed, in milliseconds. Default: one day.
A2UI5_MCP_UI5_CACHE_MB
Optional
How many MB of UI5 answers from the CDN (sdk.openui5.org) run_app and interact_app keep in memory across calls, so a second boot does not download them again. 0 switches the cache off. Default: 64.
A2UI5_MCP_RENDER_PAGES
Optional
Pages (Chromium tabs) of validate_view's warm render gate, which concurrent calls queue on. Default: 2 (1 to 8).
A2UI5_MCP_CHROMIUM
Optional
Chromium binary for run_app and interact_app. Default: CHROMIUM_BIN, Playwright's managed browser, then a system chromium.
A2UI5_MCP_SCREENSHOT_DIR
Optional
Where run_app and interact_app write their PNGs (the newest 50 are kept) and build_backend its log. Default: <tmp>/abap2ui5-mcp-screenshots.
A2UI5_MCP_PREBUILT_URL
Optional
Where build_backend mode prebuilt downloads the backend from. Default: the framework's release asset.
A2UI5_MCP_LINT_WORKER
Optional
Set to 0 to run every lint as a fresh abaplint process. Default: a long-lived worker keeps @abaplint/core with the framework parsed and lints a deploy in milliseconds (the CLI runs whenever the worker cannot stand in for it).
A2UI5_MCP_LINT_IDLE_MS
Optional
How long the warm lint worker (about 300 MB with the framework parsed) is kept without a request before it exits, in milliseconds; the next lint starts a fresh one. 0 keeps it for the server's life. Default: 10 minutes.
A2UI5_MCP_LINT_TIMEOUT_MS
Optional
Hard timeout of the abaplint run, in milliseconds. Default: 5 minutes.
A2UI5_MCP_SCOPE_TIMEOUT_MS
Optional
Hard timeout of scope_of, in milliseconds. Default: 5 minutes.
A2UI5_MCP_BUILD_TIMEOUT_MS
Optional
Hard timeout of a build, the prebuilt download and the npm install, in milliseconds. Default: 30 minutes.
A2UI5_MCP_UNIT_TIMEOUT_MS
Optional
Hard timeout of the ABAP Unit runner, in milliseconds. Default: 10 minutes.
A2UI5_MCP_SYSTEM_URL
Optional
Switches on the SYSTEM MODE: the app tools against this real SAP system instead of the sandbox loop. The launch URL, e.g. https://host:44300/sap/bc/z2ui5?app_start={class}&sap-client=100.
A2UI5_MCP_SYSTEM_USER
Optional
System mode: the SAP user the app tools log on with (Basic authentication).
A2UI5_MCP_SYSTEM_PASSWORD
Optional, secret
System mode: the password of A2UI5_MCP_SYSTEM_USER. Or A2UI5_MCP_SYSTEM_PASSWORD_CMD, to keep it out of the configuration.
A2UI5_MCP_SYSTEM_PASSWORD_CMD
Optional
System mode: a shell command that prints the password (a keychain lookup) - instead of A2UI5_MCP_SYSTEM_PASSWORD.
A2UI5_MCP_SYSTEM_INSECURE_TLS
Optional
System mode: set to 1 to accept a certificate that cannot be verified. NODE_EXTRA_CA_CERTS with the CA is the better fix.
GITHUB_TOKEN
Optional, secret
Optional token sent to api.github.com only, to raise the rate limit of the docs tree listing (GH_TOKEN is read too).

Details

Package@abap2ui5/[email protected] (NPM, stdio)
First published14 Oct 2026
Last updated14 Oct 2026
Registry nameio.github.abap2UI5/mcp-server

More cloud and devops servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.