{"ref":"artifact:abap2ui5-mcp-server","page":"/artifacts/abap2ui5-mcp-server","json":"/artifacts/abap2ui5-mcp-server.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"abap2ui5-mcp-server","name":"@abap2ui5/mcp-server","artifact_type":"mcp-server","ecosystem":"abap","domain":"ai-and-agents","secondary_domains":["developer-experience"],"origin_ring":"community-org","use_as":"dependency","description":{"one_line":"An MCP server that puts the abap2UI5 development loop on the machine an agent runs on: check the view the ABAP builds, photograph it, deploy the class into a sandbox, boot the app headless and read the errors.","short":"MCP server for the abap2UI5 check, deploy and run loop","what_it_solves":"An agent asked to write an [abap2UI5](artifact:abap2ui5-abap2ui5) app can write the ABAP; finding out whether it works has needed a system to activate the class in. This server puts that loop on the local machine: `validate_view` and `screenshot_view` reconstruct the UI5 view the builder chain produces and answer with findings and a picture, `deploy_app` writes the class and its abapGit sidecar into a gitignored sandbox and runs [abaplint](artifact:abaplint-abaplint) over it against the framework sources, `build_backend` transpiles the deployed apps to Node, `run_app` boots one headless and answers with the page errors and a screenshot, and `run_unit_tests` runs the apps' ABAP Unit tests in the open-abap runtime. The knowledge tools (`app_guide`, `api_reference`, `pitfalls`, `examples`, `docs_search`) read the project's committed files from a checkout, or from GitHub when no checkout resolves; the view gates come from the project's [linter](https://github.com/abap2UI5/linter), which npm installs beside the server as its declared peer dependency. The `app_*` tools drive a running app over the abap2UI5 JSON protocol and answer with an agent snapshot of the screen: the fields an agent may fill and the events it may fire, each act checked against that snapshot before it is sent. Getting a finished app onto a real system stays [abapGit](artifact:abapgit-abapgit); with `A2UI5_MCP_SYSTEM_URL` set the same server offers the app tools against a configured system instead of the sandbox.","when_not_to_use":"Every gate here runs off-system, so what the class does on a real system and what the view does on the oldest UI5 release it has to serve are what the `pitfalls` catalogues carry and no local run can see. It runs abap2UI5 app classes, so ABAP that is not one has nothing here to deploy into. In system mode the sandbox tools are not offered, and an `app_act` event runs on the system as the configured user.","to_build_on_it":"The agent snapshot the `app_*` tools answer with is written down as a contract in `docs/agent-snapshot.md`, which carries its derivation rules and the deviations from the original contract, and the project's VS Code extension and its ABAP agent add-on implement the same shape, so another client can read it. `bench/` holds abap2UI5-bench, which measures how often an agent's abap2UI5 app passes the template's gates with and without this server; it is a package of its own and not part of the published server."},"links":{"repo":"https://github.com/abap2UI5/mcp-server","npm":"https://www.npmjs.com/package/@abap2ui5/mcp-server","docs":"https://abap2ui5.github.io/docs/advanced/mcp_server.html"},"compat":{"runtimes":["node"]},"type_properties":{"transports":{"value":["stdio"],"sources":[{"url":"https://github.com/abap2ui5/mcp-server","title":"abap2UI5/mcp-server — README, one-click install","checked":"2026-10-17","quote":"Every button registers the same stdio server, named `abap2ui5`"}]}},"part_of":{"ref":"artifact:abap2ui5-abap2ui5","sources":[{"url":"https://abap2ui5.github.io/docs/advanced/tooling.html","title":"abap2UI5 documentation — Tooling","checked":"2026-10-17","quote":"Every one of them is a repository of its own under abap2UI5 on GitHub and installs with one command."}]},"provides":[{"capability":"capability:agent-code-access","what_it_does":"Gives a coding agent the off-system loop for an abap2UI5 app class: the view the ABAP builds is reconstructed and checked, the class is written into a gitignored sandbox and linted with abaplint against the framework context, the deployed apps are transpiled to Node and booted headless with the page errors and a screenshot returned, and the app's own ABAP Unit tests run in the open-abap runtime. The framework's guide, its client API and its pitfall catalogues are read live from the repositories instead of recalled.","facets":[{"key":"read_source","value":true,"source":{"url":"https://abap2ui5.github.io/docs/advanced/mcp_server.html","title":"abap2UI5 documentation — MCP Server, read_app","checked":"2026-10-17","quote":"A deployed app's source, read back as it sits in the sandbox, and whether the built backend already carries it"}},{"key":"write_source","value":true,"source":{"url":"https://abap2ui5.github.io/docs/advanced/mcp_server.html","title":"abap2UI5 documentation — MCP Server, deploy_app","checked":"2026-10-17","quote":"Write the class plus its abapGit sidecar (and its test classes) into a gitignored sandbox and abaplint it against the full framework context"}},{"key":"syntax_check","value":true,"source":{"url":"https://abap2ui5.github.io/docs/advanced/mcp_server.html","title":"abap2UI5 documentation — MCP Server, validate_view","checked":"2026-10-17","quote":"the linter 's gates, from ABAP source or raw XML, judged by your project's own abap2ui5lint.jsonc"}},{"key":"unit_tests","value":true,"source":{"url":"https://abap2ui5.github.io/docs/advanced/mcp_server.html","title":"abap2UI5 documentation — MCP Server, run_unit_tests","checked":"2026-10-17","quote":"The test classes deployed with an app, run in the open-abap runtime: assertions , not pictures"}},{"key":"run_code","value":true,"source":{"url":"https://abap2ui5.github.io/docs/advanced/mcp_server.html","title":"abap2UI5 documentation — MCP Server, run_app","checked":"2026-10-17","quote":"Boot any app class headless, return boot status, real page errors (benign UI5 noise filtered) and a full-page screenshot as an image"}}],"sources":[{"url":"https://abap2ui5.github.io/docs/advanced/mcp_server.html","title":"abap2UI5 documentation — MCP Server","checked":"2026-10-17","quote":"Those tools let it check a view, look at a picture of it , deploy the class into a local sandbox, transpile it to Node beside the framework, boot the app in a headless browser and read the errors — all on your machine, with no SAP system involved ."},{"url":"https://abap2ui5.github.io/docs/advanced/mcp_server.html","title":"abap2UI5 documentation — MCP Server, api_reference","checked":"2026-10-17","quote":"The client API an app calls, z2ui5_if_client , parsed live with its ABAP-Doc : methods, parameters, defaults and the cs_* constants, looked up instead of guessed"}]},{"capability":"capability:abap-unit-testing","what_it_does":"Runs the ABAP Unit tests of the deployed app classes in the open-abap runtime, and offers the same run outside an agent session as the `abap2ui5-unit` command and a GitHub Action over a repository's own classes.","sources":[{"url":"https://abap2ui5.github.io/docs/advanced/mcp_server.html","title":"abap2UI5 documentation — MCP Server, run_unit_tests","checked":"2026-10-17","quote":"The test classes deployed with an app, run in the open-abap runtime: assertions , not pictures"},{"url":"https://github.com/abap2ui5/mcp-server","title":"abap2UI5/mcp-server — README, unit tests in CI","checked":"2026-10-17","quote":"The same runtime runs an app repository's ABAP Unit tests in GitHub Actions (or at a terminal): `@abap2ui5/node-runtime` at the release the project's `abaplint.jsonc` pins, installed once and cached, the classes transpiled against it, the tests run through the generated runner"}]},{"capability":"capability:agent-systems-access","what_it_does":"With `A2UI5_MCP_SYSTEM_URL` set, the same server offers only the app tools against a configured SAP system: list app classes from the ADT quick search, start one, read its agent snapshot and fire its events as the configured user over Basic authentication. The sandbox tools are not offered in that mode, and an act runs for real.","sources":[{"url":"https://github.com/abap2ui5/mcp-server","title":"abap2UI5/mcp-server — README, system mode","checked":"2026-10-17","quote":"Start an app on the system and get its agent snapshot — the same snapshot, arguments and refusals as the sandbox's `app_start`"},{"url":"https://github.com/abap2ui5/mcp-server","title":"abap2UI5/mcp-server — README, system mode, app_act","checked":"2026-10-17","quote":"Fill fields and fire an event, validated against the snapshot, sent as the real model delta — **runs for real**"}]}],"requires":[{"ref":"artifact:abap2ui5-abap2ui5","requirement":"required","basis":"binding","role":"framework","for":"The backend the deployed apps run on: `build_backend` downloads the released backend of a framework checkout where there is one, and otherwise installs the framework already transpiled from npm and transpiles only the deployed apps against it.","sources":[{"url":"https://abap2ui5.github.io/docs/advanced/mcp_server.html","title":"abap2UI5 documentation — MCP Server, Level 3","checked":"2026-10-17","quote":"No abap2UI5 checkout (server releases after 0.2.0): it installs the npm package @abap2ui5/node-runtime — the framework, already transpiled — once per release into ~/.abap2ui5-mcp , and transpiles only the deployed apps against it."}]},{"ref":"external:playwright","requirement":"conditional","condition":"A tool that renders or boots in a browser is used: `screenshot_view`, `run_app` or `interact_app`","basis":"binding","role":"headless-browser","for":"The browser the reconstructed view is rendered in and the app is booted in; `A2UI5_MCP_CHROMIUM` or a system chromium can stand in for the Playwright-managed one.","sources":[{"url":"https://abap2ui5.github.io/docs/advanced/mcp_server.html","title":"abap2UI5 documentation — MCP Server, Level 1","checked":"2026-10-17","quote":"screenshot_view additionally needs the linter's render runtime and a browser — npm i -D @abap2ui5/linter-render && npx playwright install chromium in the linter checkout."}]}],"connects":[{"ref":"artifact:abap2ui5-abap2ui5","kind":"data","direction":"outbound","condition":"System mode: `A2UI5_MCP_SYSTEM_URL` is set","for":"Starting an app on a real system and firing its events over the abap2UI5 JSON protocol at the launch URL, logged on as the configured user; the client does the CSRF token handshake and keeps the stateful session's `sap-contextid`.","sources":[{"url":"https://github.com/abap2ui5/mcp-server","title":"abap2UI5/mcp-server — README, system mode variables","checked":"2026-10-17","quote":"The launch URL as the VS Code extension's F9 knows it, `{class}` as a query parameter — or the endpoint without the class. Switches the mode on"},{"url":"https://github.com/abap2ui5/mcp-server","title":"abap2UI5/mcp-server — README, system mode, protocol client","checked":"2026-10-17","quote":"The protocol client is the sandbox's (`lib/appclient.mjs`): it does the CSRF token handshake and keeps the stateful session's `sap-contextid` itself; this mode adds the logon, the system's cookies and the start location (`lib/system.mjs`)."}]},{"ref":"external:github","kind":"data","direction":"outbound","condition":"No checkout resolves and no environment variable points at one","for":"Reading the repositories' committed knowledge files into a per-user cache kept for a day, and listing the documentation's pages through the GitHub API.","sources":[{"url":"https://abap2ui5.github.io/docs/advanced/mcp_server.html","title":"abap2UI5 documentation — MCP Server, Level 0","checked":"2026-10-17","quote":"With no checkout there, they read the same files from GitHub, kept for a day in a per-user cache."},{"url":"https://abap2ui5.github.io/docs/advanced/mcp_server.html","title":"abap2UI5 documentation — MCP Server, Level 0, API limit","checked":"2026-10-17","quote":"The docs mirror lists its pages through GitHub's API, which allows 60 unauthenticated requests an hour; a GITHUB_TOKEN in the environment raises that."}]}],"maintainers":["actor:abap2ui5","actor:oblomov-dev"],"provenance":{"discovered_via":[{"source":"source:github"}],"first_seen":"2026-10-17"},"drafted_with_ai":true,"contributors":["actor:oblomov-dev"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"good","evidence":"released this month"},{"label":"Continuity","tier":"good","evidence":"3 contributors, 1 publisher, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"good","evidence":"ci green, 2026-10-22"}],"practice":[{"label":"Tests","tier":"good","evidence":"70 test files, npm test"},{"label":"Docs","tier":"good","evidence":"docs/ with 1 page, docs site, README 42 KB"},{"label":"Changelog","tier":"good","evidence":"CHANGELOG in the repo"}],"reach":[{"value":54,"unit":"installs/week"},{"value":1,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","latest_version":"1.0.0","majors":{"1":{"version":"1.0.0","date":"2026-10-14"},"0.1":{"version":"0.1.0","date":"2026-08-18"},"0.2":{"version":"0.2.0","date":"2026-09-27"},"0.3":{"version":"0.3.0","date":"2026-09-30"}},"license":"MIT","first_release":"2026-08-18","last_release":"2026-10-14","releases":5,"cadence_days":14,"maintainers":1,"repository":"git+https://github.com/abap2UI5/mcp-server.git","repository_directory":null,"peer_cds":null,"dependencies":2,"node_engine":">=22","test_script":true,"types":false,"downloads_weekly":54,"downloads_monthly":491,"stars":1,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2026-10-22","license_spdx":"MIT","org_owned":true,"default_branch":"main","created_at":"2026-08-01T22:44:00Z","open_prs":0,"tree_truncated":false,"test_files":70,"workflows":4,"other_ci":false,"readme_bytes":43285,"docs_files":1,"changelog":true,"license_file":true,"dts_files":0,"first_commit":"2026-08-01","last_commit":"2026-10-22","commits":96,"contributors":3,"ci_status":"success","ci_run_at":"2026-10-22","ci_workflow":"ci","ci_event":"push","readme_path":"README.md","readme_sha":"98630c313613f4452d578e61308e0b141a684ac1","months_since_release":0,"dormant":false,"repo_read":"2026-10-24"},"release_notes":{"license":"MIT","quotable":true,"source":{"kind":"repo","path":"CHANGELOG.md","ref":"main","url":"https://github.com/abap2UI5/mcp-server/blob/main/CHANGELOG.md"},"format":"headings","releases":[{"version":"1.0.0","date":"2026-10-11","date_source":"heading","heading":"1.0.0 - 2026-10-11","url":"https://github.com/abap2UI5/mcp-server/blob/main/CHANGELOG.md#100---2026-10-11","sections":[{"kind":"other","heading":null,"items":17},{"kind":"other","heading":"Since the 1.0.0 section was first written","items":139}],"hash":"6e4813780a5ba68c"},{"version":"0.3.0","date":"2026-09-30","date_source":"heading","heading":"0.3.0 - 2026-09-30","url":"https://github.com/abap2UI5/mcp-server/blob/main/CHANGELOG.md#030---2026-09-30","sections":[{"kind":"other","heading":null,"items":32}],"hash":"30a3786666a83654"},{"version":"0.2.0","date":"2026-09-25","date_source":"heading","heading":"0.2.0 - 2026-09-25","url":"https://github.com/abap2UI5/mcp-server/blob/main/CHANGELOG.md#020---2026-09-25","sections":[{"kind":"other","heading":null,"items":19}],"hash":"4831bb847bf6fa8c"},{"version":"0.1.1","date":"2026-08-31","date_source":"heading","heading":"0.1.1 - 2026-08-31","url":"https://github.com/abap2UI5/mcp-server/blob/main/CHANGELOG.md#011---2026-08-31","sections":[{"kind":"other","heading":null,"items":8}],"hash":"e30cbabfed73dcd6"},{"version":"0.1.0","date":"2026-08-18","date_source":"heading","heading":"0.1.0 - 2026-08-18","url":"https://github.com/abap2UI5/mcp-server/blob/main/CHANGELOG.md#010---2026-08-18","sections":[{"kind":"other","heading":null,"items":16}],"hash":"8ecc783b487bbe0d"}],"versions":[{"version":"1.0.0","date":"2026-10-14"},{"version":"0.3.0","date":"2026-09-30"},{"version":"0.2.0","date":"2026-09-27"},{"version":"0.1.1","date":"2026-08-31"},{"version":"0.1.0","date":"2026-08-18"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:abap2ui5","name":"abap2UI5","json":"/actors/abap2ui5.json"},{"ref":"actor:oblomov-dev","name":"oblomov-dev","json":"/actors/oblomov-dev.json"}],"contributors":[{"ref":"actor:oblomov-dev","name":"oblomov-dev","json":"/actors/oblomov-dev.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"part_of":{"ref":"artifact:abap2ui5-abap2ui5","name":"abap2UI5","json":"/artifacts/abap2ui5-abap2ui5.json"},"parts":[],"add_on_to":{"ref":"artifact:abap2ui5-abap2ui5","name":"abap2UI5","json":"/artifacts/abap2ui5-abap2ui5.json"},"add_ons":[],"answered_through_parts":[]}}